How to open a Notes Database in Ten Years

Assume you have a database from an employee in ODS 43 format. The employee quit the company and you put his mail file on a DVD.
Whoooosh … 10 years later you are asked to find a special document in this database. At this time you’re running Notes 12.5 with ODS 99. I know, Lotus Notes will always be downward compatible …

What I want to say is, that all archive systems offer an option to have a copy of all or of all selected documents on a cd or DVD and you can hand out this storage to anyone, regardless if he or she has the associated appication installed on his computer.

The data is written on the storage together with a runtime version of the application the data is created with.

Will we ever have this feature in Notes ? Anyone at IBM reading this and like to leave a comment ?


Notes Client On USB Key – The Starter

As I posted earlier this week, I was about to write a small starter application that would do all the necessary changes to the notes.ini when you have a notes installation on an usb key. Well here it is: nstart.exe
When you plug in your usb key to a different computer, you cannot be sure to have the same drive letter for your usb device than before.
In this case your Notes won’t start and you have to tweak the notes.ini manually.
Copy nstart.exe to the notes root directory. When you double click nstart.exe, the tool will set all occurencies of drives ( for example e:\ ) to your current drives letter and then start notes.exe.
The code is still very beta; it should have more error handling, I know. But I decided to release the code in this very early state. The code works for me but maybe not for you. So please give me a feedback when you find the code useful. Even if you think this stuff is crap, please let me know. And if you find errors ( and I’m sure you will ) just leave a comment.


// nstart.cpp
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "nstart.h"
#include "CPathSplit.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
#define NOTES_INI "notes.ini"
#define NOTES_PRG "notes.exe"
#define BACKSLASH ":\\"

CWinApp theApp;
CFile* fin = NULL;
CFile* fout = NULL;
CFileException ex;
CString Drives ="CDEFGHIJKLMNOPQRSTUVWXYZcdefghijklmnopqrstuvwxyz";
char AppPath[MAX_PATH];
int i, n, j;

using namespace std;

/////////////////////////////////////////////////////////////////////////////
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;

if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
cerr < < _T("Fatal Error: MFC initialization failed") << endl; nRetCode = 1; } else try { GetModuleFileName(AfxGetApp()->m_hInstance,AppPath,MAX_PATH);
CString l_oStrPath = AppPath;
CPathSplit l_oPathSplit(l_oStrPath);

CString l_oStrFileExt;
CString l_oStrPathCustom;
l_oStrFileExt = NOTES_INI;
l_oStrPathCustom = l_oPathSplit.GetPath(ePATHEL_DIRECTORY, & l_oStrFileExt);

CString BS(_T(BACKSLASH));
CString strPath(AppPath);
CString ThisDrive (strPath.Left(1) + BS);

fin = new CFile( l_oStrPathCustom, CFile::modeRead | CFile::shareDenyNone);
ULONGLONG dwLength = fin->GetLength();
char pbuf[99999] = {dwLength}; // read NOTES.INI
UINT nBytesRead = fin->Read( pbuf,dwLength );
fin->Close();

CString buffer(pbuf);

// replace drive letters with current drive
for (i=0; i < Drives.GetLength() ; i++) { CString DriveLetter (_T(Drives.GetAt(i) + BS)); j = buffer.Replace(_T(DriveLetter), _T(ThisDrive)); } // write notes.ini fout = new CFile( l_oStrPathCustom ,CFile::modeWrite | CFile::shareDenyWrite); fout->Write(_T(buffer),dwLength);
fout->Flush();
fout->Close();

// start the client
l_oStrFileExt = NOTES_PRG;
l_oStrPathCustom = l_oPathSplit.GetPath(ePATHEL_DIRECTORY, & l_oStrFileExt);
ShellExecute(0, "open", l_oStrPathCustom, 0, 0, 1);
}

catch (CFileException* pEx)
{
// if an error occurs, just make a message box
pEx->ReportError();
pEx->Delete();
nRetCode = 1;
}
catch (...)
{
nRetCode = 1;
}

