Salesforce DX で Financial Services Cloud (FSC) のスクラッチ組織を作成するには

Salesforce DX での開発に使用するスクラッチ組織は、設定ファイル（project-scratch-def.json）の記述により、機能、設定の異なるさまざまなSalesforceエディションをエミュレートできます。

金融サービス機関や保険会社向けソリューションである、Financial Services Cloud (通称FSC)も、スクラッチ組織に組み込むことが可能です。今回は、Developer Edition のスクラッチ組織にどうFSCを組み込むか？手順を見ていきます。

#### 前提
本手順は、主に以下サイトを参考に試したものです。
https://trailhead.salesforce.com/ja/trailblazer-community/feed/0D54S00000DeKnBSAV
https://salesforce.quip.com/4v7XAigwgeim#HKPAAAj2niQ

※ 手順はこの限りではなく、あくまでも一例になります。将来的にうまく動作せず、追加の手順が必要になること考えられます。また、用途によってはリファレンスにならない可能性もありますが、少しでも開発者の皆さんの参考になれば幸いです。


## FSCスクラッチ組織 作成手順

### Salesforce DX プロジェクト

#### Dev Hub組織の認証
※すでに認証済みの場合は次のステップへ

Deb Hub 組織を認証します。
```shell-session
$ sfdx auth:web:login
```

#### Salesforce DX プロジェクトの作成
Salesforce DX プロジェクトを作成します。
> 例）プロジェクト名: fscDev
```shell-session
$ sfdx force:project:create -n fscDev --template standard
---
target dir = [カレントディレクトリ]
   create fscDev/config/project-scratch-def.json
   create fscDev/README.md
   create fscDev/sfdx-project.json
   create fscDev/.husky/pre-commit
   create fscDev/.vscode/extensions.json
   create fscDev/.vscode/launch.json
   create fscDev/.vscode/settings.json
   create fscDev/force-app/main/default/lwc/.eslintrc.json
   create fscDev/force-app/main/default/aura/.eslintrc.json
   create fscDev/scripts/soql/account.soql
   create fscDev/scripts/apex/hello.apex
   create fscDev/.eslintignore
   create fscDev/.forceignore
   create fscDev/.gitignore
   create fscDev/.prettierignore
   create fscDev/.prettierrc
   create fscDev/jest.config.js
   create fscDev/package.json

```

作成したプロジェクトのディレクトリへ移動します。
```shell-session
$ cd fscDev/
```

### スクラッチ組織

#### スクラッチ組織設定ファイル
スクラッチ組織設定ファイル（config/project-scratch-def.json）を下記に変更します。

```json:config/project-scratch-def.json
{
  "orgName": "FSC Dev",
  "edition": "Developer",
  "features": ["Communities", "EnableSetPasswordInApi","FinancialServicesUser:10","FinancialServicesUser:5", "PersonAccounts", "ContactsToMultipleAccounts", "IndustriesActionPlan", "FinancialServicesCommunityUser:10", "DocumentChecklist", "LightningScheduler", "FlowSites"],
  "settings": {
    "lightningExperienceSettings": {
      "enableS1DesktopEnabled": true
    },
    "mobileSettings": {
      "enableS1EncryptedStoragePref2": false
    },
    "communitiesSettings": {
      "enableNetworksEnabled": true
    }
  },
  "objectSettings": {
    "account": {
       "defaultRecordType": "PersonAccount"
    }
  }
}
```
> - **edition**
>    - Developer、Partner Developer等を用途に応じて指定
> - **features**
>    - FSC用権限セットを付与
>    - FSCコミュニティ用権限セットを付与
>    - アクションプラン用権限セットを付与
>    - Salesforce Sitesでのフロー有効化
>    - 個人取引先を有効化
>    - 取引先責任者-to-複数取引先機能の有効化
>    - Salesforce Schedulerを有効化
>    - Experience Cloud 機能を有効化
> - **objectSettings**
>     - 取引先のデフォルトレコードタイプを個人取引先に設定

という設定が記述されてます。

