We develop continuously running HCL Notes applications that operate primarily on local client replicas. To keep data current, we need to perform automated background replication throughout the workday. However, pulling design updates (such as modified Forms, Views, or Script Libraries) while the application is actively open causes erratic client behavior, agent failures, and data inconsistencies. We need a way to programmatically trigger a "documents-only" replication that explicitly ignores design elements.
Current Limitations: The current NotesDatabase.Replicate(serverName$) method in LotusScript (and its Java equivalent) accepts only the server name. It relies entirely on the database's configured replication settings.
Attempting to programmatically toggle these settings before calling db.Replicate using the NotesReplicationEntry class creates a severe security and architectural conflict:
ACL Restrictions: Modifying replication settings via ReplicationEntry.save() requires Manager access. In secure deployments where "Enforce a consistent Access Control List across all replicas" is checked, standard Author users are hard-blocked from executing this code.
Missing Granular Flags: The API lacks a single isIncludeDesignElements flag, forcing developers to manipulate individual properties (Forms, Agents, Formulas) without a guaranteed way to block elements like Script Libraries.
The only current workaround is for Domino Administrators to permanently hardcode the "Receive -> Design elements" setting off via centralized management, which forces developers to invent complex, external mechanisms (like launcher databases) to deploy standard application updates.
Proposed Solution: Enhance the NotesDatabase.Replicate method (and the lotus.domino.Database.replicate Java method) to accept an optional parameter or flag that dictates what elements are exchanged during that specific execution, temporarily overriding the database's saved UI settings.
Example Syntax:Call db.Replicate("ServerName/Org", REPLICATE_DOCUMENTS_ONLY)