Manage Learn to apply best practices and optimize your operations.

Copy names.nsf data and manipulate views

Create an agent to run in a custom target database with views based on names.nsf data.

View member feedback to this tip.

My company needed to display data from the public address book in custom views. Instead of creating these views inside the public address book, I created an agent to run in a custom target database with views based on names.nsf data.

The agent deletes all documents in the target database and then retrieves every record in the public address book. I run this agent on schedule each night. Be sure to run it on "All Documents in a database."

I like this agent because you don't have to worry about problems occurring when you upgrade the public address book. Of course, this code can apply to any database you specify.

  Code: Sub Initialize
 Dim session As New NotesSession
 Dim targetdb As NotesDatabase
 Dim sourcedb As NotesDatabase
 Dim sourcecollection As 
 Dim dbcollection As NotesDocumentCollection
 'sets the source and target databases 
 Set targetdb = session.CurrentDatabase
 Set sourcedb = session.GetDatabase
( "YOURSERVERNAME", "names.nsf" ) 
 'removes existing documents from the
 target database
 Set dbcollection = targetdb.AllDocuments
 Call dbcollection.RemoveAll(True)
 'Loop through all documents in the source
 database and copy them into the target
 Set sourcecollection = sourcedb.AllDocuments
 Set doc = sourcecollection.GetFirstDocument
 While Not doc Is Nothing
  Call doc.CopyToDatabase( targetdb )
  Set doc = sourcecollection.
End Sub


Well, basically it's a good idea not to change the names.nsf design. Alas, there is a drawback. On deleting an and re-retrieving the complete data every night you create lots of replication stubs. Since they are deleted only after 30 days (per default) the database will contain an amount of 30 times the data as replication stubs. This will be a major problem if it comes to replication and consistency checks.

—Joachim N.


It is no problem to create additional custom design protected views in the directory even it is derived from the directory template. The only rule to follow is to not modify existing design elements. Adding and then design-protecting additional design elements (especially views) is no problem.

Regarding the code: Each time the agent runs to delete all the existing docs and recreate them new in the target database results in massive deletion stubs and inefficient replication.

—Dietmar D.


You may also want to look at the Directory Catalog functionality and add your design elements into that database. It is highly compact (not sure how large a directory you are digesting) and it is designed to be a separate view into your address book. Same caveats for design protecting, but you are taking advantage of Lotus' code instead of or in addition to your own, so you may be better insulated from design changes.


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

This tip was submitted to the tip exchange by member Steve Pitcher. Please let others know how useful it is via the rating scale below. Do you have a useful Notes/Domino tip or code to share? Submit it to our monthly tip contest and you could win a prize and a spot in our Hall of Fame.

Dig Deeper on Lotus Notes Domino Agents



  • iSeries tutorials'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 ...