Usability - Productivity - Business - The web - Singapore & Twins


Burn Chart in Dojo
A burn chart implementation in Dojo
Source and Binary code for Java based tools
to calculate Notes metrics
Fetch the Lotusphere Presentations on one go
You need to replace the user name and password
with what you have on your Lotusphere batch.
Sample Stylesheet to transform a NotesView
into a xPage
Sample code to scan a database for design
Read Protection Sample Database
Shows example code for efficient handling
of multi category read access protected documents
Helper File to get all class names that
are used in Domino 8.5 OneUI theme
Large ReaderFields > 32k members
Class that simulateses large reader fields
by dynamically creating groups for them
Stylesheets for Connections 2.5
XSLT Stylesheets for the ATOM content emitted
by Lotus Connections 2.5. One style creates a table with custom fields
as columns. Presumes all custom fields are the same (useful for surveys
etc.). The other one lists all attachments in an activity including size
and download link
OneUI V2 CSS files  - no style definition
Compare documents of 2 databases
Compares documents in databases that are
related (e.g. replicas, backups, create with "new copy") and
finds additions, deletions and alterations
Import MIME / EML messages into Notes
Classes to run imports:
package com.notessensei.mimeimport;

import java.io.IOException;
import java.io.InputStream;
import java.util.Stack;

import lotus.domino.Document;
import lotus.domino.MIMEEntity;
import lotus.domino.NotesException;
import lotus.domino.Session;
import lotus.domino.Stream;

import org.apache.james.mime4j.MimeException;
import org.apache.james.mime4j.parser.AbstractContentHandler;
import org.apache.james.mime4j.parser.ContentHandler;
import org.apache.james.mime4j.stream.BodyDescriptor;
import org.apache.james.mime4j.stream.Field;

public class DocContentHandler extends AbstractContentHandler implements
        ContentHandler {

    public static final String TEXTMIMETYPE = "text/plain";
    public static final String HTMLMIMETYPE = "text/html";
    public static final String RTFIELDNAME = "Body";

    Document doc = null;
    Session s = null;
    boolean mimeStatus = true;
    Stack<MimePartInfo> mimeParts = new Stack<MimePartInfo>();

    public DocContentHandler(Session
s, Document newDoc) {
        this.doc = newDoc;
        this.s = s;

    public void body(BodyDescriptor
bd, InputStream is) throws MimeException, IOException {
        String mtype = this.mimeParts.peek().getContentType();
     Mime-Part: " + mtype);

    private void createBody(BodyDescriptor
bd, InputStream is) {
        try {
            Stream notesIn = s.createStream();
            MimePartInfo p = this.mimeParts.peek();
            MIMEEntity m = p.getMimepart();
        } catch (NotesException
e) {

    public void endBodyPart() throws MimeException {

    public void endMessage() throws MimeException {
        try {
     -- Import complete");
        } catch (NotesException
e) {

    public void field(Field rawField) throws MimeException {

    public void startBodyPart() throws MimeException {

    public void startMessage() throws MimeException {
        try {
            this.mimeStatus = s.isConvertMime();
            MIMEEntity body = doc.createMIMEEntity(DocContentHandler.RTFIELDNAME);
            this.mimeParts.push(new MimePartInfo(body)); //
First element on the stack
        } catch (NotesException
e) {
LDAP extensions for Domino
OpenNTF LDAP Compatibility Directory Extensions

The OpenNTF LDAP Compatibility Directory
Extensions can be added to your Domino Directory to improve overall support
for LDAP compatibility from Domino servers.

There are 3 principle objectives for these

1) Provide a profile-driven mechanism
to set an overall BaseDN on your LDAP directory.

2) Provide for hierarchical distinguished
group names without interfering with existing Domino ACLs.

3) Prevent invalid entries from appearing
in LDAP queries which break standard tools like Apache Directory Services
for Eclipse.

Secondary objectives include:

Compatibility with PAM account management
for Linux systems.

Creation of Organization and OrganizationalUnit
records automatically when needed.

Graceful fallback when configuration erroneous
or incomplete.

There are 4 views, 4 subforms and 1 form
included with this template. Of the 4 views, one is entirely new and is
used for UIDNumber assignment, while the other 3 replace the existing ($LDAPCN),
($LDAPHier) and ($LDAPRDNHier) views.

Of the 4 subforms, two are new, providing
the PAM and DN extensions for Groups and Person records, while two demostrate
implementation of those extensions in the standard Extensibility schema
provided by the Domino Directory.

The form replaced the standard DirectoryProfile
form, and adds a tab for LDAP where you can set the BaseDN and an optional
DN for entries with potentially invalid characters ($, *, ~, #, etc)

Many thanks to Andre Guirard for his excellent
documentation on User Customizable
view columns, though he will discover that this template proves one statement
in his post wrong. And also to Alan Bell for his equally
excellent document on using Domino
LDAP for authentication on Posix systems.
On Disk Project Cocomo
Run this tool against your OnDisk Project
for a CoCoMo Analysis
Demo for an Angular.js timeline

LotusScript for embedded experiences eMails
Unsorted Sourcecode of Sametime Stuff
Agent code to create a batch file to extract
all buddy lists using the Sametime
tool provided by Epilio and some
Java code to concatenate them and run a report. Sample report included.