"Skin" your Notes Workspace

Friday 25th April, 2008
For those who haven't seen this, you can apply a "skin" theme to your Notes Workspace page.  
http://blog.panagenda.com/pub/panablog.nsf/d6plinks/FLOR-7DRBHC

It's also very easy to customize.
http://blog.panagenda.com/pub/panablog.nsf/d6plinks/FLOR-7DRDTE

skinworkspace.JPG

Comments [0]

How to control the Fan speed on your Thinkpad

Thursday 20th March, 2008
I recently kept experiencing my Thinkpad T60p getting very hot and occasionally locking up when playing certain games.  I found a program that would allow me to control of the fan speed so I can increase the RPMs.  

http://sourceforge.net/projects/tp4xfancontrol/

Please read the readme.txt file first as the developer explains some of the settings in the INI file.

Comments [1]

Technote 1099635 - Which Domino Server databases have replica IDs related to names.nsf

Monday 10th March, 2008
I came across this technote and did not realize the pattern that exists for certain database replica IDs that are similiar to Domino Directory's replica ID.  Thought I would share.

http://www-1.ibm.com/support/docview.wss?uid=swg21099635

The replica IDs of some Lotus Domino® server databases are related to that of the Domino Directory (names.nsf). Which ones are related and which ones are not?

The following is a list of Domino server databases that have a known replica ID based on the replica ID of the domain's Domino Directory:

catalog.nsf
events4.nsf
statrep.nsf
ddm.nsf
admin4.nsf
billing.nsf
vpuserinfo.nsf (Sametime Authorization Database)
activity.nsf

Example:
names.nsf has a replica ID of: 852564AC:004EBCCF
catalog.nsf has a replica ID of:         852564AC:014EBCCF
events4.nsf has a replica ID of: 852564AC:024EBCCF
admin4.nsf has a replica ID of: 852564AC:034EBCCF
statrep.nsf has a replica ID of: 852564AC:044EBCCF


Notice that the similarity is in the last six (6) characters of the replica ID (4EBCCF in this example). The distinguishing characters are the first two (2) characters of the unique part of the replica ID (01, 02, 03, 04 in this example), such as 852564AC:044EBCCF.

Mail.box which is built automatically upon server startup has a randomly generated replica ID, unrelated to that of names.nsf, as does certlog.nsf which must be built manually.

In Lotus Notes®/Domino 5 releases:
Only the admin4.nsf and catalog.nsf replica IDs are similar to the names.nsf replica ID. This differs from previous versions in which events4.nsf and statrep.nsf were also similar.

In release 5, you may also notice that the replica IDs of the following databases are similar to one another (but not necessarily similar to names.nsf):

log.nsf
statrep.nsf
statmail.nsf
reports.nsf
certsrv.nsf

With these five databases, all but the last four (4) characters are identical, for example:
log.nsf has a replica ID of: 852567F5:003C3954
statrep.nsf has a replica ID of: 852567F5:003C8D04

Comments [0]

Do you Bleed Yellow?

Friday 7th March, 2008
A fellow NotesNerd told me about this site and I wanted to share it with everyone else.

Do you BLEED YELLOW?
www.bleedyellow.com

This was also mentioned on Alan's blog.
http://www.alanlepofsky.net/alepofsky/alanblog.nsf/dx/chat-with-others-whom-bleed-yellow

Comments [0]

LScript to Check for Domino Server "Slow" Downs

Friday 1st February, 2008
Have you ever had end users report the Domino Server is responding slow but by the time they call you the Server is no longer slow?  

I recently encountered this issue with a customer and wrote the following LotusScript to try and prove when a server is responding slow.  The LotusScript will go into a Loop trying to open a database on the server, report the time duration to open in seconds and then sleep for so many seconds.  The idea is every 5 seconds you try to open the names.nsf, record how long it takes and do this 120 times.  So for a 10 minute window you now have the time it took to open a database every 5 seconds.  If you set the database to run for a longer period of time, say 1 hour, you could possible identify server slow downs.

