Java-based applications have become a major element of the IBM Lotus world. In many cases, it is possible to integrate Lotus applications/data with Java applications. However, as data becomes more relational and requires more transactions, the best solution is to completely migrate it from a Notes database to a J2EE-based application with a relational database as the back end.
Although many people fear that a migration to Java will render existing Notes applications unusable, it is possible to move those applications to your new J2EE platform and retain your Notes investment without manually recoding Notes features in Java. With the help of a few automated development tools and a good foundation in the form of Jakarta Struts, WebSphere and perhaps the DB2 database, you can successfully merge and migrate your Notes investments to Java. Finally migrating your data will help ensure that users can pick up with the new platform where they left off with Lotus Notes.
There are four major steps to migrating Notes to Java.
1) You need to analyze the existing Notes infrastructure, examine usage metrics and identify which Lotus Notes applications are to be retired, merged and/or migrated.
2) Notes applications need to be migrated to the J2EE infrastructure based on the Jakarta Struts framework.
3) The business logic in Notes must also be migrated to its Java equivalent.
4) The existing Notes data is migrated to the relational database.
Now let's take a closer look at these four steps.
Step 1: Inventory Notes applications. First, you should inventory your current Notes applications and databases in order to see how widely used Notes is in your organization.
Why is this so important? Given that Notes usage tends to be departmentally driven, it is often implemented without much involvement from the corporate IT staff. This increases the likelihood that there are dozens of Notes resources in your environment that you don't know about. Therefore, before you start down a migration path, you need to record the critical applications that need to be preserved in Notes or migrated to Java, the redundant applications that should be merged with others, and the aging, unused applications that are ripe for retirement.
The Notes log is a good place to start analyzing Notes applications and server usage. There are also third-party tools that auto-discover these applications for you and report back details about them, such as their names, size, date of creation, ownership and level of complexity. Many companies offer tools to help users speed up the inventory process; ToJava offers a freeware product, the ToJava Notes Analyzer.
Step 2: Employ Struts and the Model-View-Controller design. Jakarta Struts is an excellent framework for a Notes-to-Java migration. It is written entirely in Java, using standard J2EE APIs, and offers several well-known J2EE design patterns, including the Model-View-Controller (MVC) foundation for replicating Notes-like features in J2EE. The Struts action forms and forms beans can provide the functionalities for Notes forms and fields, and the Struts actions replace some of the Notes business logic such as that written in LotusScript and @Formula. Rational Application Developer 6.0 has built-in Struts support, including a Struts Configuration editor.
With ToJava, the Java Server Pages (JSP) provide the views or user interface, while the Struts ActionServlet serves as the controller or application logic. The model is the collection of data and business rules, a.k.a. the business logic. It is usually extended to include business logic to replace the LotusScript and @Formula language logic used in Notes. Notes input translation, default formula and form event logic are converted here. The JSP (the View module) can be easily maintained and separated from the business logic.
Some simple Notes applications with little LotusScript or @Formula can be quickly converted to Java via an auto-converter, which is sold by many vendors. The ToJava Automatic Converter can read the Notes design and automatically create a fully functional J2EE application. The automatically generated JSP files are easy to maintain because they are separated from application logic.
Step 3: Tools to migrate business logic. Custom Notes applications often contain complicated business logic, workflow and security features. These complex programs are typically written in LotusScript and, while Struts actions can aid the migration process by replicating many basic LotusScript scripts, the more unique or custom scripts will need to be recoded manually in Java. J2EE development tools, such as Eclipse or IBM Rational Application Developer, when used with ToJava's QuickBuilder, can accelerate the migration process.
You can also make use of a standard J2EE workflow engine, such as in WebSphere Application Server 5.0 and above. Since Lotus Notes ships with a workflow subform, you can use this to replace the workflow logic in the J2EE workflow engine. However, this is not an automatic process and will require some manual effort. Migrating complicated Notes applications also usually involves system integration with SAP or other ERP applications. In these cases, custom Java code will be written mostly in the model module of the MVC. Enterprise JavaBeans can be used to connect to other enterprise systems.
Step 4: Migrate Lotus Notes data to a relational database. Lotus Notes data is stored in a denormalized, flat table, which contains two types of fields: richtext and non-richtext. To migrate it to a relational database such as DB2, you'll need to remodel and normalize the data. There are different ways to do this, depending on how complex the data is and whether it is in richtext or non-richtext.
Non-richtext fields can be exported to a Lotus 1-2-3 format or a structured text format from a Notes view. This method has the advantage of being able to build a view that has every field you want to export and can be done by simply clicking on "File_Export" from the Notes view. However, this approach has limitations. For instance, you cannot join data in a view, and the column size cannot exceed 999 characters.
Another option is to write a custom LotusScript or Lotus Notes API program to export the data to an external file which can then be read by the relational database. (Extensive Notes programming experience is needed to do this.) Another option is to use a Notes integration product, such as Lotus LEI or Notrix from Percussion Software Inc. But these tools are best suited to major jobs, and they do require training and an extra investment.
For richtext fields, you have two options for exporting the data. You can write a custom LotusScript or Lotus Notes API program to do it for you which, if you have the programming skills, does give you extra flexibility for manipulating the data. Or you can use an unpacker utility or other exporting utility for exporting the body of the richtext file to a text file.
A Certified WebSphere Specialist and a Certified Lotus Notes Developer, Chen Lin is the president of ToJava, Inc., a company specializing in migrating Notes applications to J2EE. He previously developed high-performance applications at IBM. He can be reached at clin@to-Java.com.
Sue Hildreth is a freelance writer based in Waltham, Mass. She can be reached at Sue.Hildreth@comcast.net.