tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:組織シェイプに基づいたスクラッチ組織の作成を試してみました

DevHub組織、スクラッチ組織作成、sf コマンドと勉強したので組織シェイプについてもやり方勉強しました。少し前に設定ページで有効化までは試していたのですが、有効化してスクラッチ組織を作成すればOKというわけでは無いことをようやく理解したところ。

組織シェイプに基づいたスクラッチ組織の作成

最初の設定

一番最初にやるべき作業としてはDev Hub組織の有効化から。設定ページから実施できます。


次に組織シェイプの有効化。これも設定ページから実施できます。

権限について

今回の動作確認環境のDeveloper Edtionでは自分はシステム管理者ユーザなので特に気にすることはないですが、権限セットで細かい権限割り当てが可能となっています。

https://developer.salesforce.com/docs/atlas.ja-jp.sfdx_dev.meta/sfdx_dev/sfdx_dev_shape_permissions.htm


と書いてありましたが、権限セットで検索したところ見当たりませんでした。スクラッチ組織関係はあった。名前変わったとかかも。

組織シェイプの作成および管理

こちらの手順で実施。

https://developer.salesforce.com/docs/atlas.ja-jp.sfdx_dev.meta/sfdx_dev/sfdx_dev_shape_create_shape.htm

① Dev Hub 組織とソース組織の両方を認証

各組織で次のコマンドを実行。

sfdx auth:web:login -a <alias>

実行するとSalesforceログインページが表示されてユーザIDとパスワードで認証する流れでした。Warningの方は新しいコマンド用意されているって感じかな。


コマンドの実行結果的に『sf org login』で接続した状態になっていれば問題なさそう。(スクラッチ組織の方は今回は関係無し。)


②ソース組織の組織シェイプを作成

このコマンドによって、組織シェイプを作成する非同期プロセスが開始されます。ということでこれで組織シェイプの設定情報が用意される感じ。(スクラッチ組織作成は別。)

sfdx force:org:shape:create -u <source org username/alias>

Warningってなっているのは最新版のコマンドっぽい。

③shape:create コマンドの状況を確認
sfdx force:org:shape:list


ちゃんとできてた。状況が Active になったら組織シェイプを使用できるとのこと。


組織シェイプのスクラッチ組織定義

組織シェイプの設定準備ができたので、組織シェイプが適用されるスクラッチ組織を作成できます。スクラッチ組織作成時にエディションやその他設定を適用できるとのこと。

https://developer.salesforce.com/docs/atlas.ja-jp.sfdx_dev.meta/sfdx_dev/sfdx_dev_shape_scratch_def.htm


config/project-scratch-def.jsonが設定ファイルです。組織IDは15桁で指定します。


"sourceOrg"を設定に追加するのが組織シェイプの適用の条件のようです。

スクラッチ組織の作成

通常のスクラッチ組織の作成コマンドで良いようです。今回はヘルプのとおりに実行。実際は sf コマンドに移行して良さそう。

sfdx force:org:create -f project-scratch-def.json -a MyScratchOrg --setdefaultusername

と思ったら、もう古いバージョンのコマンドなのでダメですっと出ました。


Warning: The force:org:create command is deprecated. Try "org create scratch" or "org create sandbox" instead.


これで良さそう。

sf org create scratch -d -f config/project-scratch-def.json -a sfdc-my-playground-orgshape


ひとつミス。エラーになりました。『"edition": "Developer",』のように宣言しているところを削除して解決します。

Error (1): 組織の図形をコピーするときに、エディションは指定できません。


改めて実行。なぜかタイムアウトエラーに。。

The scratch org did not complete within your wait time

ちょっと検索していたところ、赤枠部分の設定情報を残しているのが原因だったっぽい。(組織からコピーするので宣言しちゃいけいなかった。)


上の赤枠部分を削除してこれで動くかなと思ったのですが、こういうエラーも発生。試行錯誤しすぎてもダメだった。(せっかくなので記載しておく。)

Error (1): この組織は有効なスクラッチ組織の制限に達したため、サインアップ要求に失敗しました


『sf org list』とか『sfdx force:org:shape:list』とかで確認したところ、組織自体は表示されていなかったので裏側で作成完了していたわけではないようです。


どうすればいいかなと調べたところアプリケーションランチャーの『有効なスクラッチ組織』で関連する組織が確認できました。ここから削除を実施。


これで解決するかなと思ったのですが、残念ながら解決せず。検索したところ過去に類似のISSUEがあるようでした。


組織シェイプ組織の作成完了まではたどり着きませんでした。手順として概ね間違っていないかなと思います。
(このエラーがなければスクラッチ組織が作成されてログインすると設定情報を引き継いだ状態になっていたという想定です。)

補足

今回のブログ書くときはSalesforce DX 開発者ガイドの手順で試してみましたが、組織シェイプの機能のことはco-meetingさんのゆるっとSalesforceトーク #16 スクラッチ組織作成Tipsの話で覚えました。


デモを見せてもらって、説明も聞いてなんとなく使い方のイメージを覚えた感じでしたが、最近のsf コマンドを勉強して改めて組織シェイプについて勉強したことでようやく開発者ガイドに書いてある流れを理解できました。


今回の自分の環境の動作確認ではタイムアウト的なエラーが出てしまったので最後まではできませんでしたが、また時間をおいて試してみようと思います。