Sub Initialize
        Dim session As New NotesSession
        Dim db As NotesDatabase
        Dim doc As NotesDocument
        Dim db2 As NotesDatabase
        Dim ws As New NotesUIWorkspace
        Dim mystart As Long
        Dim myend As Long
        Dim mytime As String
        Dim mybatchtime As String
        Dim myserver As String        
        Dim stopthis As Integer
        Dim counter As Integer
        Dim sleeptime As Integer
        Dim overduration As Integer
       
        Set db = session.CurrentDatabase
        counter = 0
        stopthis = 1
        mybatchtime = Now
       
'Define All Variables Here if Hardcoded
'        myserver = "BROWNSERV1/HOME"        'Server Name to poll
'        mydbtoget = "names.nsf"                'Database to Open
'        counter2 = 5                                'Number of Iterations to run
'        sleeptime = 2                                'Time to sleep between each iteration
'        overduration = 5                                'Time to flag as taking to long to open        
       
'Define All Variables Here if Dynamic
        myserver = Inputbox("Enter Canonical Server Name to poll")
        mydbtoget = Inputbox("Enter database to open on server - suggest names.nsf")
        counter2 = Inputbox("Enter number of iterations to run through")
        sleeptime = Inputbox("Enter how many seconds to pause between iterations")
        overduration = Inputbox("Enter the amount of time in seconds that is to long when opening the database to set an additional flag")
       
PICKUPHERE:
       
        Do Until stopthis = 0
                'If you answer Yes to the Prompt in the IF statement below, it returns 1 and loops, if you answer No it returns 0 and stops
                mytime = Now
                mystart = Timer        
                Set db2 = session.GetDatabase(myserver,mydbtoget)
               
                If db2.IsOpen = "False" Then
                        Set doc = db.CreateDocument
                        doc.myserver = "FAILED"
                        doc.mybatchtime = "FAILED"
                        doc.mytime = "FAILED"
                        doc.mystart = "FAILED"
                        doc.myend = "FAILED"
                        doc.myduration = "FAILED"                        
                        doc.Form = "TrackResponse"
                        Call doc.Save( True, True )
                        End
                End If
                myend = Timer
                Call db2.Close
                myduration = myend - mystart
                'Move the "If myduration > overduration Then" 8 lines down to here if you want to only create a document when you exceed the time
                Set doc = db.CreateDocument
                doc.myserver = myserver
                doc.mybatchtime = mybatchtime
                doc.mytime = mytime
                doc.mystart = mystart
                doc.myend = myend
                doc.myduration = myduration
                If myduration >= overduration Then
                        doc.durationflag = "1"
                End If
                doc.Form = "TrackResponse"
                Call doc.Save( True, True )
               
                counter = 1 + counter
                If counter = counter2 Then
                        Print "Agent is sleeping for " & sleeptime & " seconds - finished iteration " & counter
                        stopthis = ws.Prompt(PROMPT_YESNO,"Continue?", "Do you wish to continue for another " & counter2 & " interations?")
                        counter = 0
                        Goto PICKUPHERE
                End If
               
                Print "Agent is sleeping for " & sleeptime & " seconds - finished iteration " & counter
                Sleep sleeptime
        Loop
       
End Sub

Comments [0]

SNTT - How to find Person Docs without Mail Files

Thursday 24th January, 2008
If you have ever experienced a problem with old Person Documents replicating back into your Domino Directory, you know how much of a pain it can be to identify them.  Here's a quick LotusScript that will check for the mail file specified in the Person Document and create a document in the database if either the mail file can not be found or if the User ID the agent is ran under doesn't have access to the mail file.

The agent can either flag the Person Document by adding a field to it.  This will allow you to create a simple view and select all the Person Documents at once.  It also creates a document in the database the agent is ran from so you can go back and manually check each person document.

Sub Initialize
       On Error Goto Errorhandler        
       
       Dim session As New notessession
       Dim db As notesdatabase
       Dim dbNAB As notesdatabase
       Dim dbmail As notesdatabase
       Dim view As notesview
       Dim pdoc As notesdocument
       Dim logdoc As notesdocument
       Dim errcount As Integer
       Dim maxcount As Integer
       errcount = 0
       maxcount = 0
       
       Set db = session.currentdatabase
       Set dbNAB = session.GetDatabase("SERVERNAME/HERE","names.nsf")                
       'Hardcode Server Name and Domino Directory Here
       
       Set pdocview = dbNAB.GetView("People")                
       'Get Hold on People View from NAB
       pdocview.AutoUpdate = False
       
       Set pdoc = pdocview.getfirstdocument()                        
       'Get First Person Document from NAB
       
       Do While Not(pdoc Is Nothing)                                                
       'Do While and get Mail Server and Mail File from PDOC
               maxcount = maxcount + 1
               '>>>>LIMITED TEST RUN - Due to large number of person docs, you can limit how many it initially processes for testing
