2015-02-10_19-00-51
I recently got this message when trying to replicate a Lotus Notes / XPage database that I had been working on. I had already ticked the “Allow More fields in database” option.
The application does use documents with programmatically generated fields but when I ran some code to count the notesitems in the documents the largest document had 750 fields.
After some time I came across the itemdef.exe application from IBM. This lists the contents of the “UNIK” table in the nsf database. The UNIK table is essentially a list of all of the database fields – and if it is > 64K gets full.
Using this tool showed that although no one document had too many fields there were @30k documents which had a unique programmatically generated field called SCUL-xxxx => the database was trying to manage > 30K fields.
The cause of the problem was using this formula without the quotes on the first parameter
@SetField(“DocUNID_Tx”;HeaderRecordID_Tx);
I did find it funny that the culprits initials are clearly recorded 🙂
These are the steps to using to tool :
1. Download it from http://www-01.ibm.com/support/docview.wss?uid=swg24004373
2. Extract itemdef.exe to the same place as notes.exe and read the read.me
3. Open a dos window
4. Change Directory to the directory above. in my case cd C:\Program Files (x86)\IBM\Notes
5. Run the command in its most basic form. This will probably show that the UNIK table is full.
>itemdef -b /public/demo/aw-poc/nsf
2015-02-10_18-26-25
6. Run the more verbose command but pipe the output to a text file.
>itemdef -f /public/demo/aw-poc/nsf > “D:\output.txt”
This will show you all of the field names and which documents use the fields ( if there are less than 5 )
2015-02-10_18-58-17
7. Retrieve the documents using a code similar to that below.

Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Set db = session.currentdatabase
Set doc = db.Getdocumentbyid(“2B01E”)
call doc.putinfolder(“example”,True)