【第2回】ワークフロー・プロセスビルダーからSalesforceフローへの移行の心得とは?

【第2回】ワークフロー・プロセスビルダーからSalesforceフローへの移行の心得とは?

Salesforce の導入利点として、年に3回行われるメジャーリリースがあげられます。それにより、Salesforce のサービスがアップグレードし、更に拡張された機能が利用できるようになります。一方で、利用できなくなる機能もあり、今回は廃止予定の「ワークフロー」と「プロセスビルダー」を「フロー」化対応した際の心得についてお話します。


通常、何か新しいソフトウェアを開発する際、「プログラミング言語」を用いて「ルール」を守りながら「命令・実行文」を作成します。その中で、ノーコード・ローコード開発とは、その名の通り「コーディング」をする必要がない/少なくて済むことを意味します。そのため、「ロジック(コンピュータに処理をさせる順序や方法)」を設定する必要はありますが、プログラミング言語を学んだ経験のないユーザーでも、ソフトウェアを開発することができます。

※今回の記事はSalesforceに関する第2回目の記事です。前回の記事もぜひ参照してみてください。

Salesforceにおけるノーコード・ローコード開発とは

2022年7月現在、Salesforce で実装できるノーコード・ローコード開発は以下【表1】になります。
今まで下記3つの何れかを利用し自動化を実現することができましたが、そのうち1つがWinter'23(2022年10月)、もう1つがSummer'23 リリース以降「新規作成」ができなくなります。

【表1】Salesforce で実装できるノーコード・ローコード開発
種類 機能概要 実現できること 難度 廃止時期 廃止後の
モジュール

ワークフロー
レコードの内容が条件に合致した際に、自動的にアクションを起こすことができる機能

例)契約終了の 20 日前にアラームをメールで送信
簡易なロジックのみ実現可能(単一のif/then ステートメント) Winter’23

本番環境は
2022年10月

Sandbox環境は
2022年8月
・新規作成不可

変更不可 →変更可。不可になる予定は2022年8月時点でなし


・既存モジュールの継続利用可能

プロセスビルダー
ToDo作成、メール送信、レコード作成・更新、電子レコードの一括更新等を自動的に実行できる機能

例)商談成立時に契約種別に沿った契約レコードを自動作成
多少複雑なロジックも実現可能(複数の if/then ステートメント) 普通 Spring’23
Summer’23


本番環境は
2023年2月

Sandbox環境は
2022年12月

フロー
プロセスビルダーや承認プロセスでは実装できない複雑な処理を自動的に実行できる機能 複雑なロジックも実現可能(①②全て包含)


(予定無し)

※スケジュールは予告なく変更される場合があります。

①→③に進むに連れて「実現できること」も「実装難度」も高まっていくとお考えください。
つまり、プログラミング経験がなくてもカスタマイズしやすかった①,②が廃止になり、よりアルゴリズムの理解が必要な③を利用しなければ、新規のカスタマイズができなくなります。

既に実装済の①,②で「新規作成」ができなくても「既存モジュールは継続利用可能」であれば、「実装済の①,②を残し今後のことだけを考えればよい、どうにかなる」と思われる方もいらっしゃるかもしれません。しかし、現場の要望により、項目やロジックを追加したいケースが発生することは容易に想像がつきますよね?

弊社では、①,②,③を組み合わせて自動化を実現していましたが、①,②,③のそれぞれが干渉しあう事象も発生し、拡張性に限界を感じていました。そのため廃止の発表を受け、いち早く2021年末から①,②の③への「フロー化」対応を開始し、主要な機能について改修を終えました。

今回は、そのように紆余曲折しながら手に入れたノウハウである「完全フロー化の心得」を4つご紹介します。

完全フロー化の心得

1. レコードトリガーフローの「保存前更新」と「保存後更新」を使い分け

初めに「レコード」について簡単に説明します。Salesforceの「オブジェクト」はデータを格納する「箱」であると、前回の記事で説明しました。一方で「レコード」はその「オブジェクト」に登録された具体的な情報のことを指します。例えば、「取引先オブジェクト」に「取引先A」「取引先B」の2件のレコードがあるといった表現ができます。