'                If maxcount > 500 Then
'                        End
'                End If
               '>>>>LIMITED TEST RUN
               MailServer = pdoc.MailServer(0)
               MailFile = pdoc.MailFile(0)        
               Print maxcount & " - " & pdoc.FullName(0)
               Set dbmail = session.GetDatabase(MailServer,MailFile,False)        
               'Try to open mail file specified in PDOC
               
               If dbmail Is Nothing Then                                                        
               'If Mail File is not valid, creates log document
                       Set logdoc = db.CreateDocument
                       logdoc.mailserver = MailServer
                       logdoc.mailfile = MailFile
                       logdoc.fullname = pdoc.FullName(0)
                       logdoc.Form = "MissingMailFile"
                       Dim nrt As New NotesRichTextItem(logdoc, "Pdoclink")
                       Call nrt.AppendDocLink(pdoc,"Person Document")
                       Call logdoc.Save( True, True )
                       
                       '>>>>>>FLAG PERSON DOCUMENT - OPTIONAL
'                        pdoc.MissingMailFile = "1"                                                
'                        Call pdoc.Save(True, True)
                       '>>>>>>If you want to flag the PDOC in the nab, you can create a view to show all docs with this field and remove them
                       '>>>>>>FLAG PERSON DOCUMENT - OPTIONAL
               End If
               Set pdoc = pdocview.getnextdocument(pdoc)
       Loop        
       
       Exit Sub
ErrorHandler:
           '>>>>If you can't access a person's mail file due to ACL rights, that will trigger an error and log it here
       errcount = errcount + 1
       Set logdoc = db.CreateDocument
       logdoc.mailserver = MailServer
       logdoc.mailfile = MailFile
       logdoc.fullname = pdoc.FullName(0)
       logdoc.Form = "AccessMailFile"
       Dim nrt2 As New NotesRichTextItem(logdoc, "Pdoclink")
       Call nrt2.AppendDocLink(pdoc,"Person Document")
       Call logdoc.Save( True, True )

       '>>>>Error Trapping will catch first 5 errors and then End the Script
       If errcount < 5 Then
               Messagebox "Initialize Error " + Cstr(Err) + " : " + Error$ + " on line number " + Cstr(Erl), 16, "CUSTOM AGENT ERROR"
               Resume Next
       Else
               Messagebox "TO MANY ERRORS:  Initialize Error " + Cstr(Err) + " : " + Error$ + " on line number " + Cstr(Erl), 16, "CUSTOM AGENT ERROR"
               End
       End If
End Sub

Comments [2]

Some nice information on Mass emails

Monday 19th November, 2007
Here's a technote about how to handle an issue you might see on Domino when sending mass emails through your servers.  Sometimes mass emails are sent by the Administrator to notify everyone; however, sometimes end users have been known to send very large emails to several hundred people and not realize the impact they cause.  Then they start a massive chain reaction when people keep choosing "Reply to All" instead of just "Reply".  

Technote 1227966:
http://www-1.ibm.com/support/docview.wss?rs=0&q1=1227966&uid=swg21227966

In addition to the technote, a fellow co-worker wrote a nice piece on what all to consider when sending mass emails.  
"Thanks for you insight Walter."

When a user sends a mass mail (any mail message with more than 250 recipients), the mail delivery system may be taxed beyond the planned capacity.  This unexpected spike in workload can result in poor performance as seen by the end-user's perspective.
These end-users may perceive degraded client response times, longer mail delivery times, and the inability for to log onto the Domino system.  
To understand how mass mailing affects server performance, it is helpful to understand the mail routing workload.

When sending any mail message, Domino performs three operations.  
  1. Message Addressing: The Domino server reads the To, Cc and Bcc fields, resolves all addressees and then determines which messages are intended for local delivery
  2. Message Transfer:  If one or more recipients have a different home mail server than the sender, the message is queued for transfer to the correct destination mail server(s) based on the available routing tables.
  3. Message Delivery: The addressed message is transferred from the server's mail.box database to the mail file of the recipient on the local server.

