トラブルシューティング
Salesforceの共有設定に関する一般的な問題と、その診断・解決方法を解説します。
問題1: 「ログインできない」
症状
Community Userとしてログインしようとすると、エラーメッセージが表示される。
診断手順
Step 1: ユーザーがActiveか確認
SELECT Id, Name, Username, Email, IsActive, UserType, Profile.Name
FROM User
WHERE Email = 'user@example.com'確認項目:
IsActive=trueか?UserType= “CustomerSuccess” または “PowerPartner” か?
解決方法:
User詳細ページ → Edit → Active ✅ → SaveStep 2: Contactに紐付いているか確認
SELECT Id, Name, ContactId, Contact.Name, Contact.AccountId, Contact.Account.Name
FROM User
WHERE Email = 'user@example.com'確認項目:
ContactIdが null でないか?Contact.AccountIdが設定されているか?
解決方法:
User詳細ページ → Edit → Contact を選択 → SaveStep 3: Profileが正しいか確認
SELECT Id, Name, Profile.Name, Profile.UserLicense.Name
FROM User
WHERE Email = 'user@example.com'確認項目:
- Profile が “R Design | Maker Community User” などのCommunity用Profileか?
- UserLicense が “Customer Community” または “Partner Community” か?
解決方法:
User詳細ページ → Edit → Profile を変更 → SaveStep 4: Experience Cloud Siteのメンバーか確認
Setup → Digital Experiences → All Sites → [Site Name] → Administration
→ Members → 検索解決方法:
Members → Add Members → ユーザーを検索して追加問題2: 「レコードが見えない」
症状
Community Userとしてログインしているが、自ブランドのレコードが表示されない。
診断手順
Step 1: レコードの所有者を確認
SELECT Id, Name, OwnerId, Owner.Name, Owner.UserType
FROM Design_Family_Name__c
WHERE Id = 'a1x...'確認項目:
- レコードが本当に存在するか?
- 所有者は誰か?
Step 2: OWDを確認
Setup → Sharing Settings → Organization-Wide Defaults
→ Design Family の External Sharing Model を確認確認項目:
externalSharingModel= “Private” か?
Step 3: Owner_Account__c が正しく設定されているか確認
SELECT
Id,
Name,
Maker_Code__c,
Maker_Code__r.Name,
Maker_Code__r.Owner_Account__c,
Maker_Code__r.Owner_Account__r.Name
FROM Design_Family_Name__c
WHERE Id = 'a1x...'確認項目:
Maker_Code__cが設定されているか?Maker_Code__r.Owner_Account__cが設定されているか?
解決方法:
Vendor Brand レコードを開く → Owner Account フィールドを確認・設定Step 4: User の Account を確認
SELECT
Id,
Name,
Contact.AccountId,
Contact.Account.Name,
Contact.Account.Type
FROM User
WHERE Id = '005...'確認項目:
Contact.AccountIdが設定されているか?- このAccount IDが、レコードの
Maker_Code__r.Owner_Account__cと一致するか?
Step 5: Account IDの一致を確認
-- User の Account
SELECT Contact.AccountId
FROM User
WHERE Id = '005...'
-- レコードの Owner Account
SELECT Maker_Code__r.Owner_Account__c
FROM Design_Family_Name__c
WHERE Id = 'a1x...'これらが完全に一致していることを確認。
解決方法:
不一致の場合:
- Vendor Brand の Owner_Account__c を修正
- または、User の Contact.Account を修正
Step 6: Sharing Set Settingsを確認
Setup → Sharing Settings → Sharing Set Settings
→ ユーザーのProfileに紐付いたSharing Setがあるか確認確認項目:
- Profile “R Design | Maker Community User” に Sharing Set が割り当てられているか?
- Object “Design_Family_Name__c” が含まれているか?
- Access Determined By が
User.Account = Design_Family_Name__c.Maker_Code__r.Owner_Account__cになっているか?
Step 7: Sharing Records を直接確認
SELECT
Id,
ParentId,
UserOrGroupId,
AccessLevel,
RowCause
FROM Design_Family_Name__Share
WHERE ParentId = 'a1x...'確認項目:
- ユーザーに対するShareレコードが存在するか?
AccessLevelは何か?(“Read”, “Edit”)RowCauseは何か?(どの仕組みで共有されたか)
RowCause の意味
Manual: 手動共有Rule: Sharing RuleImplicitChild: ControlledByParentTeam: Team SharingOwner: 所有者
問題3: 「編集できない」
症状
レコードは表示されるが、編集ボタンが表示されない、または編集しようとするとエラー。
診断手順
Step 1: アクセスレベルを確認
SELECT
Id,
ParentId,
UserOrGroupId,
AccessLevel
FROM Design_Family_Name__Share
WHERE ParentId = 'a1x...'
AND UserOrGroupId = '005...'確認項目:
AccessLevelが “Edit” か?(“Read” では編集不可)
Step 2: Sharing Set Settingsのアクセスレベルを確認
Setup → Sharing Settings → Sharing Set Settings
→ Object "Design_Family_Name__c" の Access Level を確認確認項目:
- Access Level が “Read/Write” になっているか?
解決方法:
Sharing Set Settings → Edit → Access Level を "Read/Write" に変更 → SaveStep 3: Profileのオブジェクト権限を確認
Setup → Profiles → [Profile Name] → Object Settings
→ Design Family → Permissions確認項目:
- Read ✅
- Edit ✅
解決方法:
Object Settings → Edit → Edit権限をチェック → SaveStep 4: Field-Level Securityを確認
特定の項目のみ編集できない場合:
Setup → Object Manager → Design Family → Fields & Relationships
→ [フィールド名] → Set Field-Level Security確認項目:
- Profile “R Design | Maker Community User” で Edit権限があるか?
問題4: 「他のブランドのレコードが見えてしまう」
症状
Brand A のユーザーが、Brand B のレコードにアクセスできてしまう。
重大なセキュリティ問題
これは重大なセキュリティ問題です。直ちに調査・修正してください。
診断手順
Step 1: OWDを確認
Setup → Sharing Settings → Organization-Wide Defaults確認項目:
- External Sharing Model が “Private” になっているか?
もし “Read” や “ReadWrite” になっている場合、これが原因です。
解決方法:
⚠️ 注意: OWDの変更は全体に影響します。慎重に実施してください。
Sharing Settings → Edit → External Sharing Model を "Private" に変更
→ SaveStep 2: Sharing Rulesを確認
Setup → Sharing Settings → Sharing Rules for Design Family確認項目:
- “All Partner Users” や “All Customer Portal Users” に共有するルールがあるか?
もしある場合、そのルールが意図したものか確認。
解決方法:
不要なSharing Rule → DeleteStep 3: Sharing Set Settingsを確認
Setup → Sharing Settings → Sharing Set Settings確認項目:
- Access Determined By の条件が正しいか?
- Account IDで適切にフィルタリングされているか?
Step 4: Manual Sharingを確認
SELECT
Id,
ParentId,
UserOrGroupId,
AccessLevel,
RowCause
FROM Design_Family_Name__Share
WHERE ParentId = 'a1x...'
AND RowCause = 'Manual'意図しない手動共有がないか確認。
問題5: 「Chatterで@mentionできない」
症状
同じブランドの他のユーザーを@mentionしようとしても、候補に表示されない。
診断手順
Step 1: 両方のユーザーが同じCommunity Siteのメンバーか確認
Setup → Digital Experiences → All Sites → [Site Name] → Administration
→ Members → 検索確認項目:
- User1 がメンバーか?
- User2 がメンバーか?
Step 2: レコードへのアクセス権限を確認
-- User2 がレコードにアクセスできるか確認
SELECT
Id,
ParentId,
UserOrGroupId,
AccessLevel
FROM Design_Family_Name__Share
WHERE ParentId = 'a1x...'
AND UserOrGroupId = '005...' -- User2のID確認項目:
- User2 がレコードに対してRead権限以上を持っているか?
Step 3: Chatterが有効か確認
Setup → Chatter Settings確認項目:
- Chatter が有効になっているか?
Setup → Object Manager → Design Family → Chatter Settings確認項目:
- Feed Tracking が有効になっているか?
問題6: 「新規ブランド追加後、共有されない」
症状
新しいブランドをオンボーディングしたが、そのブランドのユーザーが自社のレコードにアクセスできない。
チェックリスト
1. Contactレコードが正しく作成されているか
SELECT Id, Name, AccountId, Account.Name, Email
FROM Contact
WHERE Email = 'newuser@example.com'2. Userレコードが正しく作成されているか
SELECT
Id,
Name,
ContactId,
Contact.AccountId,
Profile.Name,
IsActive
FROM User
WHERE Email = 'newuser@example.com'確認項目:
- ContactId が設定されているか?
- Profile が “R Design | Maker Community User” か?
- IsActive = true か?
3. Vendor Brandが正しく設定されているか
SELECT
Id,
Name,
Account__c,
Owner_Account__c,
Owner_Account__r.Name
FROM Maker_Code__c
WHERE Account__c = '001...' -- Business Account ID確認項目:
Owner_Account__cが Community Licensee Account のIDに設定されているか?- User の Contact.AccountId と一致しているか?
4. Portal Roleが設定されているか
User詳細ページ → Portal Role フィールドを確認確認項目:
- Portal Role が設定されているか?
5. Sharing Set Settingsが適用されているか
Setup → Sharing Settings → Sharing Set Settings
→ ユーザーのProfileを確認6. Sharing Rulesの再計算
Setup → Sharing Settings → "Recalculate" ボタン新規データ追加後は、Sharing Rulesを再計算することで問題が解決する場合があります。
診断ツール
Apex診断スクリプト(例)
// 匿名Apexで実行
Id userId = '005...'; // 診断対象のUser ID
Id recordId = 'a1x...'; // 診断対象のレコードID
// 1. User情報取得
User u = [
SELECT Id, Name, Contact.AccountId, Contact.Account.Name, Profile.Name
FROM User
WHERE Id = :userId
];
System.debug('User: ' + u.Name);
System.debug('User Account: ' + u.Contact.Account.Name);
System.debug('User Account ID: ' + u.Contact.AccountId);
// 2. レコード情報取得
Design_Family_Name__c df = [
SELECT Id, Name, Maker_Code__r.Owner_Account__c, Maker_Code__r.Owner_Account__r.Name
FROM Design_Family_Name__c
WHERE Id = :recordId
];
System.debug('Design Family: ' + df.Name);
System.debug('Owner Account: ' + df.Maker_Code__r.Owner_Account__r.Name);
System.debug('Owner Account ID: ' + df.Maker_Code__r.Owner_Account__c);
// 3. Account IDの一致確認
if (u.Contact.AccountId == df.Maker_Code__r.Owner_Account__c) {
System.debug('✅ Account ID一致: 共有されるはず');
} else {
System.debug('❌ Account ID不一致: 共有されない');
}
// 4. Sharing Records確認
List<Design_Family_Name__Share> shares = [
SELECT Id, UserOrGroupId, AccessLevel, RowCause
FROM Design_Family_Name__Share
WHERE ParentId = :recordId
AND UserOrGroupId = :userId
];
if (shares.isEmpty()) {
System.debug('❌ Sharing Recordなし');
} else {
for (Design_Family_Name__Share s : shares) {
System.debug('✅ Sharing Record: ' + s.AccessLevel + ' (' + s.RowCause + ')');
}
}SOQLクエリ集
ユーザーのAccount確認
SELECT
Id,
Name,
Email,
Contact.AccountId,
Contact.Account.Name,
Contact.Account.Type,
Profile.Name
FROM User
WHERE Email LIKE '%@example.com'Vendor BrandのOwner Account確認
SELECT
Id,
Name,
Account__c,
Account__r.Name,
Owner_Account__c,
Owner_Account__r.Name
FROM Maker_Code__c
ORDER BY NameレコードとSharing状況確認
SELECT
Id,
Name,
Maker_Code__r.Name,
Maker_Code__r.Owner_Account__c,
Maker_Code__r.Owner_Account__r.Name,
(
SELECT UserOrGroupId, AccessLevel, RowCause
FROM Shares
)
FROM Design_Family_Name__c
WHERE Id = 'a1x...'パフォーマンス問題
症状
ログインや画面遷移が遅い。
診断手順
1. Sharing Set Settingsの複雑さを確認
Setup → Sharing Settings → Sharing Set Settings
→ 各Sharing Setのルール数を確認目安:
- 10個以下のオブジェクト: 問題なし
- 20個以上: パフォーマンスに影響の可能性
2. Sharing Rulesの数を確認
Setup → Sharing Settings
→ 各オブジェクトのSharing Rules数を確認目安:
- オブジェクトあたり10個以下: 問題なし
- 20個以上: パフォーマンスに影響の可能性
3. データ量を確認
-- Design Familyレコード数
SELECT COUNT()
FROM Design_Family_Name__c
-- Shareレコード数
SELECT COUNT()
FROM Design_Family_Name__Share目安:
- Shareレコード数が親レコード数の10倍以上: 最適化を検討
最適化方法
- 不要なSharing Rulesを削除
- Sharing Rulesを統合(複数のルールを1つに)
- Sharing Rulesを定期的に再計算
- インデックスの活用(カスタムフィールドに自動適用)
エラーメッセージ別トラブルシューティング
”insufficient access rights on cross-reference id”
意味: 関連レコード(例: Vendor Brand)へのアクセス権限がない
解決方法:
- 関連レコード(Vendor Brand)の共有設定を確認
- Sharing Set Settingsに Vendor Brand が含まれているか確認
”You do not have the level of access necessary to perform the operation you requested”
意味: レコードに対する十分なアクセス権限がない
解決方法:
- OWDを確認
- Sharing Set Settingsを確認
- Profileのオブジェクト権限を確認
”The requested resource does not exist”
意味: レコードが存在しない、またはアクセス権限がない
解決方法:
- レコードIDが正しいか確認
- レコードが削除されていないか確認
- アクセス権限を確認
サポートへのエスカレーション
情報収集
問題をサポートにエスカレーションする前に、以下の情報を収集:
-
ユーザー情報
- User ID
- Profile
- Contact.AccountId
-
レコード情報
- Record ID
- Owner ID
- Maker_Code__r.Owner_Account__c
-
エラーメッセージ
- スクリーンショット
- 正確なエラーテキスト
-
実行したSOQLクエリと結果
-
試した解決方法
予防的メンテナンス
定期的なチェック(月次)
- 不要なSharing Rulesの削除
- Sharing Rulesの再計算
- 非アクティブユーザーの確認
- Portal Roleの整合性確認
新規ブランド追加時のチェックリスト
- Contactレコード作成
- Userレコード作成
- Portal Role設定
- Vendor Brand の Owner_Account__c 設定
- テストレコード作成・アクセス確認
- 他ブランドからアクセス不可を確認
- Chatterで@mention可能を確認
関連ドキュメント
- 全体像: Salesforce概要 - システム全体の理解
- 詳細: 共有設定アーキテクチャ - 共有設定の仕組み
- 実装: 共有メカニズム - 具体的な実装方法
更新履歴
- 2026年1月21日: 初版作成