#### スクラッチ組織作成
作成した設定ファイルを指定する形で、スクラッチ組織を作成します。
> 例）スクラッチ組織名: fscDevScratch
```shell-session
$ sfdx force:org:create -f config/project-scratch-def.json -a fscDevScratch
---
Successfully created scratch org: [組織ID], username: test-XXXXXXXXXXX@example.com.
```

### FSCパッケージのインストール

##### FSC基本パッケージ
FSCで使われるデータモデル・機能等が含まれる管理パッケージをインストールします。

http://industries.force.com/financialservicescloud
```shell-session
$ sfdx force:package:install --package 04t1E00000127We -w 20 -u fscDevScratch
---
Waiting for the package install request to complete. Status = IN_PROGRESS
Waiting for the package install request to complete. Status = IN_PROGRESS
Waiting for the package install request to complete. Status = IN_PROGRESS
Successfully installed package [04t1E00000127We]
```

##### FSC未管理拡張パッケージ
クライアントプロファイル、世帯プロファイルの表示に関する項目セット等が含まれる未管理パッケージをインストールします。

http://industries.force.com/financialservicescloudextension
```shell-session
$ sfdx force:package:install --package 04t1E000001Iql5 -w 20 -u fscDevScratch
---
Waiting for the package install request to complete. Status = IN_PROGRESS
Waiting for the package install request to complete. Status = IN_PROGRESS
Waiting for the package install request to complete. Status = IN_PROGRESS
Successfully installed package [04t1E000001Iql5]
```

##### FSC拡張パッケージ（Flow for FSC）
FSC用のフローが含まれる管理パッケージをインストールします。

https://industries.secure.force.com/financialservicescloudflow
```shell-session
$ sfdx force:package:install --package 04t3i000000jP1g -w 20 -u fscDevScratch
---
Waiting for the package install request to complete. Status = IN_PROGRESS
Waiting for the package install request to complete. Status = IN_PROGRESS
Waiting for the package install request to complete. Status = IN_PROGRESS
Successfully installed package [04t3i000000jP1g]
```

以上で、FSCスクラッチ組織が完成しました。

スクラッチ組織作成の手順は以上になります。


## FSC スクラッチ組織

作成されたSalesforce組織を開いて、見ていきます。

### スクラッチ組織を開く

まずは、作成したスクラッチ組織を開きます。
```shell-session
$ sfdx force:org:open -u fscDevScratch 
```

デフォルトで設定ページが開かれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3112543/ab2d1161-ec4f-0020-9d5b-965d4e0995d8.png)

システム管理者ユーザに、適当な権限セットを割り当てておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3112543/bf7c7955-4e12-bd1d-4836-023e67575d18.png)


アプリケーションランチャーからリテールバンキングを選択して開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3112543/d3b8aa0b-b0f3-819d-0aa1-ea85692af0b3.png)

オブジェクトにはサンプルデータなど一切登録ないので、まっさらな状態の環境が欲しい場合は良いですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3112543/d45dbcae-0caa-f459-272f-b125e804ed0e.png)

金融講座、資産と負債、投資運用ゴールなどのオブジェクトも確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3112543/750af125-7982-99e8-c847-4b9f63be82b0.png)

インタラクション概要や金融取引に関しても、設定ページから設定できそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3112543/c0941328-26b6-0ad8-7290-8d1870001e37.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3112543/ac46e983-d5a5-2a9e-e493-42e0124fc632.png)

FSCはここからの設定作業が肝心ですが、Developer Edition でのFSCスクラッチ組織の作成手順・中身を大まかに見てみました。

## 参考

- 【SalesforceDX】用途別スクラッチ組織作成クイックリファレンスガイド
https://japan-isv.my.site.com/basecamp/s/top-technologies-for-isvs?tabset-1fe47=3

- パートナー様向けFinancial Services Cloudコンテンツ集
https://japan-isv.my.site.com/basecamp/s/financial-services-cloud-contents

- Scratch Org Features
https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_scratch_orgs_def_file_config_values.htm

- How Salesforce Partners Can Get Access to Salesforce Financial Services Cloud Orgs
https://medium.com/inside-the-salesforce-ecosystem/partners-get-access-salesforce-financial-cloud-orgs-47b375a60cd9

- Download the Financial Services Cloud package
https://help.salesforce.com/s/articleView?id=000384864&type=1