imanageworksite-sdk

Failure creating document in Matter Centric HP/Autonomy WorkSite (iManage) DMS


I'm trying to create a document in the DMS, set some attributes, then check it in. This worked great until we disallowed flat-space filing. Now I have to specify a workspace folder before I can save, but I can't seem to figure out how to do so.

lcDoc = mcDatabase.CreateDocument()
lcDoc.Security.DefaultVisibility = imSecurityType.imView
lcDoc.Security.GroupACLs.Add("INFORMATION_TECHNOLOGY", imAccessRight.imRightAll)
lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileDescription, FileName)
lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileAuthor, msUserID)
lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileOperator, msUserID)
lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileType, "ANSI")
lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileClass, "ADMIN")
lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileCustom1, ClientID)
lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileCustom2, MatterID)
lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileCustom10, "060")
lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileCustom14, DMSServerName)        

' Fails here with error: [Folder ][AddDocument ]Operation requested on a record that     does not exist.
DirectCast(loFolder, NRTFolder).AddDocument(DirectCast(lcDoc, NRTDocument))

' If I comment out the line above, this line returns a failure:
' This operation is currently not available due to flatspace filing restrictions.
Dim lcResults As IManCheckinResult = lcDoc.CheckInWithResults(lsFilePath,     imCheckinDisposition.imCheckinNewDocument, imCheckinOptions.imDontKeepCheckedOut)

I'm struggling to find the right API document that gives this answer.


Solution

  • OK, so the solution was on an interface I didn't know about, but found the COM developer's guide on page 81.

            lcDoc = mcDatabase.CreateDocument()
            'lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileLocation, loFolder.ObjectID)
            lcDoc.Security.DefaultVisibility = imSecurityType.imView
            lcDoc.Security.GroupACLs.Add("APPLICATIONSDEVELOPMENTALL", imAccessRight.imRightAll)
            lcDoc.Security.GroupACLs.Add("INFORMATION_TECHNOLOGY", imAccessRight.imRightAll)
            ' [04/21/2014 KB] Changed this to use the specified name instead of a hard coded one.
    
            ' lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileDescription, String.Format("iManageAPI:{0}", "Test Create Document"))
            lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileDescription, FileName)
            lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileAuthor, msUserID)
            lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileOperator, msUserID)
            lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileType, "ANSI")
            lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileClass, "ADMIN")
            lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileCustom1, ClientID)
            lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileCustom2, MatterID)
            lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileCustom10, "060")
            lcDoc.Profile.SetAttributeByID(imProfileAttributeID.imProfileCustom14, DMSServerName)
            ''loFolder.AddDocument(lcDoc) 'Add document to folder
            'DirectCast(loFolder, NRTFolder).AddDocument(DirectCast(lcDoc, NRTDocument))
            'Dim lcResults As IManCheckinResult = lcDoc.CheckInWithResults(lsFilePath, imCheckinDisposition.imCheckinNewDocument, imCheckinOptions.imDontKeepCheckedOut)
            lcResults = DirectCast(lcDoc, IManDocument3).
                CheckInExToFolderAsNewDocumentWithResults(lsFilePath, imCheckinOptions.imDontKeepCheckedOut, loFolder,
                                                          imHistEvent.imHistoryNew,
                                                          System.Reflection.Assembly.GetExecutingAssembly().FullName,
                                                          "", "")