Each phase of message delivery has unique performance considerations which we cover below:

Addressing the Message
Addressing the message, also referred to as recipient list expansion or message dispatching, comprises several steps:  
Special addressing considerations apply:
  • if the message is in Notes hierarchical name format or in Internet format
  • if groups exist (which must be expanded)
  • if user names are listed in the Cc and/or Bcc fields
The Lotus Domino router server task must lock the $Users view in the Domino Directory during recipient expansion.  This view lock is extremely brief, but  the larger the recipient list the longer the lock will be held, The router will process all recipients in a single pass.   As this work is handled as a single request, the longer the recipient list, the more memory will be required by the router task.
The $Users view is required by Notes clients to open a new session, therefore this very brief lock invoked by the router task may delay the opening of new sessions by the Notes clients.   Under normal conditions on a healthy server, no response time issues result from this delay.  Benchmark testing shows that Domino can deliver a .027 second response time.  However, a mass mailing on a heavily load server will likely result in response time issues for end users. Additionally, the size of the $Users and $Groups views affect name resolution performance.
Router attempts to address all messages in mail.box on each sweep of the queue  If the number of messages or quantity of recipients is very large, the Domino router task might get delayed in dispatching messages, thus the router will never deliver any mail as no mail has yet been dispatched.

Transferring the Message
If the mail recipients' mail files are not located on the local server, the router task transfers the message elsewhere.
After resolving the home mail server for each recipient for a message, the message transfer thread (within the router task) handles the delivery to the others servers in the domain.  
The router task has a number of threads which perform message transfer, as defined in the server configuration document. The amount of processing power and memory used by the transfer threads depends on three factors: the size of the message, number of destination servers, and number of transfer threads.
Router allocates enough memory to keep the entire message in memory for transfer,  If a message has a 4 MB attachment, and there are 10 transfer threads, and at least 10 recipients to transfer the message to, router would allocate more than 40 MB of memory for this message.  Limiting the number of threads can reduce the amount of memory used by router, but will lengthen the time required to transfer the same number of messages.

Delivering the Message
Delivering the message pertains to writing the message to the recipient's personal mail file.  The Domino router task will locally deliver any message from the mail.box which has been dispatched and resolved to the current server if that is the user's home mail server.  Router has dedicated threads to perform this operation, the number of which is defined in the configuration document.  Like transfer threads, delivery threads must allocate enough memory to store the entire message in memory. The same performance concerns affecting transfer affect local delivery.

The minimize the impact on performance due to sending mass email, do the following.  

Do not send mass mail from a production mail server.
Avoid sending mass email. If mass email must be sent, do not send it from a production mail server but an administration server or another dedicated Domino server which is not directly servicing end users.  Distributing this workload will prevent end users from experiencing performance issues related to address expansion during phase one of the message delivery process.

This dedicated Domino server should be configured to hold messages for transfer outside of peak system usage.

Reduce the number of threads for transfer and delivery in the Domino router
If you must sent mass mailings, reducing the number of transfer and delivery threads will decrease the CPU and memory requirements.  
**Note:** This modification may increase the time required for message delivery.

Limit message dispatch,
The Domino router can configured to dispatch smaller numbers of messages (not recipients) for delivery in the mail.box, thus reducing the peak CPU and memory usage for the Domino router server task.  Doing so, however, may increase delivery time.  

To configure, utilize the setting: MailDispatchThreshold=xxx .  (Where xxx is the number of concurrent messages to dispatch; the recommended setting is 100.)


Limit mass mailing
To configure, utilize the following setting: RouterMaxEffectiveSize=xxx (where xxx is in kilobytes.)

When enabled, this restriction will cause the router to present the Non-Delivery Failure (NDF) message when the number of recipients multiplied by the message size (in k bytes) is greater than the value specified by the notes.ini setting.  Attachments are excluded.  The value of the RouterMaxEffectiveSize=setting is set in KB.  

Implement the following notes.ini setting: RouterMaxEffectiveSizeIncAttach=1.
With this setting enabled, any file attachments are included in the equation to calculate the size of the message.


