Friday, 18 April 2014

Humans are complicated animals. To paraphrase Bill Bryson: You are a miracle, the fact that your atoms are still clinging together in a sack of mostly water is amazing by itself, the fact that atoms from two separate sacks of waters came together in unison is extraordinary, the notion of a ball of rock in space with all the right ingredients for sacks of water has astronomical odds, you my friend are a miracle.  And that is why we are complex beings.



Mat posted a innocuous post on FB yesterday waving goodbye to Brian Cheng that is returning back to US. That is what was said.

What was not said is that Brian took over from JM. Brian was in Singapore to revitalise the sagging Lotus ecosystem. All the Loti in the region worked hard on this. We got Mat in. Mat has turned and also pulled in some new customers. Mat is not alone in flying the yellow flag but the Loti in the region can be counted on one hand.

I do not wish to belittle my ex colleagues but they have an uphill struggle ahead and without (USA) exec air cover.

The strange things is that outside of IBM Lotus Notes does what is says on the tin and as long as you do not have a MS "IT Manager / Director" in place all is well and Notes still provides a platform to run your entire business on.

I really feel for my ex colleagues.

  

 

      

Friday, 11 April 2014

I have decided to share some admin stuff on Domino. This may be controversial and many will disagree with my methods. See if I care. No really, I don't.

In my last post I moaned about IBM and how little they care about Domino but from the comments Domino is doing OK outside of IBM so this is just to help those folks in the know out with setting up new systems properly from day 1 or to bring wayward systems back into line.

The biggest issue you have when auditing or setting up a Domino system, that will serve more than 1 person of course, is keeping track of documents in the Domino Directory such as server docs, config docs, connection docs, etc. I have more sophisticated audit tools that I may share later on and of course there are third party utilities out there that can help for a small cost but what about initially or if you don't have budget?

My method is as follows:
  1. Install an extraction agent (lotus script) in the Domino Directory.
  2. Run this against a document.
  3. Analyse the extracted document and create a template document (formula).
  4. Apply this standard to a document.
  5. Customise the document.
  6. Test, test, test.

The added bonus of this method is when you want a customer to send you the Domino Directory and they start mentioning security and privacy you could simply send this extract and just get a copy of the raw extract for the document.

You will then be able to recreate the directory without any bother.
You could almost use it as a form of disaster recovery as well. It is best that I show how to make this process clearer.

The Extract routine.
(I am testing some new css so I hope this will work ok)
%REM 
 Agent:        IBM Field Extraction Agent V2
 Description:  An agent that reads each field on a form and dumps the field name
               and field value to a txt file specifically formatted to be used as a formula
               button to recreate the document exactly or to selectively replace values based
               on the extracted field values.  
 Created:      Feb, 2002 by Adrian Randall - Web Networks24
 Updated:      Dec, 2004 by Ray Davies - Atnetix
 Updated:      Nov 25, 2011 by Adrian Randall - adrian@aprconsulting.biz 
 Updated:      Dec 4, 2011 by Ray Davies IBM Lab Services - ray.davies@my.ibm.com
 Updated:      Apr 11, 2014 by Ray Davies - ray@a2any.com 
   
%END REM 
Option Public 
Option Declare 

Sub Initialize 
        
        '============================================== 
        ' Error Handling 
        '============================================== 
        On Error GoTo ErrorHandler 
        
        '============================================== 
        ' Declarations 
        '==============================================         
        Dim session As New NotesSession 
        Dim dbThis As NotesDatabase 
        Dim dcSelected As NotesDocumentCollection 
        Dim docSelected As NotesDocument 
        Dim form As NotesForm 
        Dim intFileNum As Integer 
        Dim strFileName As String 
        Dim strPrintRecord As String 
        Dim itmField As NotesItem 
        Dim intCount As Integer 
        Dim strMsg As String 

        '==============================================         
        ' Set Objects 
        '==============================================         
        Set dbThis = session.CurrentDatabase 
        Set dcSelected = dbThis.UnprocessedDocuments 
        Set docSelected = dcSelected.GetFirstDocument() 
        
        '============================================== 
        ' Process each document selected 
        '============================================== 
        While Not(docSelected Is Nothing)         
                Set form = dbThis.GetForm(docSelected.Form(0)) 

                '-- Does the docSelected have any fields? 
                If IsEmpty(form.Fields) Then 
                        MessageBox form.Name & " has no fields. This process cannot continue.", 16, {No fields on selected document} 
                Else 
                        
                        '-- Prompt user for the text file name and path to be created 
                        strFileName$ = InputBox$({Please enter the file path and name to be created?}, {File Path and File Name?}) 
                        If Trim(strFileName$) = {} Then 
                                MessageBox {File directory and name was not supplied. Cannot process selected documents}, 16, {File Path & Name Error} 
                                Exit Sub 
                        End If 
                        
                        '-- Get handle to file 
                        intFileNum% = FreeFile() 
                        Open strFileName For Output As intFileNum% 
                        
                        '-- Process all fields on the selected document 
                        ForAll Field In form.Fields 
                                
                                intCount = 0 
                                strPrintRecord = {@SetField("} & Field & {";} 
                                
                                '-- Process all items within current field 
                                Set itmField = docSelected.Getfirstitem(Field) 
                                If Not (itmField Is Nothing) Then 
                                        If Not Trim(itmField.Text) = {} Then 
                                                
                                                ForAll vals In itmField.Values 
                                                        If intCount >= 1 Then  strPrintRecord = strPrintRecord & { : } 
                                                        
                                                        Select Case itmField.Type 
                                                        Case NUMBERS 
                                                                strPrintRecord = strPrintRecord & vals 
                                                        Case Else 
                                                                strPrintRecord = strPrintRecord & {"} & vals & {"}                                                         
                                                End Select 
                                                        
                                                        intCount = intCount + 1 
                                                End ForAll 
                                        Else 
                                                strPrintRecord = strPrintRecord & {""}                                                         
                                        End If 
                                End If 
                                
                                '-- Complete command 
                                strPrintRecord = strPrintRecord & {);} & Chr(10) 
                                Print #intFileNum%, strPrintRecord                                 
                        End ForAll 
                        
                        '-- Write final @Formula command   
                        Print #intFileNum%, "SELECT @ALL" 
                        
                        ' Close file 
                        Close intFileNum% 
                End If 
                
                Set docSelected = dcSelected.GetNextDocument(docSelected) 
        Wend 
        
        '============================================== 
        ' Inform user everything completed 
        '============================================== 
        MessageBox {Document extraction process completed normally.}, 64, {Document Extract Completed} 
        
SingleExit: 
        Exit Sub 
        
ErrorHandler: 
        strMsg = {An unexpected error occurred:- } & Chr(10) & {Error No. } & CStr(Err) & ". " & Error$ & { on line } & CStr(Erl) 
        MessageBox strMsg, 16, {Extraction Failed} 
        Close intFileNum%         
        Resume SingleExit 
        
