Thank you daniel and norman. Your suggestions worked great!
Below is the implementation I used.
ViewModel:
// Check document for GUID custom propery and assign if missing.
documentGUID = Utilities.GetDocumentGUID();
if(documentGUID == null)
{
Utilities.SetDocumentGUID();
var customizationSection = new Autodesk.AutoCAD.Customization.CustomizationSection();
// Save the document after assigning a custom GUID property.
customizationSection.Save();
documentGUID = Utilities.GetDocumentGUID();
}
Helper Methods:
public static string GetDocumentGUID()
{
// Check if custom property exists.
var document = Application.DocumentManager.MdiActiveDocument;
System.Collections.IDictionaryEnumerator customProperties = document.Database.SummaryInfo.CustomProperties;
while(customProperties.MoveNext())
{
var key = customProperties.Key.ToString();
if(key == "DOCUMENT_GUID")
{
return customProperties.Value.ToString();
}
}
return null;
}
public static void SetDocumentGUID()
{
// Create custom propery
var document = Application.DocumentManager.MdiActiveDocument;
var infoBuilder = new DatabaseSummaryInfoBuilder();
var GUID = System.Guid.NewGuid().ToString();
infoBuilder.CustomPropertyTable.Add("DOCUMENT_GUID", GUID);
using (DocumentLock docLock = document.LockDocument())
{
document.Database.SummaryInfo = infoBuilder.ToDatabaseSummaryInfo();
}
}
More info on creating custom properties:
https://forums.autodesk.com/t5/net/create-document-custom-property/td-p/11763555