[SFDC vs D365]ワークフローによる項目の採番を作成する

Dynamicsの試用期間も迫って、だいぶ焦っております( ; ; )
やりたいこと全部やり切れるか微妙ですが、今回は作りが複雑なワークフローがテーマです。

スポンサーリンク

ワークフローで選手IDを採番

今回は所属選手(Contact)の選手IDを規則性に則って採番してみます。

規則性があるならば、数式項目/計算フィールドでもいいかもしれませんが、インポートするときのキーとしても使用するため、数式項目として使用できません。
そのため、ワークフローで採番します。

両システムでワークフローを作成する

ワークフローの作成

では、両者のワークフロー作成方法から。

Salesforceのワークフローの作成

[設定]→[ビルド]→[作成]→[ワークフローと承認申請]→[ワークフロールール]から。
[設定]→[ビルド]→[作成]→[ワークフローと承認申請]→[ワークフロールール]

[新規ルール]を選択。
ワークフロールールの新規ルールから作成

オブジェクトには所属選手である「取引先責任者」を選択。
ワークフローの対象となるオブジェクトを指定

ルール名は任意名でOK、評価条件には「作成されたとき」を選択。
ルール名と適用タイミングを選択

ルール条件に無条件で採番するため、数式にtrueを入力しましょう。
ルール条件の設定、常に起動なのでここはTrueでよい

ルール適用時のアクションには「新規項目自動更新」を選択。
ワークフローアクションから新規項目自動更新

項目自動更新の名前をつけます。
任意名でOKです。
更新する項目には「選手ID」を選択します。
項目自動更新で更新する項目を選択

新規項目値の指定で、採番ルールを数式で入れます。
今回は「名前+生年月日(YYYYMMDD)」を採番ルールとするため、以下のような数式を入力します。
採番ルールを数式で定義

LastName & FirstName & SUBSTITUTE(TEXT(Birthdate), "-", "")

簡単に、数式の説明をすると、Text(x)はテキスト型以外のデータ型xに対してテキスト化し、SUBSTITUTE(x,y,z)はテキストxに対し、yの文字列をzの文字列に置換する関数です。
日付を文字列化しようとすると、「YYYY-MM-DD」形式になるため、SUBSTITUTE関数で「-」を除いています。
文字列の結合は&を入力します。Excelチックに書けますね。

項目自動更新まで作成したら、最後にワークフローを有効化して完了です。
ワークフローは必ず有効化すること

実際にテストしてみると、ちゃんと採番されています(新規作成時のみ)。
ワークフロー動作の確認

少し手順を踏みますが、ノンコーディングで採番することが可能です。

Dynamicsのワークフローの作成

続いてDynamics側。
こちらも、ワークフローと呼ばれます。
基本的な使い方はSalesforceと一緒です。

まずは、所属選手エンティティに選手IDフィールドを作成。
採番項目となる選手IDの項目定義

こちらは、ソリューションから作成します。
[プロセス]から[新規]を選択。
ソリューションのプロセスから新規を選択

プロセス情報にはこのように入力。
プロセス名は任意名で構いません。
作成対象はワークフローに設定する

次はワークフローの設定でスコープを「組織全体」に選択します。
これは、誰がトリガを起こしたかによって、起動条件を変更することができますが、今回は組織全員に関わる項目となるため、ユーザ関係なく「組織全体」を選択します。
その後に、中身の設定に入るため、[ステップの追加]を選択します。
スコープを組織全体としてステップを追加

ステップの追加の中で[レコードの更新]を選択。
ステップの追加からレコードの更新を選択

続いて、レコードの更新設定から、「所属選手」エンティティを追加したのち、[プロパティの設定]を選択します。
プロパティの設定から採番ルールを定義

フィールド内容が表示されますので、選手IDに採番ルールを入れます。
選手IDを選択した状態で、右側のフォームアシスタントから、指名と生年月日を選択→追加→OKという手順で、項目を反映します。
一度に2項目を設定するのではなく、氏名と生年月日でそれぞれで追加をかけるようにしてください(画面のように設定されていること)。
選手IDに対して採番ルールを設定する

これで、採番ルールの設定は完了。
Salesforceのように数式指定でないため、細かい設定はできないものと思ってください。
Salesforceでやったように、ハイフンを除去するとか置換するなどのレベルの編集は残念ながら対応していません。
項目値のコピーと結合程度の更新くらいしかできません。
より高度な採番を必要とする場合は、プラグインを使用してプログラム対応が必要となります。

最後にワークフローを保存して、リアルタイム化とアクティブ化を忘れないように。
更新タイミングはデフォルトでは、オフ(バックグラウンド実行)となっていますが、よほど重たい処理でなければ、すぐに更新が反映されるリアルタイム化としておきましょう。
ワークフローはアクティブ化して同期実行するようにする

また、ワークフローの変更は、非アクティブでないとできないため、変更する場合は、一度起動中のワークフローを止めてから更新します。

実際にアクティブ化してテストすると、
ワークフローの実施前の状態

完璧です!
ワークフローの実施結果

まとめ

  • ワークフローは両システムに備わっており、基本的な使い方は一緒
  • 数式の柔軟性により、Salesforceの方が細かい設定ができる
  • Dynamicsでの高度な採番にはワークフローでは対応しきれないため、プラグインを要する
  • Dynamicsはタイミングやスコープの指定が可能(Salesforceはリアルタイムの組織全体が対象)
  • レコードの作成はDynamicsのみできる、Salesforceはトリガやプロセスビルダーなどの対応が必要

コメント