End Sub

Add this agent to the Domino directory.

If you do not know how to this then please navigate away from the site and go and play with outlock and microsnot products.

Select a single server document for this example. The script is platform natural so for us Linux people the out directory will be something like /home/rayd/customera/baseaudit/adminserver-extract.txt. The output is as below but I have removed the extra spacing. This format is now ready to be pasted into a Domino Directory as a formula agent. All you need to do is create a blank server document and apply this agent and it will recreate the sever document you extracted. Very neat. Did I mention this was my idea? Thanks to uber dev Adrian for the actual code.


@SetField("$Server_MTA_Tabs";0);
@SetField("$Server_InetProt_Tabs";0);
@SetField("$Server_Tasks_Tabs";0);
@SetField("$Server_Ports_Internet2_Tabs";0);
@SetField("$Server_Ports_Tabs";0);
@SetField("$ServerMain";0);
@SetField("DAOSWarned";"0");
@SetField("IsVirDir";"0");
@SetField("DB2AccessServer";"0");
@SetField("ASPServer";"0");
@SetField("ServerPlatform";"");
@SetField("BookmarkDB";"bookmark.nsf");
@SetField("$LocationVersion";"2");
@SetField("DocumentAccess";"[ServerModifier]");
@SetField("AreaCode";"");
@SetField("ChangeRequest";"");
@SetField("Certificate";"");
@SetField("PKOldKeyDays";365);
...............................
This is not the only way to dump a document. Stephan has create a script that extracts even more info. It can not be used to recreate the document as above but you see more info.

Here is Stephan's code. (YMMV)



%REM
 Agent Export
 Created Nov 11, 2011 by Stephan H Wissel/Singapore/IBM
 Description: Comments for Agent
%END REM
Option Public
Option Declare

Sub Initialize
 Dim session As New NotesSession 
 Dim db As NotesDatabase 
 Dim collection As NotesDocumentCollection 
 Dim doc As NotesDocument 
 Dim out As NotesStream
 Dim resultMsg As String
 Dim FileName As String
 Dim curItem As NotesItem
 
 ' Activate RTE handler 
 On Error GoTo ShitHappened 
 
 ' Initialise variables 
 Set db = session.CurrentDatabase 
 Set collection = db.UnprocessedDocuments 
 Set doc = collection.GetFirstDocument() 
 ' For each document selected 
 Do Until doc Is Nothing
  FileName = InputBox$("File Path & Name?") 
  If Trim(FileName) <> "" Then
   Set out = session.Createstream()
   Call out.Open(FileName)
   
   ForAll item In doc.Items
    Set curItem = item
    'Based on data types
    Select Case curItem.Type 
    Case NUMBERS, DATETIMES
     Call out.Writetext(|FIELD |& curItem.Name & |:=@Explode(| & curItem.Text & |);| ,EOL_PLATFORM)
    Case Else
     Call out.Writetext(|FIELD |& curItem.Name & |:=@Explode("| & curItem.Text & |");| ,EOL_PLATFORM) 
   End Select
   End ForAll
   
   Call out.Writetext(|SELECT @ALL| ,EOL_PLATFORM)
   Call out.Close()
  End If     
  Set doc = collection.GetNextDocument(doc)
 Loop    

 resultMsg = "Script extract complete"

WeAreDoneHere:
 On Error Resume Next
 Call out.close
 MsgBox resultMsg, 64, "Extract Agent" 
 Exit Sub 
 
 ' RTE handler - report error to user, close handle to text file & exit         
ShitHappened: 
 resultMsg = "Error No. " & CStr(Err) & ". " & Error$
 Resume WeAreDoneHere
 
End Sub

Here is the same output using Stephan's method.


FIELD $Revisions:=@Explode(08/04/2014 12:29:18);
FIELD $EncryptionStatus:=@Explode("0");
FIELD $SignatureStatus:=@Explode("0");
FIELD Type:=@Explode("Server");
FIELD $HTMLAttributes:=@Explode("");
FIELD FltRcvryMD:=@Explode("");
FIELD DisplayName:=@Explode(": test1");

The next step is to put some controls and comments around the interpreted output. Yes, I am afraid you have to sit down and do the work but seeing that we are all a bit lazy I will add my file for you to use. This is a standard server configuration file that comments the server document as "Domino Server Customisation applied - Level 1" Think of this method in the same ways as cascaded style sheets  CSS. You can then have another agent that is customised for hub servers for instance that changes the fields you need for a hub server for example "Domino HUB Server Customisation applied - Level 1" Go nuts really. I will post the server config file and others in a later post.

Remember that you can add as many or remove as many settings as you want and my settings may not be perfect for your environment but it sure helps when you have to deal with a big directory or create a new one that follow some standards.

The easiest way to test this is to simply create a throwaway server document and apply the values.


REM {--------------------------------------------------------------------};
REM {Formula Button: DominoServerDocumentCustomLevel1                    };
REM {Used inconjunction with FieldExtractionAgentV3 to dump all field };
REM {values from a reference Server Document to be applied to new Server };
REM {documents to ensure consistancy and apply agreed standards.         };
REM {Created: October 28, 2011 by Ray Davies, IBM Lab Services           };
REM {Updated: 14 December, 2011 by Ray Davies, IBM Lab Services          };
REM {Updated: 8 April, 2014 by Ray Davies                                };
REM {ray-d123@gm-ail.com                                                   };
REM {--------------------------------------------------------------------};

REM {--------------------------------------------------------------------};
REM {Tab - Basic:};
REM {--------------------------------------------------------------------};

REM {--------------------------------------------------------------------};
REM {Section - Basic:};
REM {--------------------------------------------------------------------};

REM {ServerTitle};
@SetField("ServerTitle";"Domino Server Customisation applied - Level 1");
REM {Load Internet configurations from Server Internet Sites documents:};
@SetField("SMTPFullHostDomain";"ChangeThis.yourdomain.com");
REM {Load Internet configurations from Server Internet Sites documents:};
@SetField("LdISite";"Enabled");
REM {Maximum formula execution time default is 120 - confirm with client:};
@SetField("FormulaTimeout";"120");


REM {--------------------------------------------------------------------};
REM {Section - Basic2:};
REM {--------------------------------------------------------------------};

REM {Routing tasks - SMTP for MIME is required:};
@SetField("Tasks";"Mail Routing; SMTP Mail Routing");
REM {SMTP listener task start automatically:};
@SetField("SMTPListenerEnabled";"Enabled");

REM {--------------------------------------------------------------------};
REM {Section - Directory Information:};
REM {--------------------------------------------------------------------};

REM {Directory assistance database name:};
@SetField("MasterAddressBook";"da.nsf");
REM {Name of condensed directory catalog on this server:};
@SetField("LEDName";"dircat.nsf");
REM {Trust the server based condensed directory catalog for authentication with internet protocols:};
@SetField("TrustDircat";"1");