Increase the capacity of your system to support mass mailing.
Most production Domino mail environments are sized based on the usual end user workloads, Mass mailing, however,  is not part of that normal workload.  Therefore if mass mailing is part of your business requirements, increase the CPU and memory available to the specific Domino servers that are expected to support this additional workload.  

For example, if you wish to configure the Domino router with 25 transfer threads and 25 delivery threads, and the largest expected mass mail item will be 10 MB, sent to 1000 users:
Router will require an additional 500 MB of memory to support this particular mass mailing.

To determine the additional CPU required:
By default, the Lotus Domino server can only support 20 concurrent user requests, (available threads in the pool) Router can service 250% the load of Server,  increasing the system requirements by the same is the recommendation.
     Example: an Intel 4 way system driving 80% CPU, 30% on the NSERVER task would mean router is expected to require 3 additional CPU to support the load.

Limiting Factors......

Domino is a  31 Bit, 32 bit or 64 bit application depending on the platform, Total server memory is limited by platform from (1.2 Gb to over 4Gb),   If the memory requirements of mass mailing combined with the memory requirements of users exceeds the supported memory of your platform, server hangs or crashes may result.

Comments [0]

Slowing Opening Mail File after AdminP Rename - Regression in 7.0.2

Friday 16th November, 2007
Came across what I consider to be a critical regression issue this week.  The issue first appeared in 6.5.x code and was fixed in 6.5.2.  The issue appears to be back in 7.0.1 and 7.0.2.  I discovered this while onsite with a customer when users were complaining about how their Notes Client hangs for 1 to 2 minutes when moving an email from the inbox into a folder.  We resigned their folders with a different name and the problem was immediatly resovled.  Please be aware of this when renaming users.

http://www-1.ibm.com/support/docview.wss?rs=727&uid=swg21115338

From Technote:
Question
After you rename users using the Lotus Notes®/Lotus Domino® 6 adminp "rename person" task, users experience a significant delay when opening their mail files using their own IDs. The delay can be up to ten minutes.

There is no delay if the mail file doesn't contain any folders or if the mail file is opened with an ID other than your own.

The situation also occurs in 6.5.4 and 7 releases if the user was moved in the hierarchy (change of /OU or /O) and had created folders in the mailfile prior to the move.  
 
Answer
This issue was reported to Quality Engineering as SPR #RMAA72TCTX and was fixed in Notes/Domino release 7.0.3. This was a regression in releases 7.0.1 and 7.0.2 because of slow response time that occurred when users who were renamed opened their mail files.
 
The situation was originally reported to Quality Engineering as SPR# DWIN5HMN4K and was fixed in Notes/Domino releases 6.0.4 and 6.5.2.

Comments [1]

How to switch between Notes 8 "Eclipse" and Notes 8 Basic Client quickly

Thursday 20th September, 2007
For those of you just getting around to installing the Notes 8 Client, you will need to ask yourself do I install the Notes 8 Client running on the Eclipse Framework or do I install the "Basic" Notes 8 Client which has no Eclipse Framework.  If your wondering how much bigger the Eclipse Notes 8 Client is, here are some quick metrics to consider.

Size of Install Package Notes 8 Eclipse:  450megs
Size of Install Package Notes 8 Basic:  184 megs
Time to Launch Notes 8 Eclipse:   10+ seconds
Time to Launch Notes 8 Basic:  2 seconds
(Time measurements based on Thinkpad T60p w/ 2Gig RAM)

Now back to the original question.  If you install the Notes 8 Client running on the Eclipse Framework, you will notice the shortcut points to "notes.exe".  Well, in the past, people would create their own shortcut and point it to "nlnotes.exe" so they could bypass the Splash screen and save some time on startup.  

If you create a shortcut that uses the "nlnotes.exe" in Notes 8, you not only bypass the Splash screen, you also bypass the Eclipse Framework.

Now I keep both shortcuts on my desktop so I can quickly switch between them during a demo or switch to the Basic Notes 8 Client when running memory resource intensive applications like Virtualization Software.

Comments [2]

Updated Notes 8 Designer Column Icons

Thursday 20th September, 2007
With the recent release of Notes 8, it was discovered that the Help File showing the icons available to be displayed in a column was not updated.  Here is an updated screen shot of a the new icons that are available to be used in a Column.  

n8icons.JPG

Comments [1]