ADVERTISEMENT

【Salesforce】添付ファイルからFilesへの移行が想定と違う時の監査ログと履歴で追う方法

【Salesforce】添付ファイルからFilesへの移行が想定と違う時の監査ログと履歴で追う方法
🛡️ 超解決

Salesforceでは、従来の添付ファイル(Attachmentオブジェクト)からFiles(ContentDocument)への移行が推奨されていますが、実際に移行を実行してみると「移行したファイルの数が合わない」「特定のファイルだけ移行されていない」「ファイルの所有者やアクセス権が想定と異なる」といった問題が発生することがあります。こうした「想定と違う」状態に遭遇したとき、原因を特定するには監査ログとファイルの履歴を追跡する方法が有効です。この記事では、具体的な確認手順とともに、問題の切り分け方を解説します。

【要点】この記事で確認すること

  • 最初に見る場所: 移行ジョブの実行結果レポート(Data Exportまたは移行ツールのログ)、または監査ログの「Attachment」関連イベント
  • 切り分けの軸: 移行元の添付ファイルの有無、移行先のFilesの作成日時と所有者、アクセス権の継承設定
  • 注意点: 監査ログの保持期間(通常180日)と権限(「すべてのデータの参照」または「監査ログの表示」が必要)を事前に確認してください。管理者以外のユーザーが監査ログを参照できない場合は、管理者に依頼する必要があります。

ADVERTISEMENT

添付ファイルからFilesへの移行でよくある「想定と違う」パターン

移行が想定通りに完了しなかった場合、まずはどのようなパターンがあるのかを把握しておくと原因特定がスムーズになります。代表的なケースを以下の表にまとめました。

問題の内容 考えられる原因 確認すべきログ・履歴
移行したファイル数が元の添付ファイル数より少ない 移行ツールの制限(API使用量上限、バッチサイズ)、添付ファイルの削除、権限不足 移行ジョブのエラーログ、監査ログ(AttachmentDeletedEvent)
特定のレコードのファイルだけ移行されていない 添付ファイルの親レコードがアーカイブされている、または削除されていた 監査ログ(AttachmentRecycledEvent)、ContentDocumentLinkの有無
移行後のファイルの所有者が想定と異なる 移行ツールの所有者設定オプション、ファイル作成時の実行ユーザー ContentVersionの作成者・最終更新者、監査ログ(ContentVersionCreatedEvent)
ファイルの共有設定(アクセス権)が正しく継承されていない 添付ファイルは親レコードの共有ルールに依存、Filesは個別の共有設定が必要な場合がある ContentDocumentLinkの共有設定、監査ログ(ContentDocumentLinkEvent)
ファイル名や拡張子が変わった 移行時にファイル名の変換ルールが適用された、または同名ファイルの重複避け処理 ContentVersionのFileExtension、Title、監査ログ(ContentVersionUpdatedEvent)

移行の問題を追跡するための監査ログの確認方法

Salesforceの監査ログは、添付ファイルやFilesに対する操作の履歴を追跡する重要な手段です。移行の前後でどのようなイベントが発生したかを確認することで、問題の発生タイミングや原因を絞り込めます。

移行に関連する監査ログのイベントタイプ

監査ログでは、以下のイベントタイプに関連するレコードを確認すると効果的です。

  • AttachmentCreatedEvent:添付ファイルが作成されたイベント(移行元のファイルを確認するために使用)
  • AttachmentDeletedEvent:添付ファイルが削除されたイベント(移行中に削除されたかどうか)
  • AttachmentRecycledEvent:添付ファイルがごみ箱に移動されたイベント
  • ContentVersionCreatedEvent:Files(ContentVersion)が作成されたイベント(移行後のファイル作成を確認)
  • ContentVersionUpdatedEvent:Filesが更新されたイベント(ファイル名や内容の変更)
  • ContentDocumentLinkCreatedEvent:ファイルがレコードにリンクされたイベント(共有設定)

監査ログの表示手順

  1. Salesforceの設定画面(歯車アイコン)から「クイック検索」に「監査ログ」と入力し、「監査ログの表示」をクリックします。
  2. 「イベントタイプ」フィルタで、上記のイベントタイプ(例:AttachmentDeletedEvent)を選択します。
  3. 「時間範囲」を移行が行われた前後に設定します。移行日時が不明な場合は、少し広め(例:前日から翌日)にしておきます。
  4. 「ユーザー」フィルタを、移行を実行したユーザーに設定します。複数のユーザーが関与する場合は、すべてを含めます。
  5. 「検索」を実行し、結果をCSVでエクスポートします。エクスポートしたデータをExcelなどでフィルタリングし、問題のファイルに関連するレコードを特定します。
  6. 特定したイベントの「時間」「ユーザー」「レコードID」「詳細」を確認し、移行想定と実際の動作の違いを特定します。

監査ログにアクセスするには、ユーザーに「すべてのデータの参照」または「監査ログの表示」権限が必要です。権限がない場合は、システム管理者に依頼してログを取得してもらってください。

ファイル履歴(ContentVersion)を使った変更追跡

監査ログがイベント単位の記録であるのに対し、ファイルの版(ContentVersion)の履歴は各ファイルの細かい変更を追跡できます。移行後にファイルの内容やプロパティが想定と異なる場合に役立ちます。

ContentVersionのフィールド履歴を確認する