REM {--------------------------------------------------------------------};
REM {Section - Automatic Server Recovery:};
REM {--------------------------------------------------------------------};

REM {Run This Script After Server Fault/Crash - NO NSD:};
@SetField("FltRcvryScrpt";"");
REM {Run NSD To Collect Diagnostic Information:};
@SetField("NSDEnbld";"1");
REM {Automatically Restart Server After Fault Crash:};
@SetField("FREnbld";"Enabled");
REM {Cleanup Script / NSD Maximum Execution Time Default is 600 - recommended is 1800 KB1257546 - Confirm with client:};
@SetField("FltRcvryMax";"1800");
REM {Server Shutdown Timeout:};
@SetField("FltRcvryHng";"300");
REM {Maximum Fault Limits:};
@SetField("FltRcvryCrsh";"3");
REM {Within:};
@SetField("FltRcvryMin";"5");
REM {Mail Fault Notification to:};
@SetField("FltRcvryNot";"Administrators");

REM {--------------------------------------------------------------------};
REM {Tab - Security:};
REM {--------------------------------------------------------------------};

REM {--------------------------------------------------------------------};
REM {Section - Administrators};
REM {--------------------------------------------------------------------};

REM {Full Access administrators - NO GROUPS!!!!:};
@SetField("FullAdmin";"CN=Ray Davies/OU=MGMT/O=yourdomain" : "CN=Anz/OU=another/O=yourdomain" : 
"CN=PP/OU=MGMT/O=yourdomain");

REM {Administrators - Groups OK:};
@SetField("Administrator";"$AAdmins" : "LocalDomainServers" : "HQDomainServers");

REM {Database Administrators - No WEBADMIN.NSF access or remote access:};
@SetField("DBAdmin";"$DBAdmins");

REM {Full Remote Console Administrators - Very important:};
@SetField("RemoteAdmin";"$Admin" : "$Security");

REM {View-only Administrators - Set as a wild card:};
@SetField("VOAdmin";"$ViewAdmins" : "*/Support/yourdomain");

REM {System Administrator - Can issue OS Commands from the console:};
@SetField("SysAdmin";"$SysAdmins");

REM {Restricted System Administrator - Can only issue commands in the restricted list:};
@SetField("ResSysAdmin";"$RestrictedAdmin");

REM {Restricted System Commands allowed:};
@SetField("ResSystemCmds";"Show tasks only" : "show users");

REM {--------------------------------------------------------------------};
REM {Section - Programmability  Restrictions Who can };
REM {--------------------------------------------------------------------};

REM {Run unrestricted methods and operations:};
@SetField("UnrestrictedList";"$Admins" : "LocalDomainServers" : "HQDomainServers" : "BlackBerryAdmins");

REM {Sign agents to run on behalf of someone else:};
@SetField("OnBehalfOfLst";"$AAdmins, LocalDomainServers");

REM {Sign agents or xpages to run on behalf of the invoker of the agent:};
@SetField("OnBehalfOfInvokerLst";"$AAdmins, LocalDomainServers");

REM {Run restricted LotusScript/Java agents};
@SetField("RestrictedList";"*/yourdomain" : "$Admins" : "LocalDomainServers" : "HQDomainServers" : "BlackBerryAdmins");

REM {Run Simple and Formula agents:};
@SetField("PrivateList";"*/O=yourdomain": "$AAdmins" : "LocalDomainServers");

REM {Sign script libraries to run on behalf of someone else:};
@SetField("LibsLst";"$AAdmins, LocalDomainServers");

REM {Run restricted Java/Javascript/COM:};
@SetField("NOIRestrictedList";"*/O=yourdomain" : "$Admins" : "BlackBerryAdmins");

REM {Run unrestricted Java/Javascript/COM:};
@SetField("NOIUnrestrictedList";"*/O=yourdomain" : "$Admins" : "BlackBerryAdmins");

REM {--------------------------------------------------------------------};
REM {Section - Security Settings };
REM {--------------------------------------------------------------------};

REM {Compare Notes public keys against those stored in Directory:};
@SetField("WhiteList";"No");

REM {Allow anonymous Notes connections:};
@SetField("AnonymousAccess";"No");

REM {Check passwords on Notes IDs:};
@SetField("ServerCheckPasswords";"1");

REM {--------------------------------------------------------------------};
REM {Section - Server Access Who can };
REM {--------------------------------------------------------------------};

REM {Access server: };
@SetField("AddressBookAccess";"1");

REM {Access server };
@SetField("AllowAccess";"*/yourdomain" : "*/IBM" : "*/IBS" : "LocalDomainServers" : "HQDomainServers");

REM {Access server- confirm };
@SetField("AccessServerInput";"*/yourdomain" : "*/IBM" : "*/IBS" : "LocalDomainServers" : "HQDomainServers");


REM {Not access server:};
@SetField("DenyAccess";"#Termination" : "#Suspended" : "#DenyAccess2" : "#DenyAccess3" : "#DenyAccess4" : "#Dormant Ids");

REM {Create databases & templates:};
@SetField("CreateAccess";"$Admins" : "LocalDomainServers" : "$Security" : "HQDomainServers");

REM {Create new replicas:};
@SetField("ReplicaAccess";"$Admins" : "LocalDomainServers" : "$Security" : "HQDomainServers");

REM {Create master templates:};
@SetField("TemplateAccess";"$Admins" : "LocalDomainServers" : "$Security" : "HQDomainServers");

REM {Allowed to use monitors:};
@SetField("AllowMonitors";"$Admin" : "$Security" : "*/yourdomain");

@SetField("TrustedSrvrs";"HQDomainServers");

REM {--------------------------------------------------------------------};
REM {Section - Server Access Who can };
REM {--------------------------------------------------------------------};

REM {Passthru Access this server:};
@SetField("PTAccess";"$AAdmins, LocalDomainServers");

REM {Passthru Route through:};
@SetField("PTClients";"$AAdmins, LocalDomainServers");

REM {Passthru Cause calling:};
@SetField("PTCallers";"$AAdmins, LocalDomainServers");

REM {Passthru Destinations allowed:};
@SetField("PTTargets";"$AAdmins, LocalDomainServers");

REM {--------------------------------------------------------------------};
REM {Section - Internet Access };
REM {--------------------------------------------------------------------};

REM {Internet authentication:};
@SetField("HTTP_AuthView";"($Users)");

REM {--------------------------------------------------------------------};
REM {Tab - Ports:};
REM {--------------------------------------------------------------------};

REM {--------------------------------------------------------------------};
REM {Section - Notes Network Ports:};
REM {--------------------------------------------------------------------};

REM {Port:};
@SetField("Port_0";"TCPIP");

REM {Protocol:};
@SetField("Protocol_0";"TCP");

REM {Notes Network:};
@SetField("NetName_0";"yourdomain");

REM {Net Address:};
@SetField("NetAddr_0";"yourdomain.com");

REM {Enabled};
@SetField("Enabled_0";"1");

