DX攻略部がリニューアルしました!

【Salesforce】ユーザによってはフローが実行できない?原因と解決策まとめ

こんにちは、DX攻略部のヘナトンです。

Salesforceの自動化ツールであるフローは、ビジネスプロセスを自動化するための強力なツールです。

今回はそのフローを実行できるユーザの権限周りの解説をします。

そもそもフローとは何だろう?という方はこちらの記事で概要を解説しておりますのでご活用ください。

関連記事

こんにちは、DX攻略部のヘナトンです。 Salesforceの自動化ツールであるフローは、ビジネスプロセスを自動化するための強力なツールです。 Salesforceの自動化ツールとしてワークフロールールやプロセスビルダーもありま[…]

フローを実行できるユーザはどんなユーザ?

フローを作成し、有効化しても誰でも実行できるわけではありません

それぞれのユーザにフローを実行する許可をあたえなければなりません。

まず挙げられるのは下記の二つの方法です。

いずれかを設定すればフロー実行できます。

プロファイルや権限セットによる許可

  • 設定>プロファイル>該当ユーザのプロファイルを選択>編集>一般ユーザ権限>「フローを管理」
  • 設定>プロファイル>該当ユーザのプロファイルを選択>編集>一般ユーザ権限>「フローを実行」
    • 設定>権限セット>該当ユーザの権限セットを選択>システム権限>編集>「フローを管理」
    • 設定>権限セット>該当ユーザの権限セットを選択>システム権限>編集>「フローを実行」

       

      フローを管理」「フローを実行」の二つのうちどちらかにチェックを入れればそのプロファイルや権限セットを割り当てられているユーザはフローを実行できます

      *「フローを管理」はフローを設定する権限で、「フローを実行」はフローを実行するだけの権限です。

      ユーザレコードの項目による許可

      設定>ユーザ>該当ユーザを選択>編集>ユーザの詳細>「フローユーザ」

      この「フローユーザ」項目にチェックを入れればこのユーザはフローを実行できます。

      フローごとに実行可能ユーザを決められるの?

      ユーザがフローを実行できるようにする設定方法を解説しましたが、フロー毎に実行できるユーザを分けたい場合もあると思います。

      プロファイルAにフローを実行する権限を与えたけど、このフローだけはこのプロファイルのユーザには実行してほしくないなんてことは多々あるのです。

      ここでは上記の「フローを実行できるユーザはどんなユーザ?」で解説した設定をフロー毎に上書きする方法を解説します。

      設定方法

      まずはフローを実行するユーザ条件を決めたいフローを決めます。

      設定>フロー>該当フローを選択>編集アクセス権>「デフォルト動作を上書きし、有効化されたプロファイルまたは権限セットにアクセスを制限します。」にチェック>該当プロファイルもしくは該当権限セットを「選択可能なプロファイル」から「有効にされたプロファイル」に追加>保存

      これでこのフローを実行できるのは有効にされたプロファイルまたは権限セットを割り当てられたユーザだけになります。

      確認および追加方法

      「デフォルト動作を上書きし、有効化されたプロファイルまたは権限セットにアクセスを制限します。」にチェックを入れたフローはプロファイルや権限セットの設定から確認、追加できます。

      プロファイルの場合

      設定>プロファイル>実行できるフローを確認したいプロファイルを選択>フローアクセスを有効化

      ここで当プロファイルに対して有効なフローを確認できます。

      「編集」>該当フローを「選択可能なフロー」から「フローを有効化」に追加>保存

      これで他の使用可能なフロー(「デフォルト動作を上書きし、有効化されたプロファイルまたは権限セットにアクセスを制限します。」にチェックが入っているフロー)を当プロファイルに対して有効化できます。

      権限セットの場合

      設定>権限セット>実行できるフローを確認したい権限セットを選択>フローアクセス

      ここで当権限セットに対して有効なフローを確認できます。

      「編集」>該当フローを「選択可能なフロー」から「フローを有効化」に追加>保存

      これで他の使用可能なフロー(「デフォルト動作を上書きし、有効化されたプロファイルまたは権限セットにアクセスを制限します。」にチェックが入っているフロー)を権限セットに対して有効化できます。

      フローが実行されるコンテキストとは?

      以上の設定を確認してもユーザがフローを実行できない場合があります。

      なぜでしょうか?

      それは上記の設定ではフロー自体を実行できるか否かの設定を行いましたが、フロー内の処理は別の話だからです。

      フロー内での処理内容が許可されていないユーザはそのフローを実行できないのです。

      以下にフロー内部での処理内容に対するアクセス権の解説をします。

      Salesforceフローはユーザコンテキストもしくはシステムコンテキストで実行されます。

      • ユーザコンテキスト
      • システムコンテキスト(共有あり)
      • システムコンテキスト(共有なし)

      ユーザコンテキスト

      実行ユーザのプロファイルや権限セットによってフロー内のオブジェクト権限や項目レベルのアクセス権が決まります

      例えばフロー内に商談レコードを編集する要素が含まれている場合でユーザAのプロファイルで商談は参照のみしかアクセス許可されていない場合、ユーザAはこのフローを実行してもエラーが出ます。

      システムコンテキスト(共有あり)

      フロー内のレコード処理には組織の共有設定ロール階層共有ルール共有の直接設定チームテリトリーが適用されます。

      例えば組織の共有設定で商談オブジェクトが非公開でありフロー内で商談を編集する処理があるとします。

      ユーザAに手動共有などで商談Aが共有されていないにも関わらず商談Aを編集するフローを実行するとエラーが出ます。

      システムコンテキスト(共有なし)

      システム管理者と同様の権限でフローを実行できます。

      上記のエラーの回避策として設定できます。

      レコードトリガーフローなどはそもそもこの設定しかできないので考慮不要です。

      コンテキストの設定方法や注意事項はこちらの記事でまとめておりますのでご活用ください。

      フローが実行できない!?

      この章ではユーザAがフローを実行できない場合の確認手順をまとめます。

      ①フロー自体が実行許可されているか

      ②フロー内の処理内容が実行許可されているか

      ③フローの処理に誤りがないか

      ④テストをする

      ①フロー自体が実行許可されているか

      まずはそのフロー自体をユーザAは実行許可されているか確認します。

      フローを実行できるユーザはどんなユーザ?フローごとに実行可能ユーザを決められるの?に従って確認できます。

      ②フロー内の処理内容が実行許可されているか

      次にフロー内の処理をユーザAは実行許可されているか確認します。

      フローが実行されるコンテキストとは?に従って確認できます。

      ③フローの処理に誤りがないか

      最後にフロー内の処理内容に間違いがないか確認します。

      例えば、ユーザのロールが「総務部」であれば処理A、「総務部」でなければ処理終了という条件分岐が設定されていたら総務部でないユーザAは処理を進めることができません。

      また、そもそもフローにおかしな処理が設定されていれば実行してももちろんエラーが出ます。

      ④テストをする

      それでもユーザAがフローを実行できない場合は様々なパターンでテストをして要修正箇所を発掘しましょう。

      ユーザAと同じプロファイルで異なる権限セットを持つユーザBでは実行できるか。

      ユーザAと同じ権限セットで異なるプロファイルを持つユーザBでは実行できるか。

      レコードに関するフローであれば、他のレコードであれば実行できるか。

      本番環境のみで起こる現象なのか。

      などなど

      見つかるまで微調整を繰り返しテストする他ありません。 

      まとめ

      Salesforceフローの権限に関する解説は以上となります。

      ご覧のようにフローでは様々な条件で実行できるできないを決定できるというメリットがあります。

      一方で様々な設定を管理しないといけないというデメリットもあります。

      同じ会社内の人間でも役職などによってアクセスしていい場合とよくない場合がありますね。

      Salesforceは社内の人間だけでなくパートナーやお客様にもライセンスを発行して活用できる便利なツールですがセキュリティ面は気を付けなければなりません。

      フローを誰にでも許可するのではなく、適切なユーザだけが適切なタイミングで活用できるよう権限設定を心がけましょう。

      最後までお読みいただきありがとうございました。