【Salesforce】マスタデータと仮データの自動化

# はじめに
Salesforce Advent Calendar 2023 9日目を担当するyappiです！
少しSalesforceを離れていましたが、ここ最近からまた勉強再開し始めました！！

Salesforceでは、プロセスビルダーやワークフローの廃止が出始め、フローへの移行が推奨されていますね。。とはいえ、仕事でSalesforceチームにいましたが、フローは全く触ったことがなかったので、今回はフローの使い方と、ありそうな業務自動化について記事にまとめようと思います。

https://help.salesforce.com/s/articleView?id=000389396&type=1

# やりたいこと
今回実装するフローは、業務でありそうなマスタデータへの自動反映フローを実装したいと思います。
物にはよりますが、マスタデータと聞くと結構重要なものが多いイメージで、マスタデータとして問題ないか？など確認した上で、反映するみたいなことは少なからずありそうだな・・と思いました。
また、外部から取得したデータをそのままマスタデータに取り込むと重複や不備があるかもしれない、、そのため一旦仮データとして保持して選別して、マスタに反映するなど、、
上記の観点から、こういう自動化やってみようと思い、実装してみました！

# 実装内容

今回実装・設定するのは以下になります！
- カスタムオブジェクト2つ
- フロー

 カスタムオブジェクトは下記の2つを作成してます！
 
 ![スクリーンショット 2023-12-09 11.14.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/6daf8286-dace-afe9-5239-498aa334d521.png)


 オブジェクト内の項目はそれぞれ以下のように設定しています
 ## 商品マスタ
![スクリーンショット 2023-12-09 11.16.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/d215edc8-03b6-62c3-fa2d-499ea291b2d3.png)

項目は標準項目に加えて、 `商品名`・`種類`・`金額`があり、`商品マスタ【仮】Id`という項目があり、`商品マスタ【仮】Id`はマスタデータの元データとなる仮データを特定できるように設定します

## 商品マスタ【仮】
![スクリーンショット 2023-12-09 11.18.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/899df9aa-7282-17bd-09fd-b728264856bf.png)

仮のデータも同じように、`商品名`・`種別`・`金額`があり、このデータを使って作成されたマスタデータを特定する`マスタId`を持っています
そして、このオブジェクトだけ、`マスタ反映フラグ`を設定しており、このフラグが`true`の場合、マスタデータを作成するといったフローを作成していきます

これで、オブジェクトの設定は完了です！

# Salesforceフローの実装概要
次は、実際にフローの実装をして自動化の流れを作っていきます

今回自動化では下記を意識してフローを実装していきます！
1. どういったタイミング、条件でマスタデータを作成するか？
2. 後々に仮データとマスタデータの整合性が調べられるように紐付けのIdがわかること

まず、タイミングと条件ですが、基本、仮データの作成・更新のタイミングで実行しようと思います。また、条件は、項目部分で紹介しましたが、`マスタ反映フラグ`が`true`の時に実行できるように制御します。

# フローの実装

実装については、以下の手順でフローを作成していきます。

下記画面のようにホームから'フロー'と検索し選択 > [新規フロー]ボタンを押下
![スクリーンショット 2023-12-09 11.32.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/6c369388-b378-517e-729f-c971eb879591.png)

[レコードトリガーフロー]を選択 > [作成]ボタンを押下
![スクリーンショット 2023-12-09 11.34.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/4bfccf5e-c179-0517-c193-c1f1e1c00b63.png)

以下の内容でフローの入力 > [保存]ボタンを押下
![スクリーンショット 2023-12-09 11.37.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/046ac53c-c771-d78d-84e5-0b081df2ac19.png)

各種簡単に説明すると、、
- オブジェクトを選択 ... データの作成・更新対象のオブジェクトを選択
- トリガ-を設定 ... フローを起動するタイミング
- エントリ条件を設定 ... フローを起動する条件
- 更新されたレコードでフローを実行するタイミング ... 一致するたびか一致する時のみなのか違い
- フローを最適化 ... レコード更新前に動くか更新後かの違いだと思います。