REM {Port:};
@SetField("Port_1";"TCPIP2");

REM {Protocol:};
@SetField("Protocol_1";"TCP");

REM {Notes Network:};
@SetField("NetName_1";"yourdomain");

REM {Net Address:};
@SetField("NetAddr_1";"yourdomain.com");

REM {Enabled};
@SetField("Enabled_1";"1");

REM {--------------------------------------------------------------------};
REM {Sub Tab - Internet ports:};
REM {--------------------------------------------------------------------};

REM {--------------------------------------------------------------------};
REM {Section - SSL Settings:};
REM {--------------------------------------------------------------------};

REM {SSL key file name:};
@SetField("HTTP_SSLKeyFile";"keyfile.kyr");

REM {SSL protocol version for use with all protocols except HTTP:};
@SetField("SSLProtocolVersion";"0");

REM {Accept SSL site certificates:};
@SetField("SSLSiteCerts";"0");

REM {Accept expired SSL certificates:};
@SetField("SSLExpiredCerts";"1");

REM {SSL ciphers - Popup:};
@SetField("SSLCipherList";"04");

REM {SSL ciphers popup:};
@SetField("SSLStrongEncryption";"03040506090A");

REM {Enable SSL V2: SSL V3 is always enabled};
@SetField("SSLV2Enabled";"1");

REM {--------------------------------------------------------------------};
REM {Section - Web:};
REM {--------------------------------------------------------------------};

REM {TCP/IP port number:};
@SetField("HTTP_Port";"80");

REM {TCP/IP port status:};
@SetField("HTTP_NormalMode";"1");

REM {Enforce server access settings: Check };
@SetField("HTTP_EnforceAccess";"1");

REM {Name & password:};
@SetField("HTTP_TCPNP";"1");

REM {Anonymous:};
@SetField("HTTP_AllowAnonymous";"0");

REM {SSL port number:};
@SetField("HTTP_SSLPort";"443");

REM {SSL port status:};
@SetField("HTTP_SSLMode";"1");

REM { Client certificate:};
@SetField("HTTP_SSLCert";"1");

REM { Name & password:};
@SetField("HTTP_SSLNP";"1");

REM {Anonymous:};
@SetField("HTTP_SSLAnonymous";"0");

REM {--------------------------------------------------------------------};
REM {Section - Directory:};
REM {--------------------------------------------------------------------};

REM {TCP/IP port number:};
@SetField("LDAP_Port";"389");

REM {TCP/IP port status:};
@SetField("LDAP_PortStatus";"1");

REM {Enforce server access settings: Check };
@SetField("LDAP_EnforceAccess";"0");

REM {Name & password:};
@SetField("LDAP_TCPNP";"1");

REM {Anonymous:};
@SetField("LDAP_AllowAnonymous";"1");

REM {SSL port number:};
@SetField("LDAP_SSLPort";"636");

REM {SSL port status:};
@SetField("LDAP_SSLStatus";"0");

REM { Client certificate:};
@SetField("LDAP_SSLCert";"0");;

REM { Name & password:};
@SetField("LDAP_SSLNP";"0");

REM {Anonymous:};
@SetField("LDAP_SSLAnonymous";"1");

REM {--------------------------------------------------------------------};
REM {Section - Mail:};
REM {--------------------------------------------------------------------};

REM {TCP/IP port number:};

@SetField("IMAP_Port";"143");
@SetField("IMAP_PortStatus";"1");
@SetField("IMAP_EnforceAccess";"0");
@SetField("IMAP_TCPNP";"1");
@SetField("IMAP_SSLPort";"993");
@SetField("IMAP_SSLStatus";"0");
@SetField("IMAP_SSLCert";"0");
@SetField("IMAP_SSLNP";"1");

@SetField("POP3_Port";"110");
@SetField("POP3_PortStatus";"1");
@SetField("POP3_EnforceAccess";"0");
@SetField("POP3_TCPNP";"1");

@SetField("SMTP_SSLAnonymous";"1");
@SetField("SMTP_SSLNP";"0");
@SetField("POP3_SSLNP";"1");
@SetField("POP3_SSLPort";"995");
@SetField("POP3_SSLStatus";"0");
@SetField("POP3_SSLCert";"0");

@SetField("SMTP_Port";"25");
@SetField("SMTP_PortStatus";"1");

@SetField("Router_SSLStatus";"0");
@SetField("SMTP_SSLStatus";"0");
@SetField("SMTP_EnforceAccess";"0");
@SetField("SMTP_TCPNP";"0");
@SetField("SMTP_SSLPort";"465");

@SetField("Router_Port";"25");
@SetField("Router_PortStatus";"1");
@SetField("SMTP_AllowAnonymous";"1");
@SetField("Router_SSLPort";"465");

REM {--------------------------------------------------------------------};
REM {Section - DIIOP:};
REM {--------------------------------------------------------------------};

@SetField("IIOP_Port";"63148");
@SetField("IIOP_PortStatus";"1");
@SetField("IIOP_EnforceAccess";"0");
@SetField("IIOP_TCPNP";"1");
@SetField("IIOP_AllowAnonymous";"1");
@SetField("IIOP_SSLPort";"63149");
@SetField("IIOP_SSLStatus";"0");
@SetField("IIOP_SSLNP";"0");
@SetField("IIOP_SSLAnonymous";"1");

REM {--------------------------------------------------------------------};
REM {Section - Remote Debug Manager:};
REM {--------------------------------------------------------------------};

@SetField("RDM_Port";"60000");
@SetField("RDM_PortStatus";"1");
@SetField("RDM_EnforceAccess";"0");
@SetField("RDM_SSLPort";"60001");
@SetField("RDM_SSLStatus";"0");

REM {--------------------------------------------------------------------};
REM {Section - Server Controller:};
REM {--------------------------------------------------------------------};

@SetField("DC_IP_Address";"");
@SetField("DC_Port";"2050");

REM {--------------------------------------------------------------------};
REM {Sub Tab - Proxies:};
REM {--------------------------------------------------------------------};

@SetField("Proxy_HTTP";"");
@SetField("Proxy_FTP";"");
@SetField("Proxy_Gopher";"");
@SetField("Proxy_SSL";"");
@SetField("Proxy_NotesHTTP";"");
@SetField("Proxy_SOCKs";"");
@SetField("No_Proxy";"");

REM {--------------------------------------------------------------------};
REM {Tab - Server Tasks:};
REM {--------------------------------------------------------------------};

REM {--------------------------------------------------------------------};
REM {Section - Basic:};
REM {--------------------------------------------------------------------};

REM {--------------------------------------------------------------------};
REM {Section - Administration Process:};
REM {--------------------------------------------------------------------};

