Manage Learn to apply best practices and optimize your operations.

Remove orphaned Lotus Notes documents on Domino databases with a 'virtual delete'

Learn about a 'virtual delete' LotusScript solution that will remove orphaned and extraneous Lotus Notes documents on your Domino databases.

Related information from SearchDomino.com:
Tip: Delete documents over the Web using Ajax and JavaScript

Tutorial: 30 LotusScript tips

LotusScript FAQs

LotusScript Reference Center

In this tip, I explain a "virtual delete" solution I developed in LotusScript that removes orphaned and extraneous Lotus Notes documents from my Domino databases.

I am currently developing and maintaining multiple Lotus Notes Domino databases. I created this workaround to help me delete Lotus Notes documents in those databases that were created by mistake, bounced back to the creator, etc.

VIEW MEMBER FEEDACK TO THIS TIP

I originally wanted to assign delete privileges to address this issue, but that can only be done through the access control list (ACL) at the Lotus Notes database level -- and I don't think that is a good idea.

To implement my "virtual delete" solution, I created three hidden fields on all Lotus Notes documents during the development. They are as follows:

  • IsDeleted (default value = NO)
  • DeletedBy (default value = NULL)
  • DeletedDate (default value = NULL)

Although the first field is all you really need, I like to know who deleted the Lotus Notes document and when they did it.

Additionally, I created a user action button that populates the above fields using LotusScript. The IsDeleted field is set to "YES" and the others are self-explanatory. All of the user view selection formulas contain IsDeleted = NO. One hidden admin view is used to list all of the deleted Notes documents.

If a Lotus Notes user accidentally deletes a document, I can then use my action button to clear all three fields and restore the Lotus Notes document back to its original state.

Sub Click(Source As Button)
 
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
 
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.CurrentDocument
 
' Make sure document is in edit mode.
If Not uidoc.EditMode Then
 uidoc.EditMode = True     
End If
     
' Get the actual username of the 
person processing this action button.
Dim nam As NotesName
Dim strCurrentUser As String

Set nam = session.CreateName
(session.UserName)
' convert to the common name format
strCurrentUser = nam.Common

Dim dateTime As New NotesDateTime( "" )
Call dateTime.SetNow
 
Dim strDateAndTime As String 
strDateAndTime = Cstr(dateTime.LocalTime)
 
' Set the Deletion fields.
Call uidoc.FieldSetText( "IsDeleted",
 "YES" )
Call uidoc.FieldSetText( "DeletedBy", 
strCurrentUser )
Call uidoc.FieldSetText( "DeletedDate", 
strDateAndTime )
     
Call uidoc.Save
Call uidoc.Close

End Sub

MEMBER FEEDBACK TO THIS TIP

Here is some Formula language code to the rescue:

REM {make sure document is in EDIT mode}; 
@Command([EditDocument]; "1"); 

FIELD IsDeleted := "Yes"; 
FIELD DeletedBy := @Username; 
REM {maintain a DATETIME value 
(not a string) for date-related matters}; 
FIELD DeletedDate := @Now; 

@Command([FileSave]); 
@Command([FileCloseWindow]) 

—Manfred P.

Do you have comments on this tip? Let us know.

This tip was submitted to the SearchDomino.com tip library by member Michael List. Please let others know how useful it is via the rating scale below. Do you have a useful Lotus Notes, Domino, Workplace or WebSphere tip or code snippet to share? Submit it to our monthly tip contest and you could win a prize.

This was last published in September 2007

Dig Deeper on Lotus Notes Domino Database Management

Start the conversation

Send me notifications when other members comment.

By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Please create a username to comment.

-ADS BY GOOGLE

SearchWindowsServer

Search400

  • iSeries tutorials

    Search400.com's tutorials provide in-depth information on the iSeries. Our iSeries tutorials address areas you need to know about...

  • V6R1 upgrade planning checklist

    When upgrading to V6R1, make sure your software will be supported, your programs will function and the correct PTFs have been ...

  • Connecting multiple iSeries systems through DDM

    Working with databases over multiple iSeries systems can be simple when remotely connecting logical partitions with distributed ...

SearchDataCenter

SearchExchange

SearchContentManagement

Close