return nRetCode;
}

Download Source


Notes Client on USB key

IBM announced Project “Wanda” at Lotusphere2006.

Project Wanda : for roaming users you can carry for entire Notes experience on a usb key that can plug into any computer regardless of if it has notes installed.

This is a great idea. I’m not at Lotusphere; so I’m not able to ask for further details. ( anyone out there who has details and would share his knowledge ? )
I guess, that they will use U3 technologie to accomplish this.

But why wait for Wanda ?
For all of you, who haven’t already have a Notes Client “installation” on an USB-key, here is what I did:

I just copied my local Notes folder to the key and tweaked the notes.ini. That was easy, wasn’t it ?

Ok, there are a few limitations:

  • The stick must have at least 350 MB of free space
  • Depending on the drive letter you have to tweak the notes.ini manually once again
  • You cannot start a Notes Database by double-clicking ( registry entries are missing).

As a workaround whilst waiting for Wanda, I will write a “starter” asap, so all you have to do is plug in the key and double click the nstart.exe. The nstart.exe will change the notes.ini for you.


Blog, blog, blogging from Lotusphere

Sitting in good ol’ Germany, I’m eager to read the “Bloggregator” ( by Richard Schwartz )
Yesterday there was a real information overflow due to a huge amount of blog entries. Today it seems to me that soft drinks flavoured with Yak pee, coffee and other energy drinks do not work any longer for the hardcore bloggers.
You can count the number of new entries by 10 fingers. What’s up ? ūüėČ

Anyway, have a good time there at Lotusphere2006.


Why at least pay for what you can get free of charge ?

According to Ed Brill there are plans to have “standard out-of-the-box RSS feed support as well as blog template support” .
To be honest; why do I have to pay for new “features” I can get free of charge from the Open Source community ? I can download a well working Blog template from OpenNTF and can code a RSS feed using generic Lotus Notes capabilities.

It is ridiculous to offer more and more new features but leave the core product as is.
I’ve complained about the fact that it is not possible to change the column headers at runtime. The same complaint about tabbed tables labels.
Another one is about sections. Why can i change the twistie in views using an alternative to the standard picture but cannot use this in sections ?

Developers should rather concentrate on how to implement code for this than create functions for stuff that is already available


madicon easyMail

easymalWerbung (nicht im Sinne von SPAM) per eMail ist heute √ľblich und bietet eine kosteng√ľnstige Variante, Kunden oder Interessenten zeitnah mit aktuellen Informationen bzgl. neuer Produkte oder Dienstleistungen zu versorgen.

Solche Mails sollten eine individuelle Anrede aufweisen und ggf. im Text der Mail weitere, dem Empfänger der Mail zugeordnete Details enthalten. Kurz Рeine solche Mail sollte personalisiert sein.

Zus√§tzlich sollen wichtige Textstellen optisch hervorgehoben werden k√∂nnen und somit auch eine (heute √ľbliche) Zeichen- bzgl. Absatzformatierung m√∂glich sein. Auch die Unterst√ľtzung von Dateianh√§ngen sollte eine Selbstverst√§ndlichkeit sein.

Manfred Dillmann hat nach dem madicon RSS reader mit madicon easymail wieder einmal ein hervorragendes Programm veröffentlicht.


Team Mailbox v2.11

In jedem Unternehmen gibt es Mail-In Datenbanken wie info@acme.com oder sales@acme.com. In den meisten Fällen liegt diesen Datenbanken das Design der Standard Mailschablone zugrunde.

Diese Datenbanken werden zumeist nicht nur von einer einzigen Person genutzt, sondern von einem Team. Die Standardschablone hat aber den Nachteil, da√É? man keine Gruppe als Datenbankeigent√ľmer in die Vorgaben eintragen kann.

Brian Green stellt hier seine Team Mailbox v2.11 zum kostenlosen Download zur Verf√ľgung.

