概要
Box for Salesforceでは、レコードのBoxフォルダに対するユーザーの権限が、そのレコードに対するSalesforceのアクセス権限と一致するように設計されています。 しかし、Salesforceでは [Edit (編集)] と表示されるのに対して、Boxでは [ビューアー] と表示されるように、一致しない場合もあります。 この記事では、このような不一致のトラブルシューティングを行い、修正する方法について説明します。
一般的な原因
よくあるケースとして、ユーザーのアクセス権限が低かった (例: 読み取りやビューアー) 段階でコラボレーションが作成され、その後Salesforceの権限が引き上げられたにもかかわらず、既存のコラボレーションが期待されるBoxの役割 (例: 編集者) に更新されなかったという状況が挙げられます。
- ユーザーにはSalesforceで読み取り (ビューアー) の権限しか付与されていなかったのに、Boxでは、ビューアー権限が設定されたコラボレーションが作成されました。
- その後、Salesforceが更新され、より上位の権限 (例: 編集) が付与されましたが、最初のビューアーのコラボレーションは残ったままになり、編集者に置き換えられませんでした。
解決策 (応急処置)
BoxとSalesforceを再調整するには、以下のいずれかを試してください。
1. 手動 — Boxで役割を変更する
Salesforceサービスアカウントとして、対象フォルダに対するユーザーのコラボレーションを、Salesforceと一致するように更新します (他のBox管理者は、コンテンツマネージャから同様の操作を行うことができます)。
2. 自動 — [今すぐ同期]
Box for Salesforceで [今すぐ同期] を使用します。 これにより、権限同期ジョブは (即時ではなく) 約1分後に実行されるようスケジュール設定されます。 [今すぐ同期] によって、手動によるコラボレーションの変更が上書きされる可能性があることに注意してください。 特定のユーザーやフォルダを管理された方法で再同期するには、代わりにFRUPとコラボレーションの再作成を使用してください。
どちらの方法でも解決しない場合や根本原因を確認する必要がある場合は、以下のトラブルシューティングに進んでください。 トラブルシューティング後もマッピングが正しくない場合は、FRUPとコラボレーションの再作成を使用してください。
トラブルシューティング
現状の確認
UserRecordAccess — 標準の
UserRecordAccessオブジェクト (下記のSOQLを参照) に対してクエリを実行し、そのレコードに対するユーザーの有効なアクセス権限を確認します。 クエリを実行しても行が返されない場合、そのユーザーは、Salesforce内の当該レコードに対して行レベルのアクセス権限を持っていません。まずSalesforceで共有やレコードへのアクセスを修正してください。この問題は、Boxのマッピングとは関係ありません。FRUP — FRUPカスタムオブジェクトには、SalesforceレコードとBoxフォルダの間のマッピングが保存されています。 Boxフォルダの権限レベルを確認するには、SOQLを使用してFRUPレコードを確認するか、FRUPレポートを実行してください (SOQLおよび以下の手順を参照)。
Box + Salesforce統合環境でFRUPレポートを生成する比較 — FRUP上の
Permission__c(例:box__FRUP__c上のbox__Permission__c、またはFRUPレポートの [Permission (権限)] 列) およびUserRecordAccessが、Box内のフォルダに表示されるユーザーの役割 (コラボレータリストまたはコンテンツマネージャ) と一致していることを確認します。
詳細な確認 (省略可)
以下は主に、Boxのアクセスレベルがカスタマイズされている場合や、FRUPデータが無効であるために [今すぐ同期] を使用しても更新が適用されないような、特殊なケースに適用されます。
-
カスタムのBoxアクセスレベル — Boxのアクセスレベルをカスタマイズしている組織で、Salesforceのアクセスレベル (All (すべて)、Transfer (転送)、Delete (削除)、Edit (編集)、Read (読み取り)、None (なし) など) をBoxのコラボレータの役割 (ビューアー、編集者など) にデフォルトと異なる方法でマッピングしている場合、
UserRecordAccessが正しく見えていても、Boxでは予期しない役割が表示されることがあります。 Salesforce管理者は、影響を受けるユーザーやプロフィールのマッピングを確認する必要があります。この設定は、[設定] > [カスタム設定] > [Box Access Levels] で確認できます (v4.47以降)。 Box for Salesforce v4.47 リリースノート (2024年4月)を参照してください。
無効なFRUPデータ — スケジュール設定された権限同期では、特定のフィールドが想定された状態にある (例:
Retry_Count__cが空で、BOSS_Status__c/BOSS_Action__cが不良状態にない) 場合のみ、FRUP行が考慮されます。 FRUP行の [BOSSステータス] や [BOSSアクション] が通常と異なる場合または [再試行回数] が空でない場合は、更新が適用されない可能性があります。 影響を受けるレコードでこれらのフィールドを確認し、正常なFRUP行と比較してください。
SOQLのサンプル
プレースホルダのIDを、実際のSalesforceユーザーIDおよびレコードIDに置き換えます。 SOQLクエリを実行する手順については、こちら記事または他のSalesforceヘルプドキュメントを参照してください。
有効なレコードアクセス:
SELECT RecordId,
HasDeleteAccess,
HasEditAccess,
HasReadAccess,
MaxAccessLevel
FROM UserRecordAccess
WHERE UserId = '005xxxxxxxxxxxxxx'
AND RecordId IN ('001xxxxxxxxxxxxxx', 'a0Jxxxxxxxxxxxxxx')サンプル出力:
| RecordId | HasDeleteAccess | HasEditAccess | HasReadAccess | MaxAccessLevel |
|---|---|---|---|---|
| 0015i00000of4PrAAI | false | false | true | Read |
| 0015i000013hoAKAAY | true | true | true | All |
| a0JJ30000058CPsMAM | false | false | true | Read |
ユーザーおよびレコードのFRUP行:
SELECT Name,
box__Box_user__c,
box__CollaborationID__c,
box__Folder_ID__c,
box__Object_Name__c,
box__Permission__c,
box__Record_ID_Indexed__c,
box__Salesforce_User__c
FROM box__Frup__c
WHERE box__Record_ID_Indexed__c IN ('001xxxxxxxxxxxxxx', 'a0Jxxxxxxxxxxxxxx')
AND box__Salesforce_User__c = '005xxxxxxxxxxxxxx'サンプル出力:
| Name | box__Box_user__c | box__CollaborationID__c | box__Folder_ID__c | box__Object_Name__c | box__Permission__c | box__Record_ID_Indexed__c | box__Salesforce_User__c |
|---|---|---|---|---|---|---|---|
| FRUP-00118 | 43527354476 | 71705605280 | 285084885059 | Account | Read/Write | 0015i00000of4PrAAI | 0055i00000BFCllAAH |
| FRUP-00111 | 43527354476 | 71664594274 | 239415191098 | Account | Read/Write | 0015i000013hoAKAAY | 0055i00000BFCllAAH |
| FRUP-00115 | 43527354476 | 71674918834 | 332600759483 | CustomObject2__c | Read | a0JJ30000058CPsMAM | 0055i00000BFCllAAH |
想定するアクセス権限がUserRecordAccessとFRUPに反映されていない場合や、依然としてBoxに間違った役割が表示されている場合は、SalesforceとBoxの間の権限マッピングが同期されていません。 次のFRUPとコラボレーションの再作成に従ってください。
解釈の例
-
0015i000013hoAKAAY —
UserRecordAccessでHasEditAccess = true、かつbox__Frup__cでbox__Permission__c = Read/Writeの場合、一致しています。 -
a0JJ30000058CPsMAM —
UserRecordAccessでHasEditAccess = false、かつbox__Frup__cでbox__Permission__c = Readの場合、一致しています。 -
0015i00000of4PrAAI —
UserRecordAccessでHasEditAccess = falseでも、box__Frup__cでbox__Permission__c = Read/Writeの場合、一致していません (Salesforceでは読み取り専用、Boxでは読み取り/書き込み)。
FRUPとコラボレーションの再作成
始める前に: 影響を受けるレコードやフォルダをバックアップし、必要に応じて関係者に通知してください。
1. Boxでコラボレーションを削除する
Salesforceサービスアカウントとして、影響を受けるフォルダでユーザーのコラボレーションを削除します (他のBox管理者は、コンテンツマネージャから同様の操作を行うことができます)。
2. SalesforceでFRUP行を削除する
同期されていないFRUPレコードを削除します。 上記の例では、FRUP-00118が同期されていないため、削除する必要があります。
FRUPレポート/オブジェクト (リストビューまたは関連リスト) からFRUPレコードを開き、削除します。
手順1で削除したコラボレーションに関するFRUP行をBox for Salesforceが参照し続けることになるため、FRUPの削除は必要です。 これにより、影響を受けるユーザーはそのレコードに関連付けられたBoxフォルダにアクセスできなくなるため、Boxの埋め込みやUI Elementsでエラーが発生します。
FRUP行の削除後、ユーザーが次にそのレコードでBox for Salesforceを使用する (つまり、レコードページでBoxの埋め込みやUI Elementsを読み込む) と、FRUPが再作成され、ユーザーは自動的に再度招待されます。
3. 検証する
FRUPが再作成されたら、BoxのコラボレーションがSalesforceのアクセス権限と一致していること (読み取り/書き込み→編集者など) を確認します。
サポートに連絡
上記の手順で問題を解決できなかった場合や、他のレコードでも同じ問題が再発する場合は、以下の情報を添えてBoxサポートまでお問い合わせください。
- 影響を受けているBoxアカウント
- 影響を受けているSalesforceレコードID
- 影響を受けているBoxフォルダID
- FRUPレポートの出力
- SOQLクエリの結果
- [Box設定] タブのスクリーンショット