@SetField("AdminPMaxThreads";8);
@SetField("AdminPMailfileDelInt";"");
@SetField("AdminPInterval";"");
@SetField("AdminPWeekDays";"1");
@SetField("AdminPDailyTime";"");
@SetField("AdminPDelayedTime";"");
@SetField("AdminPNameChangeExpiration";21);
@SetField("InboxTrimDays";"7");
@SetField("AdminPLogSetting";"0");
@SetField("InboxTrimTime";"1:00:00 AM");
@SetField("AdminPSuspendStart";"");
@SetField("InboxTrimLoc";"2");
@SetField("AdminPSuspendEnd";"");
@SetField("InboxTrimUsers";"");
@SetField("AdminPSuspendRange";"");

REM {--------------------------------------------------------------------};
REM {Section - Agent Manager:};
REM {--------------------------------------------------------------------};

@SetField("gracedays";90);
@SetField("MaxRemDocs";500);
@SetField("SaveUnread";"");
@SetField("ReloadTime";"12:00:00 AM");
@SetField("StartTime";"8:00:00 AM");
@SetField("MaxStartTime";"8:00:00 PM");
@SetField("EndTime";"8:00:00 PM");
@SetField("MaxEndTime";"8:00:00 AM");
@SetField("ConcurrentAgents";1);
@SetField("MaxConcurrentAgents";2);
@SetField("MaxExecution";600);
@SetField("MaxMaxExecution";60);
@SetField("PercentTime";50);
@SetField("MaxPercentTime";70);

REM {--------------------------------------------------------------------};
REM {Section - Domain Catalog:};
REM {--------------------------------------------------------------------};

@SetField("CatalogType";"0");
REM {Limit domain cataloging to the following servers:};
@SetField("CatalogDomainScope";"");
REM {Catalog Schedule:};
@SetField("CatalogEnabled";"0");
@SetField("CatalogSchedule";"7:00:00 AM" : "8:00:00 PM");
@SetField("CatalogInterval";360);
@SetField("CatalogWeekDays";"1" : "2" : "3" : "4" : "5" : "6" : "7");
REM {Limit domain wide indexing to the following servers:};
@SetField("CatalogIndexerScope";"");

REM {--------------------------------------------------------------------};
REM {Section - Directory Cataloger:};
REM {--------------------------------------------------------------------};

@SetField("EDFilenames";"");
@SetField("Enabled";"0");
@SetField("Schedule";"8:00:00 AM" : "10:00:00 PM");
@SetField("Interval";60);
@SetField("WeekDays";"1" : "2" : "3" : "4" : "5" : "6" : "7");

REM {--------------------------------------------------------------------};
REM {Section - Internet Cluster Manager:};
REM {--------------------------------------------------------------------};

@SetField("ICMClusterName";"");
@SetField("ICMNotesPort";"");
@SetField("ICMSSLKeyfile";"keyfile.kyr");
@SetField("ICM_BrowseDatabases";"0");
@SetField("ICMConfiguration";"1");
@SetField("ICMHostname";"");
@SetField("ICMRemoteServerName";"");
@SetField("ICMHTTP_Port";80);
@SetField("ICMHTTP_PortStatus";"1");
@SetField("ICMHTTP_SSLPort";443);
@SetField("ICMHTTP_SSLStatus";"0");

REM {--------------------------------------------------------------------};
REM {Section - Web Retriever:};
REM {--------------------------------------------------------------------};

@SetField("WebDbName";"web.nsf");
@SetField("WebAllow";"*");
@SetField("WebServices";"HTTP" : "FTP" : "GOPHER");
@SetField("WebDeny";"");
@SetField("WebRetrievers";50);
@SetField("WebLogLevel";"0");
@SetField("WebUpdateCache";"1");
@SetField("SMTP_Domain";"");

REM {--------------------------------------------------------------------};
REM {Section - Remote Debug Manager:};
REM {--------------------------------------------------------------------};

@SetField("RDMgrEnbld";"0");
@SetField("RDOff";24);
@SetField("RDWait";0);

REM {--------------------------------------------------------------------};
REM {Tab - Internet Protocols:};
REM {--------------------------------------------------------------------};

REM {--------------------------------------------------------------------};
REM {Section - Basic:};
REM {--------------------------------------------------------------------};

@SetField("HTTP_HostName";"tobechanged.yourdomain.com");
@SetField("HTTP_HomeURL";"/homepage.nsf?Open");
@SetField("HTTP_BindToHostName";"1");
@SetField("HTTP_HTMLDir";"domino\html");
REM {DNS lookup:};
@SetField("HTTP_DNSLookup";"0");
@SetField("HTTP_IconsDir";"domino\icons");
@SetField("HTTP_DNSLookupCache";"1");
@SetField("HTTP_IconsPath";"/icons");
@SetField("HTTP_DNSCacheSize";256);
@SetField("HTTP_CGIDir";"domino\cgi-bin");
@SetField("HTTP_DNSCacheFoundTimeout";120);
@SetField("HTTP_CGIPath";"/cgi-bin");
@SetField("HTTP_DNSCacheNotFoundTimeout";240);
@SetField("HTTP_MaxActiveThreads";40);
@SetField("HTTP_DatabaseBrowsing";"0");
REM {Access log format:};
@SetField("HTTP_AccessLogFormat";"0");
@SetField("HTTP_MaxRequests";1);
@SetField("HTTP_LogTime";"0");
@SetField("HTTP_MinActiveThreads";20);
REM {Log file duration:};
@SetField("HTTP_LogFileDuration";"0");
@SetField("HTTP_Welcome";"default.htm");
@SetField("HTTP_MaxLogEntrySize";10);
@SetField("HTTP_MaxCachedCommands";"128");
@SetField("HTTP_MaxLogFileSize";0);
@SetField("HTTP_Audience";"2");
@SetField("HTTP_LogToFiles";"0");
@SetField("HTTP_FilterLibrary";"");
REM {Domlog.nsf:};
@SetField("HTTP_LogToDomLog";"1");
REM {Directory for log files:};
@SetField("HTTP_LogDirectory";"");
@SetField("HTTP_ExcludeURLs";"");
@SetField("HTTP_AccessLog";"access");
@SetField("HTTP_ExcludeMethods";"");
@SetField("HTTP_AgentLog";"agent");
@SetField("HTTP_ExcludeMIMETypes";"");
@SetField("HTTP_RefererLog";"referer");
@SetField("HTTP_ExcludeUserAgents";"");
@SetField("HTTP_ErrorLog";"error");
@SetField("HTTP_ExcludeReturnCodes";"");
@SetField("HTTP_CGIErrorLog";"cgi-error");
@SetField("HTTP_NoLog";"");
@SetField("HTTP_11Connections";"1");
@SetField("HTTP_InputTimeout";2);
@SetField("HTTP_Max11Requests";5);
@SetField("HTTP_OutputTimeout";20);
@SetField("HTTP_PersistentTimeout";180);
@SetField("HTTP_ScriptTimeout";5);
@SetField("HTTP_RequestTimeout";60);
@SetField("HTTP_IdleThreadTimeout";0);
@SetField("HTTP_RNInputTimeout";15);
@SetField("HTTP_RNOutputTimeout";180);
@SetField("HTTP_RNCGITimeout";180);
@SetField("HTTP_ListenQueueSize";512);
@SetField("HTTP_MaxURLBytes";4);
@SetField("HTTP_MaxConcurrentNetwkSessions";2000);
@SetField("HTTP_MaxURLPathSegments";64);
@SetField("HTTP_AllowDenyPriority";"1");
@SetField("HTTP_MaxHeaderLines";48);
@SetField("HTTP_AllowIPList";"");
@SetField("HTTP_MaxHeaderBytes";16);
@SetField("HTTP_DenyIPList";"");
@SetField("HTTP_MaxContentLength";10000);
@SetField("HTTP_Comp";"0");
@SetField("HTTP_CompEUA";"");
@SetField("HTTP_CompMinS";1);
@SetField("HTTP_CompMaxS";128);
@SetField("HTTP_CompMM";20);
@SetField("HTTP_CompIMT";"text/*" : "application/*");
@SetField("HTTP_CompEMT";"");
@SetField("HTTP_EnableSessionAuth";"1");
@SetField("HTTP_JavaServletSupport";"0");
@SetField("HTTP_IdleSessionTimeout";30);
@SetField("HTTP_SSOCfg";"");

