3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Salesforce B2C CommerceのB2C CRM Sync(実装手順編)

Last updated at Posted at 2022-01-07

※ これから記載する事項は、私が所属する会社とは一切関係のない事柄です。

この記事はb2c-crm-syncのレポジトリのREADMEのSetup Guideを日本語で要約したものです。
詳細を知りたい場合はREADMEを直接ご参照ください。
B2C CRM Syncの機能の内容に関しては、Salesforce B2C CommerceのB2C CRM Sync(機能内容編)を参照してください。

前提

  • B2C Commerceのサンドボックスを持っている
  • サンドボックスにはSFRAの設定が入っている
  • デベロッパーエディションのPlatformのスクラッチ組織を利用
  • PersonalAccountではなくBase(Account/Contact)を利用します

手順概要

  1. Node.jsの設定
  2. DevHubの設定
  3. SFDXの設定
  4. ソースコードをクローン&インストール
  5. 顧客リストの変更
  6. 管理者にエージェントロールを設定
  7. ログの設定
  8. コードバージョンの設定
  9. アクセスキーの設定
  10. APIクライアントIDの設定
  11. .envファイルの設定
  12. OCAPIのShop APIとData APIのパーミッション設定
  13. Web DAVパーミッションの設定
  14. .envファイルの内のB2C Commerceの設定を評価
  15. スクラッチ組織とユーザの作成、組織への接続設定
  16. Platformへのリソース、コネクテッドアプリ、ルールのデプロイ
  17. 代理注文の認証設定
  18. PlatformからCommerceへの接続の設定
  19. Platformのレコードの設定
  20. Commerceへリソースのデプロイ
  21. OCAPIのパーミッションへのドメインの設定
  22. サイト環境設定を使用した有功化
  23. OOBOのゲストユーザ作成

1. Node.jsの設定

こちらは一般的な手法でいいかと思いますので、割愛させていただきます。
バージョンは14.17.5 以上なら良さそうですが、15.2.1が推奨のようです。

2. DevHubの設定

DebHubについてはこのTrailheadを参照してください。

  1. システム管理者として、本番、トライアル、デベロッパーエディション、ビジネス、いずれかの組織にログインします。
  2. 設定からクイック検索で「Dev Hub」項目を検索しページを表示します。
  3. 「Dev Hubを有効化」を有効化します。

image (6) (1).png

3. SFDXの設定

インストールの詳細はこちらを参照してください。

  1. https://developer.salesforce.com/ja/tools/sfdxcli から自身のOSにあったインストーラをダウンロード
  2. 通常のアプリケーションと同様にインストール
  3. sfdx updateコマンドを実行して「sfdx-cli: Updating CLI....」のように表示されたらインストール完了です。

4. ソースコードをクローン&インストール

  1. 自身のローカルPCのワークススペースにコマンドラインで遷移する
  2. git clone https://github.com/SalesforceCommerceCloud/b2c-crm-sync.gitを実行
  3. b2c-crm-syncフォルダが作成されるので、フォルダ内にコマンドラインで遷移する
  4. npm installでパッケージをインストールします。(※ VPN繋いでいたら失敗することがあります)
  5. npm audit fixで問題のあるパッケージをアップデートします。(※ VPN繋いでいたら失敗することがあります)

5. 顧客リストの変更

マルチクラウドユニットテストを100%パスするためには「RefArchGlobal」「RefArch」の両サイトにそれぞれに別々の顧客リストを設定する必要があります。デフォルトでは両サイトが「RefArch」顧客リストを利用しているので、今回は「RefArchGlobal」サイトの顧客リストを「RefArchGlobal」顧客リストに設定します。

  1. Business Managerの管理 > サイト > サイトの管理 > RefArchGlobal - 全般に遷移
  2. 「RefArchGlobal」を選択
  3. 顧客リストを「RefArchGlobal」に変更し、適用ボタンをクリック。

スクリーンショット 2022-01-05 9.57.41.png