今回紹介するレコードトリガーフローとは、レコードを作成、更新、削除された時に起動するフローのことを指します。レコードトリガーフローは、「保存前処理」と「保存後処理」のいずれかを選ぶことができます。どちらが適しているかよく考えた上で、フロー化対応を行ないましょう。

・保存前更新

「レコードの作成または更新」により自動起動フローをトリガし、追加の更新をレコードに加えてからレコードをデータベースに保存します。各種処理をスキップすることにより、レコード変更プロセスよりも 10 倍速く Salesforce レコードを更新することができます。ただし、利用できる機能は制限されており、フローを起動するレコード更新以外のアクションを実行することはできません。

・保存後更新

「レコード保存後」に他のレコードにアクセスしたり、アクションを実行、サブフローを起動することができます。また、プロセスビルダーで作成したワークフロールールや、レコード変更プロセスの大部分を置き換えたり、ループを実行することができます。

【表2】で「保存前処理」と「保存後処理」の差異をまとめました。
背景色が黄色の部分に関しては、「保存前処理」と「保存後処理」で差異がある要素を指しています。

【表2】「保存前処理」と「保存後処理」の比較

(※記号:〇:可能、△:一部可能、×:不可(実行されない))

フロー要素 保存前処理
(高速項目変更)
保存後処理
(アクションと関連レコード)
データ レコードを取得
レコードを作成 ×
自・他オブジェクトのレコード作成可
レコードを更新
フローをトリガしたレコードのみ可、上記以外へのレコード更新不可

自・他オブジェクトのレコード更新可
レコードを削除 ×
自・他オブジェクトのレコード削除可
相互関係 アクション ×
サブフロー ×
ロジック 割り当て
決定
ループ
コレクション並び替え
コレクション検索条件
保存前処理 保存後処理
最終更新日項目や新規で採番しているレコードの ID など、レコードの保存後に設定される項目値へのアクセス(※1) ×
処理時間 レコード変更プロセスよりも10倍速い
 割り当てルール ×
 自動レスポンスルール ×
 ワークフロールール ×
 他のカスタマイズの再実行 ×
プロセスビルダーに存在したレコードの再評価 × ×
レコードトリガフローを有効化 「すべてのデータの参照」権限が必要

・フローへ移行時の補足事項

1)「フローに移行ツール」の利用について
Spring'22(2022年2月)でリリースされた「フローに移行ツール」を利用して、当該オブジェクトの項目の更新のみを行なっている「ワークフロー」を変換した場合は、自動で「保存前更新」フローに変換されます。

本ツールで大抵の「ワークフロールール」を「フロー」に一括変換できますが、一部対応していないものもありますのでご注意ください。
※2022年7月現在、ワークフロー条件がグローバル変数及びレコードタイプを利用しているものや、ToDoを作成、所有者項目の更新、クロスオブジェクト更新には未対応です。詳細は下記Helpサイトをご参照ください。

また「プロセルビルダー」移行ツールは、Winter'23(2022年10月)案内予定とのことです。待ち遠しいですね。

「プロセルビルダー」移行ツールは、Spring'23(2023年2月)にリリースされました。ワークフロールール同様、一部対応していないものもありますのでご注意ください。
※2023年2月現在、移行サポートされているアクションはレコードの更新、レコード作成、フローの呼び出し、Apexの呼び出し、メールアラートになります。

2)最終更新日項目や新規で採番しているレコードの ID など、
 レコードの保存後に設定される項目値へのアクセス(※1)の具体例

・保存前更新:商談コピー時に、商談の項目を初期化したい場合
・保存後更新:請求番号を「年月-連番(自動採番)」の形式に変更したい場合

3)レコードトリガーフローで利用できる、便利なグローバル変数
 $Record(レコード更新直後の値)と $Record__Prior(レコード更新直前の値) について

・「保存前処理」フロー後に「保存後処理」フローが実行される場合、
 「保存前処理」フローで更新された値は 「保存後処理」フローの$Recordに反映されます。
・「保存後処理」フロー内で同じオブジェクトに対して複数回更新を行うと$Recordの値は変わります。
・「保存後処理」フロー内で同じオブジェクトに対して複数回更新を行っても$Record__Priorの値は
  変わりません。

各処理で$Recordと$Record__Priorのどちらを利用すればよいかご理解いただけるのではないでしょうか?

