パートナーユーザが所有する取引先責任者のカスタマーユーザ化の可否についてです。下記のような仕様のシステム開発を検討していました。
- パートナーコミュニティの有効化
- パートナーコミュニティユーザがデータ登録
- 取引先責任者とそれに紐付く関連データが登録される
- コミュニティユーザは共有設定で非公開設定しておく
- 非公開にすることで他のコミュニティユーザの情報へアクセスはできない
- パートナーユーザは自分の登録した取引先責任者にはアクセスできる
- 所有するデータにはアクセス可能
- 細かい部分は項目レベルセキュリティ等で制御
- 社内ユーザはパートナーユーザが作成した取引先責任者情報にアクセス
- 必要に応じてカスタマーユーザとして有効化
上記仕様で要望を満たすシステムを構築できる想定で権限周りの問題も想定どおりクリアしていたのですが、一つ問題がありました。
パートナーユーザが所有する取引先と関連付けられているカスタマーポータルユーザは作成できません。パートナーユーザが所有しない取引先に、カスタマーポータルユーザを作成してください。
ということで上記の仕様は実現不可でした。
解決方法?
このエラーをみたときになんとなく浮かんだだけで検証は何もできていませんが、パートナーユーザが作成するデータは本来必要とする取引先責任者などの情報ではなくカスタムオブジェクトのデータにすることで解決できると思います。
開発が余計に必要になりますが、そのデータを元にトリガやバッチ処理で本来必要なデータを登録する流れでどうかなと思いました。ただしパートナーユーザのデータ更新のタイミングで実行されるApexトリガは権限的に無理かもしれませんので、リアルタイム連携は諦めてスケジュールバッチで対応するしかないかもしれません。