ソース NSF から宛先 NSF にドキュメントをコピーするアプリケーションを C# で作成しました。宛先 NSF は、ソース NSF に基づいて、すべての設計要素を保持する空のシェルです。Lotus Notes 8.5.3 を使用していますが、Domino サーバーに接続していません。
このアプリケーションを使用して、ソース NSF を小さなチャンクに分割します。目標は、自動化された (eDiscovery) システムによって効果的に処理できる宛先 NSF を作成することです。できるだけ多くのメタデータが保持されるようにする必要があります。
私の既存のコードは、(1) フォルダー情報を失うことを除いて、これらの目標を満たしています。ドキュメントをコピーすると、すべてのフォルダが空になります。(2) すべてのドキュメントは、ソースで未読であっても、既読としてマークされます。
コード C#
//Establish session
NotesSession ns = new Domino.NotesSessionClass();
ns.Initialize("");
//Open source NSF
NotesDatabase nd = ns.GetDatabase("", "test.nsf", false);
//Open destination NSF.
//Assume that all design elements of nd2 are identical to those of nd
NotesDatabase nd2 = ns.GetDatabase("", "test2.nsf", false);
//Create view that returns all documents.
NotesView nView2 = nd.GetView("$All");
nd.CreateView("All-DR", "SELECT @ALL", nView2, false);
NotesView nView = NotesConnectionDatabase.GetView("All-DR");
//Loop through entries in the new view
NotesViewEntry nvec = nView.AllEntries;
nve = nvec.GetFirstEntry();
for (int j = 1; j <= intEntryCount; j++)
{
if (j == 1)
{
nve = nvec.GetFirstEntry();
}
else
{
nve = nvec.GetNextEntry(nve);
}
//Copy document to second database.
NotesDocument ndoc = nd.GetDocumentByUNID(nve.UniversalID);
ndoc.CopyToDatabase(nd2);
}
//End loop.
//All documents are copied.
その結果、すべてのドキュメントがコピーされた宛先 NSF が作成されます。すべてのフォルダーもそこにあると仮定します。ただし、どのドキュメントもフォルダにありません。すべてのドキュメントが既読としてマークされます。
フォルダーと未読の問題を修正するにはどうすればよいですか?