REM {--------------------------------------------------------------------};
REM {Section - Java Servlets:};
REM {--------------------------------------------------------------------};

@SetField("HTTP_ServletPath";"/servlet");
@SetField("HTTP_ForceLoginOnSSL";"0");
@SetField("HTTP_JSClasspath";"domino\servlet");
@SetField("HTTP_MaxActiveSessions";1000);
@SetField("HTTP_JSFileExtensions";"");
@SetField("HTTP_EnableJSessions";"1");
@SetField("HTTP_CompanionStack";"0");
@SetField("HTTP_IdleJSTimeout";15);
@SetField("HTTP_RedirectUseHTTPS";"0");
@SetField("HTTP_MaxActiveJSessions";1000);

REM {--------------------------------------------------------------------};
REM {Section - Generating References:};
REM {--------------------------------------------------------------------};
@SetField("HTTP_RedirectServerName";"");
@SetField("HTTP_EnableJSPersistence";"0");
@SetField("HTTP_RedirectPortNo";81);
@SetField("HTTP_MaxCachedDesigns";"128");
@SetField("HTTP_MaxPostDataLength";"0");
@SetField("HTTP_MaxCachedUsers";"64");
@SetField("HTTP_CompressUploadedFiles";"0");
@SetField("HTTP_ExpireCachedUsers";"120");
@SetField("HTTP_PrfCookieOption";"2");
@SetField("HTTP_ResourceLang";"en");
@SetField("HTTP_useUserLocale";"1");
@SetField("HTTP_AltResourceLang";"");
@SetField("HTTP_ImageFormat";"0");
@SetField("HTTP_UTF8";"0");
@SetField("HTTP_ImageProgressive";"1");
@SetField("HTTP_NoUTF8Forms";"0");
@SetField("HTTP_ImageQuality";75);
@SetField("HTTP_DefViewRows";30);
@SetField("HTTP_CSDefault";"1");
@SetField("HTTP_CS5Default";"2");
@SetField("HTTP_MaxViewRows";300);
@SetField("HTTP_CSWestern";"32");
@SetField("HTTP_DefSearchMax";250);
@SetField("HTTP_CSCentralEuropean";"80");
@SetField("HTTP_MaxSearchMax";500);
@SetField("HTTP_CSJapanese";"18");
@SetField("HTTP_GenBangUrls";"0");
@SetField("HTTP_CSTaiwanese";"26");
@SetField("HTTP_EnableRedirectCmd";"0");
@SetField("HTTP_CSChinese";"27");
@SetField("HTTP_CSKorean";"24");
@SetField("HTTP_CSCyrillic";"3308");
@SetField("HTTP_CSGreek";"83");
@SetField("HTTP_CacheDir";"domino\cache");
@SetField("HTTP_CSTurkish";"84");
@SetField("HTTP_MaxCacheSize";50);
@SetField("HTTP_CSThai";"144");
@SetField("HTTP_DeleteCache";"0");
@SetField("HTTP_CSBaltic";"87");
@SetField("HTTP_EnableGC";"1");
@SetField("HTTP_CSArabic";"86");
@SetField("HTTP_GCInterval";60);
@SetField("HTTP_CSHebrew";"3356");
@SetField("HTTP_CSVietnamese";"3310");
@SetField("HTTP_Version";1);
@SetField("HTTP_CSIndic";"171");
@SetField("HTTP_AutoDetect";"0");

REM {--------------------------------------------------------------------};
REM {Section - Web Agents and Web Services:};
REM {--------------------------------------------------------------------};

@SetField("HTTP_asynchronizeAgents";"0");
@SetField("HTTP_webAgentTimeout";0);

@SetField("HTTP_HeaderCharset";"1");
@SetField("HTTP_MetaCharset";"0");

REM {--------------------------------------------------------------------};
REM {Section - Domino XML Services:};
REM {--------------------------------------------------------------------};

@SetField("HTTP_DomWSAppSpace";"1");
@SetField("HTTP_DomWSAddinMaxThreads";20);
@SetField("HTTP_DomWSForceFromValue";"1");

REM {--------------------------------------------------------------------};
REM {section - DIIOP:};
REM {--------------------------------------------------------------------};

@SetField("IIOP_HtmlDir";"");
@SetField("IIOP_IdleMinsAllowed";60);
@SetField("IIOP_IORHost";"");
@SetField("IIOP_ThreadPoolSize";10);

REM {--------------------------------------------------------------------};
REM {Tab - OS Monitors:};
REM {--------------------------------------------------------------------};

@SetField("DiskC";"");
@SetField("SpndlCtC";"1");
@SetField("DiskO";"");
@SetField("SpndlCtO";"1");
@SetField("DiskD";"");
@SetField("SpndlCtD";"1");
@SetField("DiskP";"");
@SetField("SpndlCtP";"1");
@SetField("DiskE";"");
@SetField("SpndlCtE";"1");
@SetField("DiskQ";"");
@SetField("SpndlCtQ";"1");
@SetField("DiskF";"");
@SetField("SpndlCtF";"1");
@SetField("DiskR";"");
@SetField("SpndlCtR";"1");
@SetField("DiskG";"");
@SetField("SpndlCtG";"1");
@SetField("DiskS";"");
@SetField("SpndlCtS";"1");
@SetField("DiskH";"");
@SetField("SpndlCtH";"1");
@SetField("DiskT";"");
@SetField("SpndlCtT";"1");
@SetField("DiskI";"");
@SetField("SpndlCtI";"1");
@SetField("DiskU";"");
@SetField("SpndlCtU";"1");
@SetField("DiskJ";"");
@SetField("SpndlCtJ";"1");
@SetField("DiskV";"");
@SetField("SpndlCtV";"1");
@SetField("DiskK";"");
@SetField("SpndlCtK";"1");
@SetField("DiskW";"");
@SetField("SpndlCtW";"1");
@SetField("DiskL";"");
@SetField("SpndlCtL";"1");
@SetField("DiskX";"");
@SetField("SpndlCtX";"1");
@SetField("DiskM";"");
@SetField("SpndlCtM";"1");
@SetField("DiskY";"");
@SetField("SpndlCtY";"1");
@SetField("DiskN";"");
@SetField("SpndlCtN";"1");
@SetField("DiskZ";"");
@SetField("SpndlCtZ";"1");

