The Lotus Notes Hide Design Tool

This document describes a Hide Design tool that enhances the
application design protection available in Notes 3.x. 

About the Hide Design tool

The Hide Design tool improves on existing hide design features
by allowing a database designer to more securely protect the 
design of a database so that users do not have access to the 
design of a Notes application. The tool takes a source database 
that you specify and creates a destination database with all 
formulas and formula comments hidden from view. Formulas that are
displayed include Full Text query macro formulas because these 
formulas will not execute if they are hidden.  Another instance of
formulas being displayed is view column formulas that contain only
a field name.  These are actually stored by Notes as a field name,
not a formula, and therefore are not hidden by the hide design tool.

Users of hidden databases do not need to install a new version of
Notes client software. The Hide Design tool works for any Notes 
database residing on a server running Notes version 2.0 or greater.
A user running Notes client server version 2.0 or greater can access
a hidden database. Likewise, the protection provided by the Hide
Design tool does not depend on a new version of Notes and cannot be
subverted by using an old version.

You run the Hide Design tool from a Windows or OS/2 operating system,
but you can hide the design of any database. Hidden databases are
available to clients using any Notes platform and can be used on a
server on any Notes platform.


How the Hide Design tool works

The Hide Design tool is based on the model provided by 
programming languages such as C and Visual Basic. Programs 
that are linked and compiled into object code with C or Visual
Basic are nearly impossible to decompile back to source code. 
The Hide Design tool duplicates the compile and link model, 
resulting in an end-user application with the design work securely
locked away.


You can either create an output database that is a copy of the
original database, or create an output database that is a replica
copy of your database. In either case, you can modify the design
of forms and views in the source application and propagate those
changes to the output database. This feature allows you continue
to modify the application and replicate the changes to the 
installed databases.

Be aware that users can use any one of a number of third-party
tools to gain access to high-level database design elements such
as forms, and views. However, column and view selection formulas
will be hidden. On forms, users will be able to see field names,
but will be unable to see the field formulas that control the
application design.


Installing the Hide Design tool

The installation procedure is a simple file copy and does not
involve an installation program. To install the Hide Design tool,
copy the file lnhide.exe to a directory on your hard disk or on a
server.  It is best to copy the file to the directory where the
Notes program files are installed because the tool requires some
Notes files to work.  If the file is not installed in the Notes
directory, the Notes directory should be listed in the user's 
PATH statement.


Using the Hide Design tool

1. Make sure your source database is backed up and that the backup
copy is securely stored.

2. Make sure that notes.ini is in your operating system Path
statement.

3. Go to an OS/2 or a Windows system prompt and enter the command:

  lnhide sourceDB destDB

where sourceDB is the name of the original database and destDB
is a unique name you assign for the output file. If the source
database is in your notes data directory, the database name is
sufficient, for example calltrak.nsf. If not, specify the full
path and filename, for example, c:\apps\calltrak.nsf.


By default, Notes creates a non-replica copy of the source
database. If you want to create a replica copy instead, use the
option -r after the lnhide command. For example:

lnhide -r calltrak.nsf calls.nsf 

Remember to keep the original database (sourceDB.nsf) backed up
and securely stored, because if the original database gets lost
or corrupted, you will not be able to recover the design features
from a hidden copy of the database. There is no way to "unhide"
design features for a hidden database.  

It is best to keep the backup copy of the source application in
a location other than a Notes server for the following reason.
If you place the source application (design not hidden) on a 
Notes server and have a replica copy (with its design hidden)
on another Notes server, you run the risk of them replicating.
If they were to replicate, one of two problems may occur.  The
replica with its design hidden could overwrite the source
(unhidden) replica, and thereby hide the design of the source
application, or the source application could overwrite the
destination application, thereby exposing its design.


Adding a hidden database to the desktop

To add a hidden database to your desktop, follow the standard
procedure for adding a Notes database icon.

1. Choose File - Open Database to see a list of available databases.

2. Select the name of the hidden database, (for example, calls.nsf)
and click Open.

Notes adds the icon to your desktop and opens the database. 

Updating replica and non-replica copies of a source database

If you created replica copies of a source database (using 
the -r option to the lnhide command) it is possible to modify
the source database and propagate the changes to the replica
copies that have their design hidden.  This can be accomplished
in the following manner.  (The example below uses sourceDB.nsf
as the source database with its design exposed and destDB.nsf
as the destination replica database with its design hidden.
For this example, assume lnhide with the -r option has already
been used to create destDB.nsf.)

1. Make the appropriate changes to sourceDB.nsf

2. Re-run the lnhide command with the -r option, specifying the
appropriate replica copy of  the destination database to be updated:	

lnhide -r sourceDB.nsf destDB.nsf

The database destDB.nsf will then have its design modified to be
the same as sourceDB.nsf.  The design of sourceDB.nsf will not
be hidden, and the updated design of destDB.nsf will be hidden.

3. If destDB.nsf is deployed on multiple servers, the 
server-to-server replication schedule passes the design changes
along to other replica copies of the database in a distributed
environment.  The updated (hidden) design of destDB.nsf will be
replicated to all replica copies.  Because the hide design tool
only hides those design elements modified since the last time
the source database was hidden, only the modified elements will
be replicated from the hidden database to its other replica copies
on other servers.

If you created a non-replica copy of a source database (by
omitting the -r option to the lnhide command) and need to modify
the design of the application, follow the steps above but omit
the -r option when re-running the lnhide command.