6. 管理者にエージェントロールを設定

  1. Business Managerの 管理 > 組織 > 役割 & 許可 > Administrator - 機能の許可 に遷移

  2. 「コンテキストの選択」ポップアップが表示されるので「RefArchGlobal」「RefArch」の両サイトにチェックを入れ、適用ボタンをクリック

  3. 下記の項目にチェックが入っていることを確認して更新ボタンをクリック

    • Login_On_Behalf
    • Login_Agent
    • Adjust_Item_Price
    • Adjust_Shipping_Price
    • Adjust_Order_Price
    • Create_Order_On_Behalf_Of
    • Search_Orders
    • Handle_External_Orders

スクリーンショット 2022-01-05 10.01.12.png

7. ログの設定

こちらは任意の設定です。
テスト時の期待していない動作に対してトラブルシューティングする際にログが出力されるので、役に立ちます。

  1. Business Managerの 管理 > オペレーション > カスタムログ設定 に遷移
  2. rootのログレベルを「DEBUG」に設定
  3. 「FATAL」時にアラートメッセージを飛ばす先のEメールアドレスを設定

スクリーンショット 2022-01-05 10.11.02.png

8. コードバージョンの設定

こちらは任意の設定です。
すでに設定していたり、デフォルトの「SFRA_AP_XXXXX」を使用している場合はそのバージョンを引き続き利用しておいて構いません。新しくバージョンを作成して利用する場合は、SFRAのカートリッジ群も含まれるように設定してください。

  1. Business Managerで 管理 > サイトの開発 > コードのデプロイ に遷移
  2. 追加ボタンをクリックし、任意のバージョン名を入力し、適用ボタンをクリック

スクリーンショット 2022-01-05 10.22.26.png

9. アクセスキーの設定

  1. Business Managerの右上のアカウント名をクリックしプロフィールページを表示する
  2. ページ内の「アクセスキーの管理」ボタンをクリックし、ページへ遷移する
  3. 「アクセスキーの生成」から「WebDAV のファイルアクセスと UX Studio」「エージェントユーザーのログインと OCAPI」のキーをそれぞれ作成
  4. 作成したキーはダウンロードボタンでダウンロードしておく

スクリーンショット 2022-01-05 10.30.10.png

10. APIクライアントIDの設定

  1. https://account.demandware.com にアクセス
  2. 「API Client」タブから「Add API Client」をクリック
  3. Display NameとPasswordをそれぞれ入力(Passwordはのちに利用するので覚えておくようにする)
  4. 使用するOrganizationを選択する
  5. Default Scopesにはmailを入力
  6. Allowed Scopesには下記の内容を入力
roles
tenantFilter
profile
  1. Token Endpoint Auth Methodは private_key_jwt を選択
  2. Access Token Formatは UUIDを選択
  3. Saveボタンをクリックして保存する

11. .envファイルの設定

  1. 4.で作成したb2c-crm-syncフォルダにコマンドラインで遷移
  2. cp sample.env .envコマンドでsample.envファイルから.envファイルを作成
  3. .envファイルを下記の内容に修正し、保存。
B2C_HOSTNAME={B2C Commerceのサンドボックスのドメイン 例:abcd-001.dx.commercecloud.salesforce.com}
B2C_INSTANCENAME={B2C_HOSTNAMEの先頭部分のハイフンを抜いたもの 例:abcd001}
B2C_CLIENTID={10.で作成したAPIクライアントのUUID}
B2C_CLIENTSECRET={10.で作成したAPIクライアントのパスワード}
B2C_SITEIDS=RefArch, RefArchGlobal
B2C_CODEVERSION={8.で設定したコードバージョンまたは現在使用中のコードバージョン}
B2C_DATARELEASE=scc-sampledata
B2C_USERNAME={B2C Commerceログイン時のユーザ名 例:username@emailaddress.com}
B2C_ACCESSKEY={9.で作成した「エージェントユーザーのログインと OCAPI」のアクセスキー}

それぞれの項目の説明はこちら参照ください。

12. OCAPIのShop APIとData APIのパーミッション設定