REM {--------------------------------------------------------------------};
REM {Tab - Transaction Logging:};
REM {--------------------------------------------------------------------};

REM {--------------------------------------------------------------------};
REM {Section - Basic:};
REM {--------------------------------------------------------------------};

REM {Transactional logging:};
@SetField("TRANSLOG_Status";"1");
REM {Transaction log paths:};
@SetField("TRANSLOG_Path";"logdir");
@SetField("TRANSLOG_Style";"0");
@SetField("TRANSLOG_UseAll";"0");
REM {Transactional logging size:};
@SetField("TRANSLOG_MaxSize";4096);
@SetField("TRANSLOG_AutoFixup";"1");
@SetField("TRANSLOG_Performance";"2");

REM {--------------------------------------------------------------------};
REM {Tab - Miscellaneous:};
REM {--------------------------------------------------------------------};

REM {--------------------------------------------------------------------};
REM {Section - Contact Info:};
REM {--------------------------------------------------------------------};

@SetField("Location";"");
@SetField("Department";"");
@SetField("Comment";"");
@SetField("ServerDescription";"");

REM {--------------------------------------------------------------------};
REM {Section - Quotas:};
REM {--------------------------------------------------------------------};

@SetField("QtaMthd";"1");

REM {--------------------------------------------------------------------};
REM {Tab - Sametime Server - Only for ST Community servers:};
REM {--------------------------------------------------------------------};

@SetField("STVPClientPort";1533);
@SetField("STPort_T120";8081);
@SetField("STPort_VP";1516);
@SetField("STPort_T123";1503);
@SetField("STCommunityHTTPSPort";1533);
@SetField("STMeetingHTTPSPort";8081);
@SetField("STCommunityHTTPTunneling";"1");
@SetField("STCommunityHTTPTunnelingPort";8082);
@SetField("STMeetingHTTPTunnelingPort";8081);
@SetField("STMaxCommunityConnections";8000);
@SetField("ST_HostName";"");
@SetField("STDirChunkSize";100);
@SetField("ST_BindToHostName";"0");
@SetField("STDirRefreshInterval";60);
@SetField("STActiveMeetingsLimitEnabled";"");
@SetField("STActiveMeetingsLimit";100);
@SetField("STConfigRefreshInterval";60);
@SetField("STTotalUsersLimitEnabled";"");
@SetField("STTotalUsersLimit";500);
@SetField("STMeetingUsersLimitEnabled";"");
@SetField("STMeetingUsersLimit";50);
@SetField("STAutoExtendMeetingEnabled";"1");
@SetField("STMeetingExtendTime";15);
@SetField("STLogTime";"0");
@SetField("STCommunityLogin";"1");
@SetField("STCommunityLoginFailed";"");
@SetField("STCommunityTotalConnections";"");
@SetField("STLogHistory";30);
@SetField("STCommunityLogUsageFrequency";10);
@SetField("STLogToFiles";"0");
@SetField("STMeetingLogEvents";"1");
@SetField("STMeetingLogParticipants";"1");
@SetField("STLogToNSF";"1");
@SetField("STLogFileName";"sametime.log");

REM {--------------------------------------------------------------------};
REM {Tab - Shared Mail - DO NOT USE:};
REM {--------------------------------------------------------------------};

@SetField("SHARED_MAIL";"");

REM {--------------------------------------------------------------------};
REM {Tab - DAOS:};
REM {--------------------------------------------------------------------};

REM {--------------------------------------------------------------------};
REM {Section - Basic:};
REM {--------------------------------------------------------------------};

@SetField("DAOSEnable";"0");
@SetField("DAOSMinObjSize";"64000");
@SetField("DAOSBasePath";"DAOS");
@SetField("DAOSObjDelete";30);

REM {--------------------------------------------------------------------};
REM {Tab - DB2:};
REM {--------------------------------------------------------------------};

REM {--------------------------------------------------------------------};
REM {Section - DB2:};
REM {--------------------------------------------------------------------};

@SetField("DB2Host";"");
@SetField("DB2Port";"");
@SetField("DB2Inst";"");
@SetField("DB2Db";"");
@SetField("DB2Dir";"");
@SetField("DB2Def";"1");
@SetField("DB2UDFSrv";"");
@SetField("DB2UDFPath";"");
@SetField("DB2GroupMax";10);
@SetField("DB2DefUser";"");
@SetField("DB2QVRows";500);
@SetField("DB2AcWrn";15);

REM {--------------------------------------------------------------------};
REM {Tab - Lotus Traveler:};
REM {--------------------------------------------------------------------};

REM {--------------------------------------------------------------------};
REM {Section - Basic:};
REM {--------------------------------------------------------------------};

@SetField("tsMaxMem";512);
@SetField("tsIPCPort";50125);
@SetField("tsIPCPort2";50126);
@SetField("tsExternalURL";"");

REM {--------------------------------------------------------------------};
REM {Section - Lotus Traveler Access:};
REM {--------------------------------------------------------------------};

@SetField("tsAddressBookAccess";"1");
@SetField("tsAccessServerInput";" ");
@SetField("tsAllowAccess";"*");
@SetField("tsDenyAccess";"");
@SetField("tsUserCMD";"0");
@SetField("tsUserWipe";"1");

REM {--------------------------------------------------------------------};
REM {Section - Log Settings:};
REM {--------------------------------------------------------------------};

@SetField("tsLogLevel";"3");
@SetField("tsTrcLevel";"0");
@SetField("tsTrcCmp";"*");
@SetField("tsTrcSize";50);
@SetField("tsTrcFiles";10);
@SetField("tsTrcPriv";"2" : "4" : "8" : "16");

REM {--------------------------------------------------------------------};
REM {Section - Auto Sync Settings:};
REM {--------------------------------------------------------------------};

@SetField("tsPollTime";3);
@SetField("devPTCPP";8642);
@SetField("tsPHBeatAlg";"2");
@SetField("tsPHBFixed";55);
@SetField("tsPHBInitial";30);
@SetField("tsPHBAmim";30);
@SetField("tsPHBAmaxsec";15);
@SetField("tsPHBAmax";900);
@SetField("tsPHBAretry";30);
@SetField("tsPofflinehr";24);
@SetField("tsPoffline";1440);
@SetField("tsPcleanup";30);