2. フロートリガエクスプローラを利用してレコードトリガーフローの順番を指定

Spring'22(2022年2月)のバージョンアップで「レコードトリガーフローの実行順序」を定義できるようになりました。実行順序を決定することで、過度に複雑なフローを作成せず一貫性の高い結果を得ることができ、処理を分割することができます。また、プロセスビルダーのように「レコードを再評価」することはなく、処理は1回となります。

注意点としては下記2点があげられます。
①実行順序のルールは下記【表3】になります。1,000 番以前と以降で処理が変わります。
②フローの順序を有効・無効化または変更すると、他のフローの順序が自動的に更新される可能性があります。

SalesforceのHelpサイトでは多数のフローを並び替える場合、10、20、30のようにトリガ順序値を均等に分けることをお勧めしています。後で別のフローをその間 (10 と 20 の間など) に簡単に差し込むことができ、この方法を使用すれば、既存のフローのトリガ順序値を変更せずに済みます。

【表3】実行順序
トリガ順序値 実行内容
①1~1,000のトリガ順序値が指定されている場合 トリガ順序に指定された順に実行
②1~1,000で、同じトリガ順序値の複数のフロー フローの API 参照名に基づいてアルファベット順に実行
③トリガ順序値のないフロー 作成日順に実行
④1,001~2,000のトリガ順序値が設定されているフロー トリガ順序に指定された順に実行
⑤1,001~2,000で、同じトリガ順序値の複数のフロー フローの API 参照名に基づいてアルファベット順に実行

【表4】並びに続く【図1】~【図3】は実行順序を指定可能な導線を表しています。

【図1】①フロー一覧、【図2】②オブジェクトマネージャからアクセスすると、
ドラッグ&ドロップで処理順序を一括で変更することができるので設定しやすいです。

【表4】実行順序を設定可能なSalesforceの導線
導線 指定方法
①フロー一覧 設定>フロー 【図1】フロー一覧表示画面から、フロートリガエクスプローラを立ち上げて、順序を編集(一括変更可)
②オブジェクトマネージャ 設定>オブジェクトマネージャ>オブジェクトを選択 【図2】オブジェクトを指定後、左メニューのフロートリガを選択し フロートリガエクスプローラを立ち上げ順序を編集(一括変更可)
③フロー 設定>フロー>フローを選択 【図3】フロー保存時にフローのバージョンのプロパティ上で「詳細」表示し、トリガ順序値を個別に指定

※弊社で実装していた時にはこの機能がリリースされていなかった為、実際には利用しておりませんが、実行順序を指定できるのはありがたいですよね。今後活用します。

その為、次の3.データ更新の回数に特に配慮して実装を進めました。

3. データ更新の回数を極力少なく

同じオブジェクトに対して「ワークフロー」や「プロセスビルダー」で更新を行い、自動化を実現していたケースもあるかと思います。それぞれ一つずつ「フロー化」するだけであれば比較的容易ですが、処理内容によっては「ガバナ制限」に達し、処理を完了することができないケースも発生します。そのため、分岐や割り当て、変数(数式)を活用し、できる限り複数の「ワークフロー」「プロセスビルダー」を一つの更新処理にまとめることをお勧めします。

商談オブジェクトへの更新事例を【図4】~【図6】を用いて紹介します。

・商談オブジェクトへの更新事例

【図4】商談フロー(保存後更新)

1)複数のワークフローやプロセスビルダーで実行していた処理をまとめる
【図4】赤枠 ①のように、新規・更新・フェーズが契約合意になった場合に、それぞれ項目の割り当てを行い、商談へのレコード更新処理を「1回」に留めています。それぞれ「レコード更新」要素を用いて実装すると、それだけでSQLを「3回」発行することになり、前述したフローへ移行時の補足事項の通り、 {$Record}の値も変わっていきデバッグしづらくなります。更新回数を少なくすることでどの割り当て処理で躓いているのかも把握しやすくなりお勧めします。

【図5】数式を編集