Shop API

  1. Business Managerの 管理 > サイトの開発 > Open Commerce API 設定 に遷移
  2. タイプの選択で「ストアフロント」(=Shop API)を選択
  3. 範囲の選択で「グローバル」を選択
  4. テクストボックス内にすでにJSONが入力されている場合は、clients リスト内に下記の内容を追加。※ allowed_origins は後ほど入力するので今はそのままでOK。
{
  "client_id":"{10.で作成したAPIクライアントのUUID}",
  "allowed_origins": [
    "https://my-salesforce-environment.visualforce.com",
    "https://my-salesforce-environment.lightning.force.com"
  ],
  "resources": [
    {
        "resource_id": "/customers",
        "methods": [
            "post"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)"
    },
    {
        "resource_id": "/customers/*",
        "methods": [
            "get",
            "patch"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)"
    },
    {
        "resource_id": "/customers/auth",
        "methods": [
            "post"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)"
    },
    {
        "resource_id": "/customers/*/auth",
        "methods": [
            "post"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)"
    },
    {
        "resource_id": "/customers/auth/trustedsystem",
        "methods": [
            "post"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)"
    },
    {
        "resource_id": "/sessions",
        "methods": [
            "post"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)"
    },
    {
        "resource_id": "/site",
        "methods": [
            "get"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "cache_time": 0
    },
    {
        "resource_id": "/orders/*",
        "methods": [
            "get",
            "patch"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)"
    }
  ]
}

もし、テキストボックス内に何も入力されていなければ、下記の内容を入力した上で clients リスト内に上記の内容を追記

{
  "_v": "21.3",
  "clients": [
    {ここに追加}
  ]
}

Data API

上記Shop APIの設定でタイプの選択を「データ」(=Data API)に変更し、4.の内容を下記の内容に変更。あとは全て同じ

{
  "client_id":"{10.で作成したAPIクライアントのUUID}",
  "allowed_origins": [
    "https://my-salesforce-environment.visualforce.com",
    "https://my-salesforce-environment.lightning.force.com"
  ],
  "resources": [
    {
        "methods": [
            "get"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "resource_id": "/sites"
    },
    {
        "methods": [
            "get"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "resource_id": "/sites/*"
    },
    {
        "methods": [
            "post"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "resource_id": "/site_search"
    },
    {
        "methods": [
            "get"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "resource_id": "/code_versions"
    },
    {
        "methods": [
            "get",
            "put",
            "patch",
            "delete"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "resource_id": "/code_versions/*"
    },
    {
        "methods": [
            "post"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "resource_id": "/jobs/*/executions"
    },
    {
        "methods": [
            "get"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "resource_id": "/jobs/*/executions/*"
    },
    {
        "methods": [
            "get"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "resource_id": "/customer_lists/*"
    },
    {
        "methods": [
            "post"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "resource_id": "/customer_lists/*/customer_search"
    },
    {
        "methods": [
            "post"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "resource_id": "/customer_lists/*/customers"
    },
    {
        "methods": [
            "get",
            "patch",
            "delete",
            "put"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "resource_id": "/customer_lists/*/customers/*"
    },
    {
        "methods": [
            "get",
            "post"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "resource_id": "/customer_lists/*/customers/*/addresses"
    },
    {
        "methods": [
            "get",
            "patch",
            "delete"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "resource_id": "/customer_lists/*/customers/*/addresses/*"
    },
    {
        "methods": [
            "get",
            "patch"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "resource_id": "/sites/*/site_preferences/preference_groups/*/*"
    },
    {
        "methods": [
            "post"
        ],
        "read_attributes": "(**)",
        "write_attributes": "(**)",
        "resource_id": "/sites/*/cartridges"
    }
  ]
}

13. Web DAVパーミッションの設定

  1. Business Managerの 管理 > 組織 > クライアントの WebDAV 許可 に遷移
  2. テクストボックス内にすでにJSONが入力されている場合は、clients リスト内に下記の内容を追加。
{
      "client_id":"{10.で作成したAPIクライアントのUUID}",
      "permissions":[
            {
                "path": "/impex",
                "operations": [
                    "read_write"
                ]
            },
            {
                "path": "/cartridges",
                "operations": [
                    "read_write"
                ]
            },
            {
                "path": "/static",
                "operations": [
                    "read_write"
                ]
            }
      ]
    }

もし、テキストボックス内に何も入力されていなければ、下記の内容を入力した上で clients リスト内に上記の内容を追記

{
  "clients": [
    {ここに追加} 
  ]
}

14. .envファイルの内のB2C Commerceの設定を評価

  1. npm run crm-sync:b2c:verify コマンドを実行
  2. 「SUCCESS」という文字が表示されたら成功

image (9).png

15. スクラッチ組織とユーザの作成、組織への接続設定

作成

  1. sfdx auth:web:login -d -a DevHub コマンドを実行してログイン画面を表示し、2. でDev Hub設定をしたときに利用したシステム管理者のアカウントでログイン
  2. npm run crm-sync:sf:org:create コマンドを実行してスクラッチ組織とユーザを作成
  3. sfdx force:org:list --allで作成した組織とユーザを確認。(.env内のSF_SCRATCHORGALIASの値の名前で作成されている。デフォルトは crmsync

スクリーンショット 2022-01-05 11.59.47.png

Tips
もしすでに複数の環境を持っている場合は今回作成したユーザをデフォルトにすることができます。
DevHubのデフォルトユーザを設定する場合、

sfdx config:set defaultdevhubusername={ユーザ名またはエイリアス}

スクラッチ組織のデフォルトユーザを設定する場合、

sfdx config:set defaultusername=[insert your Salesforce Org Username Here]

また、それぞれのデフォルトユーザを確認したい場合は、

sfdx config:list

ユーザ情報の設定

  1. sfdx force:user:password:generate コマンドを実行し、パスワードを作成
  2. npm run crm-sync:sf:user:details コマンドを実行し下記画像の内容を表示
  3. .envを下記画像の内容に上書き修正

スクリーンショット 2022-01-05 12.19.12.png

セキュリティトークンの設定

  1. npm run crm-sync:sf:org:open コマンドを実行し、スクラッチ組織にログイン。(ログインしたユーザが上記で作成したユーザかどうか確認してください。そうなってない場合はTipsに記載した方法でデフォルトユーザを変更して、再度コマンドでログインしてください)
  2. 右上のユーザアイコンから設定に遷移し、左ナビから「私のセキュリティトークンのリセット」を選択し、下記画像のような画面を表示
  3. 「セキュリティトークンのリセット」をクリックする
  4. Eメールでトークンが送られるので、トークンを.env内の SF_SECURITYTOKEN に設定する。

スクリーンショット 2022-01-05 12.23.34.png

設定の確認

npm run crm-sync:sf:auth:usercreds コマンドを実行して下記画像のようにトークンが表示されたら完了です。

スクリーンショット 2022-01-05 12.34.22.png

16. Platformへのリソース、コネクテッドアプリ、ルールのデプロイ

  1. 下記のコマンドを実行
    1. リソースのデプロイ:npm run crm-sync:sf:org:deploy
    2. コネクテッドアプリのデプロイ:npm run crm-sync:sf:connectedapps
    3. 重複ルールのデプロイ:npm run crm-sync:sf:duplicaterules

17. 代理注文の認証設定

設定

  1. npm run crm-sync:oobo:password:display でパスワードを表示
  2. (ログインしてなければ) npm run crm-sync:sf:org:open コマンドを実行し、スクラッチ組織にログイン
  3. 右上のユーザアイコンから設定に遷移し、左ナビから「外部システムの認証設定」を選択し、新規ボタンから下記画像のような画面を表示
  4. 下記の内容を入力し、保存ボタンをクリック
    1. 外部システム定義 → 指定ログイン情報
    2. 指定ログイン情報 → {InstanceName}:B2C: OOBO Named Credentioals
    3. ユーザ → 検索ボタンをクリックし、表示されたポップアップで「User User」を選択
    4. 認証プロトコル → パスワード認証
    5. ユーザ名 → .env 内の B2C_USERNAMEと同じ
    6. パスワード → 上記のコマンドで表示したパスワード

スクリーンショット 2022-01-05 12.52.34.png

確認

npm run crm-sync:b2c:auth:bmuserコマンドを実行し下記画像のようにトークンが表示されていたら完了

スクリーンショット 2022-01-05 13.03.02.png

18. PlatformからCommerceへの接続の設定

証明書の作成

  1. (ログインしてなければ) npm run crm-sync:sf:org:open コマンドを実行し、スクラッチ組織にログイン。
  2. 設定のクイック検索から「証明書と鍵の管理」を検索し、ページを表示
  3. 「自己署名証明証の作成」をクリックする
  4. 表示されたフォームに下記の内容を入力し、保存をクリック
    1. 表示ラベル → .env内のB2C_INSTANCENAMEと同じ値
    2. 一意の名前 → .env内のB2C_INSTANCENAMEと同じ値
    3. エクスポート可能な非公開鍵 → チェックする
    4. 鍵サイズ → 4096

スクリーンショット 2022-01-05 14.03.38.png

証明書のエクスポート

  1. (ログインしてなければ) npm run crm-sync:sf:org:open コマンドを実行し、スクラッチ組織にログイン。
  2. 設定のクイック検索から「証明書と鍵の管理」を検索し、ページを表示
  3. 「キーストアにエクスポート」をクリック
  4. 表示されたページで任意のパスワードを設定し、エクスポートボタンをクリックして証明証をダウンロード

証明書の設置

  1. ダウンロードした証明証を4.でローカルに作成したb2c-crm-syncフォルダ内の/_jwt/sfdc に設置する
  2. npm run crm-sync:sf:cert:publickey:get コマンドを実行(実行時に聞かれるパスワードはエクスポートしたときに設定した任意のパスワード)
  3. /_jwt/sfdc 内に.certファイルと.keyファイルが作成されていることを確認

スクリーンショット 2022-01-05 14.19.01.png

.envファイルの修正

.envファイル内にSF_CERTDEVELOPERNAME を追加し、証明証を作成した時の「一意の名前」(=B2C_INSTANCENAME)を値に設定

API Clientへの証明証の設定

  1. https://account.demandware.com にアクセス
  2. 10.で作成したAPI Clientを表示する
  3. Client JWT Bearer Public Keyにローカルに作成された.certファイル内の -----BEGIN CERTIFICATE----- で始まって -----END CERTIFICATE----- で終わる値を入力し、Saveボタンをクリック。(注意:テキストボックスの最後に空白が入らないようにする)

接続の確認

  • npm run crm-sync:b2c:auth:jwtコマンドを実行し、authTokenが表示されれば証明証を利用したAccout ManagerからのJWTの取得の設定は成功
  • npm run crm-sync:b2c:auth:clientcreds コマンドを実行し、B2C Commerce Authentication Tokenが表示されていればクライアントIDとパスワードを利用したAccout ManagerからのJWTの取得の設定は成功

ユニットテスト用の証明証の作成

上記の「証明書の作成」と同じ手順で「表示ラベル」と「一意の名前」の値をb2ccrmsync_testingにする。(エクスポートや.envの修正、APIClientの設定はしなくても良い)

19. Platformのレコードの設定

B2C Commerce Clientの設定をPalatformのレコードに追加する

npm run crm-sync:sf:b2cclientid:setup コマンドを実行し、「SUCCESS」という文字が表示されれば成功

B2C Commerce Instanceの設定をPalatformのレコードに追加する

npm run crm-sync:sf:b2cinstance:setup コマンドを実行し、「SUCCESS」という文字が表示されれば成功

image (10).png

20. Commerceへリソースのデプロイ

npm run crm-sync:b2c:build コマンドを実行すると下記のようにドメインが表示される

スクリーンショット 2022-01-05 17.04.49.png

21. OCAPIのパーミッションへのドメインの設定

21.で表示されたドメインで12.で設定したJSONのallowed_origins部分を上書きする。

22.サイト環境設定を使用した有功化

npm run crm-sync:b2c:siteprefs:activate コマンドを実行

23. OOBOのゲストユーザ作成

npm run crm-sync:oobo:customers:create コマンドを実行

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?