Hello,

I made a mistake when i was working on my lotus workflow application. I deleted 9 documents’ cover document 🙂

I created a script to solve this problem and want to share with the world.

Create an agent –> Trigger : On Event / Action Menu Selection , Target : All Selected Documents

Sub Initialize()

	Dim oWorkspace As New NotesUIWorkspace
	Dim oSession As New NotesSession
	Dim oDatabase As NotesDatabase
	Dim oCollection As NotesDocumentCollection, oCoverCollection As NotesDocumentCollection
	Dim oSelectedDoc As NotesDocument
	Dim oOriginalCoverDoc As NotesDocument
	Dim oNewCoverDoc As NotesDocument

	' Authorization Check
	Dim v1 As Variant

	v1 = Evaluate ( {@If ( "[NotesDesigner]" *= @UserRoles; 1; 0 )})

	If v1 ( 0 ) = 0 Then
		MessageBox "You are not authorized  !", 48, "Attention !"
		Exit Sub
	End If
	' Authorization Check

	Set oDatabase = oSession.CurrentDatabase
	Set oCollection = oDatabase.UnprocessedDocuments

	' Kontrol
	If oCollection.Count = 0 Then Exit Sub

	' Kontrol
	If oCollection.Count > 1 Then
		MessageBox "Please select only 1 (one) Binder Document !", 48, "Attention !"
		Exit Sub
	End If

	' Get Binder Document which has missing cover document
	Set oSelectedDoc = oCollection.GetFirstDocument

	' YOUR_VIEW -> You can create a view which can contains original binder & cover document (to be source) and binder document which has missing cover document
	Const VIEWALIAS = "YOUR_VIEW"
	Const TITLE = "Cover Document Selection - to be Copied"
	Const PROMPT = "Select an original cover document to be copied !"

	Set oCoverCollection = oWorkspace.PickListCollection ( 1, False, oDatabase.Server, oDatabase.FilePath, VIEWALIAS, TITLE, PROMPT )
	If oCoverCollection.Count = 0 Then
		MessageBox "You have to select a cover document !", 48, "Attention !"
		Exit Sub
	End If

	Set oOriginalCoverDoc = oCoverCollection.GetFirstDocument

	If oOriginalCoverDoc.Getitemvalue ( "ACTIVITYIDOS" ) ( 0 ) <> oSelectedDoc.Getitemvalue ( "ACTIVITYIDOS" ) ( 0 ) Then
		MessageBox "ACTIVITYIDOS has to be same betweeen selected binder document & selected cover document which'll be copied. !", 48, "Error !"
		Exit Sub
	End If

	Set oNewCoverDoc = oOriginalCoverDoc.Copytodatabase ( oDatabase )

	' InstanceOS
	oNewCoverDoc.Replaceitemvalue "InstanceOS", oSelectedDoc.Getitemvalue ( "InstanceOS" ) ( 0 )

	' BinderDocIDOS
	oNewCoverDoc.Replaceitemvalue "BinderDocIDOS", oSelectedDoc.Universalid
	oSelectedDoc.Replaceitemvalue "BinderDocIDOS", oSelectedDoc.Universalid

	' FolderIDOS
	oNewCoverDoc.Replaceitemvalue "FolderIDOS", oNewCoverDoc.Universalid
	oSelectedDoc.Replaceitemvalue "FolderIDOS", oNewCoverDoc.Universalid

	' INSTANCEIDOS
	oNewCoverDoc.Replaceitemvalue "INSTANCEIDOS", oNewCoverDoc.Universalid + "FirstHost"
	oSelectedDoc.Replaceitemvalue "INSTANCEIDOS", oNewCoverDoc.Universalid + "FirstHost"

	' JOINDOCIDOS
	oNewCoverDoc.Replaceitemvalue "JOINDOCIDOS", oSelectedDoc.Getitemvalue ( "ACTIVITYIDOS" ) ( 0 ) + oSelectedDoc.Getitemvalue ( "INSTANCEIDOS" ) ( 0 ) + oNewCoverDoc.Universalid
	oSelectedDoc.Replaceitemvalue "JOINDOCIDOS", oSelectedDoc.Getitemvalue ( "ACTIVITYIDOS" ) ( 0 ) + oSelectedDoc.Getitemvalue ( "INSTANCEIDOS" ) ( 0 ) + oSelectedDoc.Universalid

	' MainDocIDOS
	oNewCoverDoc.Replaceitemvalue "MainDocIDOS", oSelectedDoc.Universalid

	' SOURCEDOCIDOS
	oNewCoverDoc.Replaceitemvalue "SOURCEDOCIDOS", oNewCoverDoc.Universalid
	oSelectedDoc.Replaceitemvalue "SOURCEDOCIDOS", oSelectedDoc.Universalid

	Call oNewCoverDoc.Save ( True, False )
	Call oSelectedDoc.Save ( True, False )

	Messagebox "Done !"

End Sub

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.