2)決定を活用して処理を分岐させつつ、レコード更新回数を1回に
また、新しい価格表を7月から有効とし、過去の価格表を指定した商談商品の新規作成を停止したい場合は、
入力規則で「商談の作成日付が7月以降、かつ、過去の価格表での商談商品作成はエラー」としつつ、
商談コピー時の配慮として、【図4】赤枠 ①「新規?」の分岐でTrueとなった場合に、割り当て「新規項目セット」処理を通るようにしました。
割り当て「新規項目セット」の中で【図5】数式を編集の変数を用いて、過去の価格表IDであれば価格表IDをNullに更新し、商談商品を削除するするようにしました。(Salesforceの標準機能として、価格表IDがNullになると商談商品が自動で削除されますので、そちらを活用しています。)
このように「決定」でおおまかな処理を分割し、内容を把握できるようにしつつ、該当した場合のみ「レコードを更新」を通るようにしています。

【図6】

3)レコードトリガーフロー内で「新規か更新か」の判断
【図4】赤枠 ①「新規?」の決定要素で切り分けている「新規か更新か」といった条件は、
【図6】のようにグローバル変数の{$Record__Prior.Id} を利用し、Null Trueであれば新規、Null Falseであれば更新として判断することができます。

4. サブフローを活用し、どのような処理を行っているか視認しやすい実装に

1つのフローで全てを展開しようとすると、1画面に収まらずソースコードが解読しづらくなります。そのため、当該オブジェクトへの更新はフロー内、別オブジェクトへの更新はサブフローへと使い分けることで1つのフローをシンプルにしました。また、サブフローの利点として、複数のフローから呼び出すことができることもあげられます。事例の【図4】青枠 ②~④が該当し、商談以外のオブジェクトへの更新処理はすべてサブフローとしています。

1)サブフローでの連続処理の注意点
今までの自動化ツールですと「ワークフロー→プロセスビルダー→フロー」順に処理されて、気にかける必要がなかったのですが、サブフローを活用し1つのフローにまとめたことで、処理スピードが追いつかないという現象も発生しました。つまり、【図4】③の処理後に【図4】④の処理を起動し、③の処理で更新した値を④で使用する想定でしたが、まだ値が更新されていない状態で④が起動されてしまったのです。上記は④以降のフロー内で「レコード更新から1分経過後」に本処理を開始することで回避しました。

5.参考サイト

Helpサイト|フローへの移行のベストプラクティス

https://help.salesforce.com/s/articleView?id=sf.flow_migrate_to_flow_best_practices.htm&type=5

Salesforce社のHelpサイトが拡充されたため、参考までに追加しました。(2023/2/21)

Helpサイト|フローへの移行

https://help.salesforce.com/s/articleView?id=sf.flow_migrate_to_flow.htm&type=5

Salesforce社のHelpサイトが拡充されたため、参考までに追加しました。(2023/2/21)

最後に

弊社では対応時期が早かったため「移行サポートツールがない」「フローの順序指定機能がない」状態で「フロー化」を開始しました。結果、新規開発を行ないやすくなりましたが、何度も躓きましたし、リリースニュースを見る度に少し早まったか?と感じることもありました。そのような中、Salesforceのサポートの方やユーザコミュニティ上で質問させていただいた方へ、この場を借りて感謝の意を申し上げます。

本記事を通して、皆様の課題解決の足がかりとなりましたら幸いです。

更新履歴

※2022年8月3日、2022年12月21日、2023年2月21日
 Salesforceのリリーススケジュール変更に伴い、【表1】Salesforce で実装できるノーコード・ローコード開発の情報を更新しました。

※2023年2月21日
 Salesforceのリリースに伴いフローへ移行時の補足事項を編集、Helpサイトの拡充に伴い 5.参考サイトを追加しました。

※本記事は、執筆当時の製品リリース情報を元に作成しています。
 製品・機能の追加、更新により情報が古いままになっている可能性もありますので、必ず最新情報をご確認ください。

当メディア「マナミナ」を運営する株式会社ヴァリューズでは自社データの分析・活用支援も行っております。興味をお持ちの方はぜひ下記よりお問い合わせください。

この記事のライター

大手独立系SIer、ITベンチャー企業、大手マーケティングリサーチ企業での職務を経て、2015年に株式会社ヴァリューズへ中途入社。2021年からSalesforceの業務支援に携わるようになり現在に至る。趣味は旅行、散歩。

関連する投稿


【第4回】Salesforce と DocuSign を連携するには?

