Sitecore8用のWeb Forms for Marketers(以下WFFM)ですが、バージョン8.2はSitecore7及びSitecore8.0のWFFMから仕様が変わっているため注意が必要です。
使用するうえでの既知の問題と必要なパッチや設定について記載します。
環境ごとのインストールファイル
WFFMのzipファイルにはCMサーバー用、CDサーバー用、レポーティングサーバー用の3種類が含まれています。
- CMサーバー用(インストーラー形式、通常はこちらを使用します): Web Forms for Marketers 8.2 rev. 161129.zip
- CDサーバー用(ファイルのみ): Web Forms for Marketers CD 8.2 rev. 161129.zip
- レポーティングサーバー用(通常は使用しません): Web Forms for Marketers Reporting 8.2 rev. 161129.zip
インストール後の設定
WFFMのインストール後にSitecoreのフォルダにWebsite\Data\WFFM_Analytics.sqlが作成されるので、このSQLをSitecore_Analyticsデータベースで実行しテーブルを作成する必要があります。
フォームデザイナーでフィールドを追加できない問題
フォームデザイナーでフィールドを追加するためAdd a fieldをクリックすると、「コレクションは読み取り専用です。」とエラーが表示されて追加できません。
公式でパッチ(Sitecore.Support.139810-8.2.1.0.zip)が配布されているのでこちらを適用します。
https://kb.sitecore.net/articles/844911
ログには以下の例外が出力されます。
Exception: System.NotSupportedException
Message: コレクションは読み取り専用です。
Source: System
場所 System.Collections.Specialized.NameValueCollection.Add(String name, String value)
場所 Sitecore.Forms.Shell.UI.Controls.FormBuilder.AddToSetNewField()
場所 Sitecore.Forms.Shell.UI.FormDesigner.AddNewField()
プレゼンテーションの設定
レイアウトを設定する際に、従来のWebFormのレイアウトを使用しているかASP.net MVCのMVC レイアウトを使用しているかで使用するレンダリングが変わります。それぞれFormまたはMvc Formを使用します。
フォームレポート
フォームに登録したデータはフォームレポートでは表示できません。登録した件数などサマリーのみ表示できます。
Excelファイルにエクスポートすることは可能です。
(Excelファイルを開く際に「'export.xls' のファイル形式と拡張子が一致しません。ファイルが破損しているか、安全ではない可能性があります。」と警告が表示されますが、開くことは可能です。)
データベースへの保存
WFFM8でデータベースに保存する場合の仕様が変更になっています。
デフォルトではMongoDBにデータが保存された後にSitecore_Analyticsデータベースの以下のテーブルに保存されます。
Fact_FormEvents, Fact_FormStatisticsByContact, Fact_FormSummary, FormFieldValues
注意する点として、Sitecore_Analyticsデータベースに保存されるのはセッション終了時なので、デフォルトでは30分後になります。
テストする場合はWeb.configのformsタグとsessionStateタグにタイムアウトを短めに設定します。
以下の例ではタイムアウトを2分に設定しています。
<forms name=".ASPXAUTH" cookieless="UseCookies" timeout="2" />
<sessionState mode="InProc" cookieless="false" timeout="2" sessionIDManagerType="Sitecore.SessionManagement.ConditionalSessionIdManager">
従来のSitecore_WebFormsデータベースにはデフォルトでは保存されません。
設定を行うことでSitecore_Wffmデータベース(データベース名が変更されています)に保存することができます。
以下の手順で設定を行います。
-
あらかじめ、WFFMのインストール時に作成されたWebsite\Data\Sitecore_Wffm.mdfをデータベースにアタッチします。
- ConnectionStrings.configに"wffm"という名前でSitecore_Wffmデータベースへの接続設定を追加します。("wfm"ではありません、Sitecore7とは設定が変わっています)
- Website\App_Config\Include\Sitecore.WFFM.Dependencies.configファイルのformsDataProviderタグを修正しcombinedFormsDataProviderを指定します。
Sitecore.WFFM.Dependencies.configファイルを直接修正する代わりに以下のパッチファイルをWebsite\App_Config\Includeに置くことでも設定変更できます。
ZZZ.Sitecore.WFFM.Dependencies2.config.config
古いWFFMの保存アクションを使用すると保存アクションが追加・編集できない問題
古いWFFMのメール送信保存アクションをそのまま使用しようとすると不幸な目にあいます。
WFFM8ではメール送信に使用するSend Email Message保存アクションの設定が変わっており、Sitecore7のWFFMの保存アクションを追加しようとすると「This action cannot be added.」とエラーが表示され追加できません。設定済みの保存アクションは編集ボタンがクリックできません。
また、フォームを登録した際に画面にエラーは表示されないものの、実際にはメールは送信されません。
古い保存アクションを追加しようとした場合、もしくはメール送信時にログには以下のエラーが出力されます。
「Could not find type in ReflectionUtil.CreateObject: Sitecore.Form.Submit.SendMessage」
この場合、保存アクションを一度WFFM8でのもので上書きして設定しなおすか、直接保存アクションのフィールドを修正する必要があります。
WFFM8の保存アクションはFactory Object Nameフィールドが追加され、"/sitecore/wffm/actions/sendMessage"が設定されています。AssemblyとClassフィールドは空欄となっています。
CD/CM環境でSitecore_Wffmデータベースを使用する場合の注意
CDサーバーとCMサーバーが分かれている環境で、使用しているCoreデータベースが異なる場合はフォームに登録したデータがSitecore_Wffmデータベースに保存されません。
CDサーバーではSitecore.Forms.Xtune.CD.config設定ファイルを有効にすることになっていますが、この設定ファイルが有効になるとCDサーバーはSitecore_Wffmデータベースへ保存を行いません。動作としては、CDサーバーはCoreデータベースへイベントを保存し、CMサーバーでイベントを読み取りタスクを動かしてSitecore_Wffmデータベースを更新するため、Coreデータベースを共有する必要があります。
検証環境
- Sitecore 8.2 rev. 161221 (8.2 Update-2)
- Web Forms for Marketers 8.2 rev. 161129
※エントリーの内容・画像等は、公開時点での情報に基づきます。
※Sitecoreのバージョンによって実装されている機能が異なります。