REM {--------------------------------------------------------------------};
REM {Tab - Administration:};
REM {--------------------------------------------------------------------};

REM {--------------------------------------------------------------------};
REM {Section - Administration:};
REM {--------------------------------------------------------------------};

@SetField("Owner";"$Admins");
@SetField("LocalAdmin";"$Admins");
@SetField("PKMinWidth";"0");
@SetField("PKMaxWidth";"1024");
@SetField("PKDefWidth";"1024");
@SetField("PKMaxAge";36500);
@SetField("PKMinDate";"08/01/1977");
@SetField("PKDueDate";"11/28/2106");
@SetField("PKOldKeyDays";365);
SELECT @All




That's it for now. Have fun!

PS. If you think you can do better with scripts then post it here and I will update my methods.

As I still have many IBM connections I pulled a report for a bank that I nursed back into a positive outlook on Domino and worked closely with them to rebuild confidence in Domino.

How did I do that? I DID stuff! Just as with my good friend Mat, that I battled to get into big blue, I put my money where my mouth was. I did not say implement DAOS because apparently it is good, I implemented DAOS working with the teams in the trenches and when the bank exec wanted to know why the systems are now faster and the outsourcing bill for storage has dropped and not increased I told the client that DAOS is now implemented and working well.

Apart from a few good names in IBM most "loti" that are left in IBM only talk a good game. They dare not actually do stuff as they frankly, do not know how to. You know that I am talking to you now. Yes you.

Here is a point and case. Cleaned up a little of course! It is an IBM report to this customer and after this costly two week (sick) report, with expenses, they are now evaluating exchange and WILL be moving.

This report is a regurgitated report (template) that is all about  covering ass and just accuses the customer of being negligent and lazy even though the system is outsourced! It offers no solution and simply points a righteousness finger at the customer. I challenge the antipodeans that wrote this nonsense to actually go and implement this bullshit on a production system running 30,000 hard working banking folk. I have no respect for these IBMers.

Executive Summary
Approach
Summary
1.Reduce the number of folders/sub-folders housing mail files
2.Implement Automatic Inbox Maintenance
3.Implement a second Domino Administration server and configure clustering
4.Perform maintenance on the AdminP database
5.Perform regular offline Domino maintenance
6.Rectify Domino Directory sync inconsistencies across all servers
7.Clean up notes.ini files
8.Clean up connection documents
9.Verify all clusters and rectify missing/obsolete replicas
10.Disable all non required ports
11.Disable all non-required Domino server tasks and remove duplicate server tasks
12.Distribute users/mail files evenly across all mail servers and clusters
13.Move/remove all mail files from the Domino Data root directory
14.Reduce the size of excessively large mail-in databases
15.Reduce the number of Configuration Documents by implementing 'like for like' servers using server groups
16.Reduce "all" user’s mail file access to Editor
17.Set 'Default' and 'Anonymous' in all NSF and NTF ACLs to 'No Access'
18.Change server group documents from Multi-purpose to Servers Only
19.Remove Proofpoint mail-in database from xxxx
20.Rectify Database Catalog
21.Rectify Monitoring Results database
22.Rectify DomLog.nsf
Additional Recommendations and Findings
Appendix 1 - Inbox Maintenance
Appendix 2 - Domino Clustering

After reading and cleaning this index my blood is boiling! WTF! how would any of this make the slightest difference! Pathetic!!! If I published the content you, the reader, will cry. If you think the content is more helpful you are very wrong.

I will now publish what should be done in the next few post!

  

Thursday, 10 April 2014

Melodramatic ranting or what.

I am working on a Lotus Notes / Domino system to be deployed in Uganda in my spare time. This task is confusing my little brain to the point of it almost exploding.



Here is a synopses of my struggle.




Good:


  1. Domino is powerful
  2. Domino is scalable
  3. Databases from 1998 still performs, and performs well
  4. Domino is secure. Cracking Local Access Control is difficult ;-)
  5. Domino runs on Linux Mint
  6. Domino v6 type web databases (by good developers) are still amazing
  7. xPages are not to bad (in small doses)
  8. Domino runs well on tiny hardware  
The Bad: (this is not an exhaustive list - Google will run out of space if all the bad stuff is listed)


  1. NOBODY wants this stuff (anywhere near them)
  2. There are NO Lotus jobs so this is a dead end
  3. You really need to know your stuff to make it work properly
  4. Quirky, unique, annoying, frustrating, mental, nuts are all good words to describe the setup
  5. The Lotus eclipse client. Nuff said.
  6. Domino designer. Nuff said.
  7. The cost (if you ever pay) is astronomical
I do not understand, and nobody will ever, why the IBM exec hates Lotus Notes and Domino so much when it has (had) so much going for it. As an exIBMer I have spoken to previous clients and they are all moving away. Folks like H-SBC is falling over themselves to "evaluate" alternatives and they are following a strategy of burn and blame. In other words, they are not maintaining Domino and when it invariably fails they just blame the technology and use it as a justification to evaluate more alternatives. Not that alternatives such as Zimbra is any better. Zimbra as a company simply sucks and is not even in the running even though they could be a contender.

I went for a quick interview at JLP just to see why they are moving away from Notes and had a bad feeling when I signed into the building. I issued a report in 2008 to JLP on how to upgrade the mail template from their sucky suck suck template but I could see that even in 2014 they still had the same template running on an old client. I asked about co-existence and archives and so on, as they were looking for a migration PM, but when the interviewee said they have already moved 1000 users to Google mail and they are doing it "eyes wide open" (sick) I gave up. In my due diligence all the IBMers assigned to JLP was moved on and the JLP domino staff I knew all had updated Linkedin pages with "looking for opportunities" in the titles.

It is a sad state of affairs. But who is to blame? I wonder how long Domino will survive? What I do know is that even today you can grab the exe's (any version really) install Domino and create a world class super secure mail and application system that is robust and secure enough to run a country's whole infrastructure or power a revolution!

If IBM were to opensource (after pigs started flying) Notes and Domino would it recover or would people still hate it? Now there is a question.

My head hurts.

 

  

  

Monday, 10 March 2014

Lotus Sandbox - By Category:



'via Blog this'



To most this may not mean much but then again...






 By Application Name
 By Category
 By Product
 By Audience
 By Date
 By Submitter
 Conferences

  By Category

Previous  Next  Expand  Collapse 

Show details for API ToolkitAPI Toolkit
Show details for Code ExampleCode Example
Show details for DevCon Code SamplesDevCon Code Samples
Show details for DevCon Developer PresentationsDevCon Developer Presentations
Show details for Lotusphere Code SamplesLotusphere Code Samples
Show details for Lotusphere Developer PresentationsLotusphere Developer Presentations
Show details for Notes.Net TemplatesNotes.Net Templates
Show details for Presentations/SlidesPresentations/Slides
Show details for Samples/DemosSamples/Demos
Show details for TemplatesTemplates
Show details for ToolsTools
Show details for TutorialsTutorials