【第4回】Salesforce と DocuSign を連携するには?

DX化の一端として、電子署名ツールの導入を検討されていますか?当メディアを運営している株式会社ヴァリューズでは数ある電子署名ツールの中から DocuSign 社が提供しているサービスを導入しました。それにより、契約業務のプロセスをペーパレス/自動化し、数日~数週間かかっていた契約書の署名捺印を数十分~数時間で完了できるようになりました。郵送コストの削減、締結した契約書もサーバーに自動保存され、改ざん・証拠力の担保、などの恩恵に預かっています。 今回は標準機能のみで Salesforce × DocuSign 連携を行った弊社の事例をご紹介します。※DocuSign社の「導入後コンサルとしてのサポートプラン」は契約しておりません。


【第3回】SalesforceとSlackを連携するには? ~ Summer '22 対応版

【第3回】SalesforceとSlackを連携するには? ~ Summer '22 対応版

2021年12月に Salesforce社とSlack社が合併し、Salesforce と Slack サービスを連携する方法も形を変えて進化しています。それに伴い、数ある連携アプリの内どのアプリを活用すればよいのか戸惑っている方はいらっしゃいませんか? 新しい Salesforce × Slack 連携ツールの紹介記事も少ない中、今回は 標準機能のみで Salesforce × Slack 連携アプリを導入する方向けに、各アプリの違いをご紹介します。


【第1回】Salesforceの標準オブジェクトとは?初心者向けの解説まとめ

【第1回】Salesforceの標準オブジェクトとは?初心者向けの解説まとめ

Salesforceを活用するうえで、重要な概念が「​オブジェクト」です。 本記事では、Salesforceの主要な標準オブジェクトについて、初心者の方向けにご紹介します。


最新の投稿


日本テレビ、AR撮影装置を活用した「没入体験型CM」の実証実験を開始 GW期間内に大型ショッピングモール内にて

日本テレビ、AR撮影装置を活用した「没入体験型CM」の実証実験を開始 GW期間内に大型ショッピングモール内にて

日本テレビ放送網株式会社は、日本テレビが事業展開する XR分野のコンテンツ制作および開発支援サービス『日テレXR』において、新たな広告没入体験ができるサービスの実証実験を開始しました。


ギブリー、生成AIがマーケティング業務を支援するサービス「マーケGAI」の提供を開始

ギブリー、生成AIがマーケティング業務を支援するサービス「マーケGAI」の提供を開始

株式会社ギブリーは、生成AI技術を活用してマーケティング業務を自動化・効率化するAIマーケティング支援ツール「マーケGAI」の提供を開始したことを発表しました。


「○○とは」検索に見るトレンドや生活者の気になりごとは?「インボイス」「NISA」「猫ミーム」など

「○○とは」検索に見るトレンドや生活者の気になりごとは?「インボイス」「NISA」「猫ミーム」など

検索エンジンで調べ物をするときによく使われる「〇〇とは」検索。今回は、直近1年間で検索数が多かった注目ワードや、時期によって急上昇したトレンドワードをご紹介します。「とは」検索から見えてくる最新の流行りやみんなの関心事を読み解いていきます。


GWに10連休を取得する人は約2割!連休の予定はインバウンドの影響か「国内旅行」が下降し「家事」が上昇【mitoriz調査】

GWに10連休を取得する人は約2割!連休の予定はインバウンドの影響か「国内旅行」が下降し「家事」が上昇【mitoriz調査】

株式会社mitorizは、消費者購買行動データサービス「Point of Buy®」の会員に対し「大型連休に関する調査」を実施し、結果を公開しました。


Supportive fans are willing to spend money? “Oshikatsu” insights & applying it to marketing strategy

Supportive fans are willing to spend money? “Oshikatsu” insights & applying it to marketing strategy

“Oshikatsu” stimulates consumption in Japan. In fact, more than 80-90% of teens answered that they have an “Oshi.” We will deepen our understanding by investigating the current state of the “Oshikatsu” market, behaviors like time and money spent on “Oshikatsu,” and its connection with collaborations, etc. in marketing.


競合も、業界も、トレンドもわかる、マーケターのためのリサーチエンジン Dockpit 無料登録はこちら

アクセスランキング


>>総合人気ランキング

ページトップへ