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

Customizing system templates

Everything in Notes can be customized by tweaking with the design. I highly recommend never to tweak design in a database itself, but use Domino's template capability. You can have multiple databases using the same layout. Even if you build a specialized custom application you will have at least 3 databases sharing the same design: development sample data, UAT sample data and production data. So use template, and NO hiding the design is not a nice thing to do and actually not a security feature (it's rather an obscurity feature).
In a lot of installations I came across system databases have been altered: the Domino directory, the log, the mail template etc. IBM's support always has a hard time helping in this environments. There is a rather strict policy to insist on original IBM templates. Following a few easy steps however you can eat your cake and have it too. The secret is to use the template system wisely. Following the steps has quite some advantages:
  • Your customizations are protected from being overwritten since they are sitting in their own database
  • Your customizations are visible since they are sitting in their own database
  • Since the original templates are untouched future fixes are easily included in your actual database
  • You can switch back and forth between the IBM template and your customized template using "replace design". This is extremely useful when troubleshooting issues: switch to the original IBM template, if the problem is gone you know where to look. If the problem persists you don't need to argue with support about customization having an impact

These are the steps:
Template Customization
  1. Create a new database based on the original IBM template with inheritance active. In the database properties give that database a template name (be sure to keep the master template name intact)
  2. Delete all design elements you want to customize from the database created in step 1
  3. Create a new empty database, give it a template name and copy all design elements you want to customize into this database. Say NO to the question of "inherit changes"
  4. Customize your design elements. Rule of thumb: try to be minimal invasive.
  5. Copy the altered (or additional) design elements to the database you created in step 1. Say YES to the question "inherit changes"
  6. Replace the design of the system database with your new template

Happy customize!

Posted by on 26 September 2007 | Comments (4) | categories: Show-N-Tell Thursday


  1. posted by Kevin Pettitt on Wednesday 26 September 2007 AD:
    Don't forget the bit about using "refresh design" to update the merged template with code updates from both the IBM and the customization tempate (and the fact that this will happen automatically if all these templates are on the server and the Design task runs at night).

    Also, there may occasionally be a need to re-apply your customizations to an element newly updated by IBM, which may be hard to identify without doing a design comparison using a tool like Teamstudio Delta. If you've taken good notes about what your customizations were, it shouldn't be too hard to re-apply them, in which case knowing for sure that IBM has changed a given element is less important - just do it regardless.

    I'd also want to emphasize that when giving your merged template a name (your Step 1), be absolutely sure that 1) the name is unique across your entire environment, and 2) if you ever take a "backup" of your merged template that you remember to erase the template name in the backup (which is the most common way of violating #1).
  2. posted by David Killingsworth on Wednesday 07 November 2007 AD:
    Wouldn't you provide the same thing by making the customizations on the template (example: companypubnames.ntf) created in Step 1., but after making the customizations - checking the "prohibit design refresh or replace to modify" in the design element properties.

    That way when you upgrade to the next version of Domino and a new pubnames.ntf comes along, you know which pieces you have modified and/or added. You can safely refresh design with the new template, and then make any customizations that you know you need to make.
  3. posted by Stephan H. Wissel on Sunday 11 November 2007 AD:
    On the first look it seems like your approach is the same as mine. However there are a few substantial differences:
    - You never know if that "Prohibit Design Refresh" was intentionally or not, which is not a good situation for audits.
    - You use replace design by accident or accidentally uncheck the "Prohibit Design Refresh" option and your changes are gone.

    I've seen this happen over and over again, this is why I recommend to separate the elements. Relying on a checkbox to protect code you have written is rather fragile.
    Emoticon smile.gif stw
  4. posted by Dave Harris on Wednesday 26 December 2012 AD:
    Don't forget that names.nsf has the extensible subform for Person, Group, which doesn't get overwrwitten by a design refresh or replace.

    It's there so you can add stuff to those forms, without the worry of it being overwritten by a new release.