今回の条件に合わせると、`商品マスタ【仮】`のレコードが作成・更新された時に、`マスタ反映フラグ`が`true`の時にのみ動作するという起動条件です。（下2つの項目はなんとなくで選択してます・・・w）

次は、実際の処理内容の実装です

再生マークの下の[+]マークを押下して次の処理を作成します
フローが起動したら、マスタデータを作成するため、[レコードを作成]を選択
![スクリーンショット 2023-12-09 11.54.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/8ffe0b67-ec06-fde9-106b-fdd7a74fd2ac.png)

以下のような内容で入力
![スクリーンショット 2023-12-09 11.59.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/6b87f8b7-2830-5fcc-bb3e-61f562ac66ff.png)

今回は、`商品マスタ`オブジェクトにレコードを1件登録します。また、各項目は仮データの項目値を転記するような設定をします。

次は、仮データと紐付けをするマスタデータIdに値を入れたいので、作成したマスタデータを取得します。
![スクリーンショット 2023-12-09 12.30.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/cfbef33f-55b6-a69e-8ec7-87cf5c732bc9.png)

取得ができたら、`商品マスタ【仮】`のデータにもマスタデータのIdをもたせる処理です。
![スクリーンショット 2023-12-09 12.27.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/69c4262c-bf1b-31ce-e838-bce0d1444da9.png)

これは、フローをトリガーした`商品マスタ【仮】`のため、マスタデータを作成した元の仮データとなります。
このレコードに対して、`RegisterMasterDataの商品マスタId`とあるので、登録された時にわりあてられるカスタムオブジェクトIdが仮データにも登録されレコードを更新します。

これでフローの実装は完了です。実際に[有効化]をして動作確認してみましょう。
フローの一覧画面に戻ると画像1番下に追加されていることがわかります。
![スクリーンショット 2023-12-09 12.09.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/47653f99-b172-91e2-1051-3a4d5c3266d7.png)

# 動作確認
`商品マスタ【仮】`のレコードを作成してみましょう！

商品マスタにはまだ何も登録されていません
![スクリーンショット 2023-12-09 12.18.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/10fbb558-a2a3-199c-22d8-99b96766b416.png)

新規登録画面から、必要な項目を入力します！この時、フラグはまだ`false`のままにして登録し、マスタに反映されないことを確認します！
![スクリーンショット 2023-12-09 12.18.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/ab76611d-6a18-a48c-cca2-47d43fa4c72a.png)

登録されていませんでした！画面から確認してみてください
次は、フラグを`true`に更新してみましょう！
![スクリーンショット 2023-12-09 12.20.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/605e8dd7-0d17-12ab-1516-311f61fed72c.png)

仮データのマスタId項目にIdが入力されていることが確認できます！
![スクリーンショット 2023-12-09 12.35.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/3274eb4b-50ca-1628-ee7b-34bc5754d780.png)

ではマスタデータが本当に作成されているかを確認しましょう！
![スクリーンショット 2023-12-09 12.36.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/746815/570d1a53-8023-bc96-47c9-21bacebed0af.png)

マスタデータも作成されており、`商品マスタ【仮】Id`項目にIdが入っていることが確認できます！
SalesforceのカスタムオブジェクトIdは、Salesforceのリンクから確認できるので、相互に一致しているか確認してみてください！

これで自動化フローの実装は完了です！

# 終わりに
今回は、Salesforceフローについて記事をまとめてみました！毎年定期的にアップデートがあるSalesforceはキャッチアップがすごく難しい気がしていて、久しぶりに開いたらプロセスビルダー廃止・ワークフロー廃止などなど驚きましたが、フローで全て管理できるのはいいことですね。
今後も幅広く技術をキャッチアップしていきたいと思います！

それでは良いエンジニアライフを・・・！