Salesforceでは、ContentVersionオブジェクトの特定のフィールドに対してフィールド履歴の追跡を有効にできます。デフォルトでは、「Title」「FileExtension」「VersionData」などは履歴が取られない場合があるため、事前に設定が必要です。移行前にこの設定が有効になっていれば、以下の手順で確認できます。

  1. 問題のファイルのレコードページを開き、関連リストの「ファイル」セクションから該当ファイルをクリックします。
  2. ファイルの詳細ページで「バージョン」タブをクリックします。
  3. 各バージョンの「作成者」「作成日」「ファイル名」「ファイルサイズ」を確認します。移行ツールが作成したバージョンと、元の添付ファイルの情報を比較します。
  4. さらに詳細なフィールド履歴を確認するには、設定の「アクティブなフィールド履歴の追跡」からContentVersionオブジェクトの履歴レポートを作成します。

SOQLクエリによる直接確認

開発者コンソール(またはWorkbench)を使用して、以下のようなクエリを実行すると効率的です。

SELECT Id, Title, FileExtension, ContentSize, CreatedDate, CreatedById, LastModifiedDate, LastModifiedById FROM ContentVersion WHERE ContentDocumentId = '問題のContentDocumentのID' ORDER BY CreatedDate ASC

このクエリで、ファイルの作成日時や作成者を確認し、移行ツールが作成したバージョンと元の添付ファイルの作成日時と一致するかどうかをチェックします。一致しない場合は、移行ツールがファイルを再作成した可能性があります。

監査ログとファイル履歴を組み合わせた原因特定の手順

実際に問題が発生した場合、監査ログとファイル履歴の両方を使い、以下のステップで原因を絞り込みます。

  1. 移行対象の添付ファイルリストを取得する
    SOQLクエリ(SELECT Id, Name, ParentId, CreatedDate FROM Attachment WHERE ParentId IN (対象レコードのIDリスト))で移行元の添付ファイルをすべてエクスポートし、ベースラインとします。
  2. 移行後のFilesリストを取得する
    ContentDocumentとContentDocumentLinkをクエリし、同じ親レコードにリンクされているファイルを抽出します。
  3. 差分をリストアップする
    1と2を比較し、移行元にあって移行先にないファイル、またはその逆を特定します。
  4. 監査ログで該当ファイルのイベントを確認する
    差分のあるファイルのIDをもとに、監査ログで「AttachmentDeletedEvent」や「ContentVersionCreatedEvent」を検索します。移行時刻に該当イベントがあるか確認します。
  5. ファイル履歴でバージョンを確認する
    移行先のFilesのContentVersionを確認し、作成日時が移行実行時刻と一致するか、作成者が移行ツールのユーザーかを確認します。
  6. アクセス権の設定を確認する
    ContentDocumentLinkの共有タイプ(V:参照可、C:編集可)が正しいか、監査ログのContentDocumentLinkCreatedEventで設定内容を確認します。
  7. 原因を特定し、再移行または修正対応を実施する
    例えば、添付ファイルが削除されていた場合は、ごみ箱から復元して再移行するか、別の方法でファイルを取得します。所有者が異なる場合は、移行ツールの設定で所有者を指定し直します。

よくある質問(FAQ)

Q: 監査ログにAttachmentDeletedEventが表示されないのですが、添付ファイルはどこに消えたのですか?

A: 監査ログはデフォルトで180日間しか保持されません。移行から時間が経過している場合や、ログの設定が有効になっていない可能性があります。また、添付ファイルが物理的に削除されたのではなく、ごみ箱に移動された場合はAttachmentRecycledEventを確認してください。それでも見つからない場合は、Salesforceサポートに過去のログ復元を依頼することも検討します。

Q: ファイルの履歴を確認するために、移行前に準備しておくべき設定はありますか?

A: ContentVersionオブジェクトのフィールド履歴の追跡を有効にしておくことをお勧めします。設定画面の「フィールド履歴の追跡」から、ContentVersionの「Title」「FileExtension」「ContentSize」「VersionData」などを追加してください。ただし、VersionData(ファイルの中身)の履歴はパフォーマンスに影響するため、必要に応じて選択します。

Q: 移行ツールで正常に完了したというメッセージが出たのに、ファイルが存在しません。どうすればよいですか?

A: まず、対象の親レコードの「ファイル」関連リストを確認してください。表示されていない場合は、監査ログでContentDocumentLinkCreatedEventが発生しているか確認します。発生していない場合、移行ツールがファイル作成に失敗した可能性があります。移行ツールのエラーログを確認し、API使用量制限や権限エラーがないか調べてください。発生している場合でも、リンク先のレコードIDが誤っている可能性があるため、イベントの詳細を確認します。

Q: 監査ログの参照権限がありません。どうすれば見られますか?

A: システム管理者に依頼して、「監査ログの表示」権限を付与してもらうか、管理者自身がログをエクスポートして共有してもらってください。または、代わりにEventLogFileオブジェクトをSOQLでクエリする方法もありますが、こちらにも「すべてのデータの参照」権限が必要です。

まとめ

添付ファイルからFilesへの移行で想定と異なる結果が生じた場合、監査ログとファイル履歴を活用することで原因を特定できます。監査ログはイベントの発生有無と時刻を、ファイル履歴はバージョンごとのプロパティを提供し、両者を組み合わせることで「何が」「いつ」「誰によって」行われたかを明らかにできます。移行前には監査ログの保持期間や権限設定を確認し、必要に応じてフィールド履歴の追跡を有効にしておくことが重要です。問題が発生した際は、慌てずに本記事の手順を順に試すことで、効率的に原因を切り分け、次のアクションを決定してください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

ADVERTISEMENT