[via Bruce Elgort]


Creating a database replica (stub) that contains no documents

When creating a new copy of a database with File -> Database -> New Copy, there is an option to only copy the design and no documents from the source database.
When creating a new replica of a database with File -> Replication -> New Replica, there is no option like this. The replica stub that is created will not include any documents, but it will not allow administrators to make any modifications to the database design or the Access Control List (ACL).

To create a replica of a database without any documents do the following

[via Lotus Notes Knowledgebase # 1097325]


Wink

Wink is a Tutorial and Presentation creation software, primarily aimed at creating tutorials on how to use software (like a tutor for MS-Word/Excel etc). Using Wink you can capture screenshots, add explanations boxes, buttons, titles etc and generate a highly effective tutorial for your users.

Wink is distributed as freeware for business or personal use.

[via Julian Robichaux, Jumpstart Session Sneak Peek]


Lotusphere2006, Blackberry, Web Services

A few weeks ago, I already wrote a short note about RIM’s request to connect the Blackberry to the heldesk application !!HELP!! using the new web services feature in Domino 7.
Create Ticket via web services At this time I did not know much about web services and how a Blackberry could access the services in a Domino appication. So I decided to listen to the Julian Robichaux’s podcasts about web services on Taking Notes once again. After I realized that writing a web service in LotusScript is as easy as writing an agent, I began to code a few basic services like “Create Ticket” and “GetAllTicketsBySupporter”.

So far for the “producer” part; but what about the “consumer” ??

How could I test, if the services would work ?

After a short search on Google I found Webservice Studio. .NET Webservice Studio is a tool to invoke webmethods interactively. The user can provide a WSDL endpoint. On clicking button Get the tool fetches the WSDL, generates .NET proxy from the WSDL and displays the list of methods available. The user can choose any method and provide the required input parameters. On clicking Invoke the SOAP request is sent to the server and the response is parsed to display the return value.

Axel Janssen started to code a SWING client ( now available on sourceforge ) and Mark Teichmann created a RPC client to access and consume the services. Both, Axel and Mark are members of the German Notes Forum atnotes.de. If you are a german native speaker, you can read the whole story here

After coding a handful of services; I sent the source to RIM. Here is Jon’s reply:

I was able to load the lss into a web service just fine.
The web service imported into a MDS Studio project without problems. The final stage is to test the functionality through the service from our MDS connection service. … I am suspecting that the services will be consumed by the client without problems.

Assuming this all comes together on time, it will be a great showcase of your application and our platform capabilities.

What comes next ? Well, here comes the next mail from Jon:

Ulrich, update from our team meeting.
We are going to use the Help app in at least two of our hands-on training sessions at Lotusphere on Sunday and Monday.
We have another presentation session on Wed where it may get highlighted.
We have several booths on the showcase floor that will be demoing apps, and the App may make the these booth pods as well.

If you are at Lotusphere, be sure to visit the RIM booth ūüėČ

!!HELP!! is an OpenNTF project and Bruce Elgort has a session about OpenNTF ( BP-105) . Please visit his presentation and “Learn How OpenNTF Open Source Solutions Can Save You Time, Money and Your Hair!”

And, to answer the question in advance; No, I’ll not be at Lotusphere. ūüėē


How to get control of your Server Availability Index (SAI) in 6.x

You upgraded your Domino 5.x server to 6.x or installed a new 6.x server and notice that:

  1. The SAI does not seem to behave the same in 6.x as it did in 5.x.
  2. The SAI is lower than expected.
  3. The SAI seems to move quickly between high and low.
  4. Your server tends to get busy (SAI=0) when it seems to still have plenty of power available.

The SAI calculation has changed between 5.x and 6.x. In 6.x, the SAI is more accurate, but consequently, being more sensitive, its default range is not appropriate for all type of servers.

Depending on the type of host server, alternate settings may be necessary to normalize the SAI.

This issue is independent of the performance of the host server or Domino server, but it can appear that the availability of the server is affected. This is because the SAI settings need to be adjusted.

By default, the server_transinfo_range in 6.x is set to 6. In many cases, this setting is too low for more powerful modern servers.

The solution is to set server_transinfo_range=25 in the notes.ini and to recycle the Domino server.

When upgrading from 5.x (or 6.x versions prior to 6.0.3), rename the file loadmon.ncf before restarting Domino. This file will be recreated.

A server_transinfo_range of 20 will bring your SAI to approximately 70, and a server_transinfo_range of 30 will bring your SAI to approximately 85.

[ Lotus Notes KnowledgeBase #1196871 ]


Web users are unable to upload files larger than 10 MB

Web users are not able to upload a file whose size is greater than 10 MB to a database on a Lotus Domino 6 server. Domino returns the following error message to the user:

‘Error: Unable to upload file: ‘

Or users might see the following error in the browser:

‘The page cannot be displayed. ‘

The error occurs when uploading a file, or attaching a file to a document, for any database on the server. You verify this is a server issue by creating a test database that includes an embedded file upload control on a form and a submit button, and reproducing the problem in this new database. You may notice this behavior for a new Domino 6 installation, or after upgrading the server from Domino R5 to Domino 6.  

By default, a Lotus Domino 6 server allows a maximum of 10 MB of POST data, which applies to file uploads.  To allow larger files to be uploaded to a Lotus Domino 6 server, you should verify or change the following settings in the Server document:

Maximum size of request content

The “Maximum size of request content” field is new to Domino 6.¬† This field sets the total amount of data that can be contained in a request.¬† This limit is enforced for all POST and PUT methods.¬† The default is 10 MB.¬† You can set a specific size, or enter zero (0) to allow an unlimited file size.

This field is found in the Server document, on the Internet Protocols – HTTP tab.

Maximum POST Data

The “Maximum POST data” field sets the amount of data that a user is allowed to send to the Web site in a POST request that targets a database. The default is 0, which does not restrict the amount of data that users can send.

This field is found in the Server document, on the Internet Protocols – Domino Web Engine tab.


Knochenmarkspende

DKMS Deutsche Knochenmarkspenderdatei Vor etlichen Jahren habe ich mich in das Deutsche Knochenmarkspender Verzeichnis eintragen lassen. Vor gut vier Jahren bekam ich erstmals einen Brief in dem stand, dass meine Gewebemerkmale mit denen eines an Leuk√§mie erkrankten Patienten √ľbereinstimmen.
Ob eine Knochenmarkspende in Frage kommt, wurde in einer zweiten Untersuchung in der Uni Klinik D√ľsseldorf ermittelt. Damals ohne Erfolg.

Heute √ľberreichte mir der Postbote ein Paket ( Absender Uni Klinik D√ľsseldorf ) mit der Bitte, mir schnellstm√∂glich eine Blutprobe entnehmen zu lassen, da auch jetzt wieder der Fall eingetreten ist, da√É? ich m√∂glicherweise einem schwer erkrankten Menschen durch eine simple Aktion helfen kann. Das notwendige Vacutainer System lag dem Paket bei; ebenso die Anweisung an die die Butentnahme durchf√ľhrende Praxis, keine Praxisgeb√ľhr zu erheben.
Ich weiss, ich bin nicht der Einzige, der angeschrieben wurde. Trotzdem finde ich es erstaunlich, da√É? bei all’ den m√∂glichen Spendern ich nun zum zweiten Mal als Spender in Frage komme.

Als ich mich seinerzeit habe registrieren lassen, ging es wirklich noch darum in einem operativen Eingriff Knochemmark zu extrahieren; heuzutage wird das ohne OP gemacht.

Daher möchte ich an dieser Stelle dazu auffordern, sich als möglicher Spender registrieren zu lassen.
Man muss sich lediglich ein wenig But abnehmen lassen …
Das ist eine Kleinigkeit, die aber evtl. Grosses bewirken kann.