• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 515
  • Last Modified:

Replication formula doesn't work

I designed a Notes database in which I have a "Preferences" document for saving various user parameters e.g. a serial number which is incremented every time a document of a specific form is created. The Prefernces document is created and maintained internally using LotusScript. I am using the following replication formula for my database in order to protect the Prefernces document from being overwritten by the Preferences document of a replica:

SELECT Form != "Preferences"

The problem is that the Preferences document does get overwritten from time to time without being able to find out why my replication formula doesn't work.

Any suggestions? Please help!
0
marios
Asked:
marios
  • 4
  • 3
  • 2
  • +4
1 Solution
 
mariosAuthor Commented:
Adjusted points to 150
0
 
bbangerterCommented:
Do all replicas of the database contain the same replication formula?
Replication formulas do not replicate across databases.  So potentially you might have one replica of the database that contains the formula, and another one that does not.  Depending on which database the replication is being initiated from the replication formula could be different.
0
 
ray_leachCommented:
Does your form have an alias? Why not use the master slave principle and have the ACL in the master database not allow updates to the preferences form from other servers?
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
rloomisCommented:
Do you store form in document?  If  so, is the form name stored in $title rather than in form?  BTW, what you're doing sounds a lot like what the profile field was created for.  You might want to look at that feature.
0
 
mkthakurCommented:
Please try
SELECT !(Form = "Preferences")
if it doesn't work then try putting the same formula at every replica.
0
 
mariosAuthor Commented:
The Preferences document is created transparently with LotusScript. There is no form used to create it and no "Preferences" form exists, although my document has a field named "Form" which contains the value "Preferences".
0
 
mkthakurCommented:
Did you actually try my suggestion? It should work even if it is a field.
Moreover when you create the document there is a property called Form also exists. So it should work.


0
 
mariosAuthor Commented:
I tried mkthakur's suggestion with no luck. I noticed that the Preferences document is overwritten when a new replica is created and the replication formula is NOT set BEFORE the documents start replicating. In other words, it seems that there is no problem when the replication formula is set in Replication Settings before the replica is initialized. Still, this doesn't make any sense since the original database on the server already has a replication formula, and therefore should not accept any documents with Form = "Preferences". Right? Or is it that once two documents are replicas of each other, then their changes are replicated regardless of the replication formulas? The problem is solved if the answer to the last question is "yes".
0
 
mkthakurCommented:
Could you please tell me the steps which you are doing more clearly and what do you intend to do.
0
 
mariosAuthor Commented:
I experimented with this to death, and finally concluded that the problem is because the replication formulas are not the same (as bbangerter said). Of course it's nice to know what is causing the problem, but this doesn't help me because I cannot force my users to set the correct replication formula every time they create a replica. Anyway, someone please reply to this question so that I can give you the points (most of them).
0
 
ChrisDCommented:
I am not a Notes developer so this may be a stupid question,
Would it be possible in LotusScript to save your preferences info into a local text file and look it up when required? - instead of referencing the information from within the DB? If you could automatically create this file (e.g prefs.txt)the file name would be the same for everybody but each would contain different info.
Alternatively - could you set up a lookup DB with a preferences document for each user ? - it could work out who they are from their ID file and lookup the corresponding document in the second DB ?

If all this is totally off the point, I apologize. Like I said, it's not my thing really -  but I am interested to know if this kind of stuff can be done with Notes. If it can't, then It's a bit basic I would think.
0
 
stampCommented:
Perhaps this helps you:

In the ACL define a role "DoNotReplicate".

In properties of "Preferences" form deselect under key symbol: "All readers and above"
and select "[DoNotReplicate]". Resave all documents you want to protect this way.

Give this role in the ACL only to those peoples and servers which do not replicate...
And this is the point. If you can not separate them, do not do the upper work.

Important note: you can not see any document without dedicated role.
Even not as manager!
0
 
ChrisDCommented:
instead of using the selectForm command - why not use ([Compose];"";"preferences")where "preferences is the basic form - have hidden fields in the form which are all computed ones so no user entry is required - this will add in all the info you need, include in the formula  save and close commands and it will be created in the DB invisibly to the user. Give it a hidden Author field with @Username and reference it when required.

0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 4
  • 3
  • 2
  • +4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now