Need suggestion for this approach

Hi Guys
Need some advice and suggestions on the approach to this scenario.

I have a Domino application which is residing in our network (i.e. within the firewall) This application requires feedback responses from several users. These users mostly will be notes users. But there may be some users who are external. For these external users we have decided to have a web portion where they have to supply a token before giving their feedback (as they don't have any login ). So anonymous access is given to create a feedback document but only after supplying a token by the user. Now in order for these external users to access this URL, the nsf should reside in the external server. But since the application is 90% internal , we would not like to put the entire app in external server as the details are also confidential.

The approach suggested by me was:
Have a replica copy of the nsf in the external server and do a selective replica of the external server with the internal, so that the documents submitted there, are pushed back to the internal server.

Is this the best way and are there any glitches in this approach. Are there are any alternative suggestions ?

LVL 14
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Sjef BosmanGroupware ConsultantCommented:
Best way: hmm. Glitches: you'd need push-pull replication for design changes, otherwise pull would do. It's an approach, it will work in the end, but it wouldn't be my choice, since selective replication is a difficult thing to tune.

- create a new database based on the same design (template)
- make a replica of this database on the external server
- create an agent that will copy documents received in the internal server to the real database

Your external users will therefore use an almost empty copy of the database, that contains very little information of the real database. Just the indispensable items.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Sjef BosmanGroupware ConsultantCommented:
Additional suggestion:
- delete the documents from the external database when they are successfully copied
Well that sounds perfect for me.

And that is the bestway too. In future if you want to assign external users a web id you can do so and keep them away from internal data.. Good security. We do have similar kind of setup here too.

The other approach would be something like mail-in-db. THe external user will send a mail with his comments and  Since the comments are just text you can read it from body and create docs on fly using mail agents. But the above method has more control over this one.

JavaScript Best Practices

Save hours in development time and avoid common mistakes by learning the best practices to use for JavaScript.

p_parthaAuthor Commented:
sjef bosman

from what i understand from u:

Create a replica copy of the database in external.

Push all the external feedback documents from the internal to the external thru an agent

Move the documents from the external to the internal once they are saved.

I have some issues here:

the feedback providers cannot submit documents after 30 days or if the report is generated. So ideally i have to do this steps:

Everytime a feedback document is modified at external server i have to push to internal database. Everytime the external feedback document in the internal database is modified (like agent running on the doucment to stamp some fields)  i have to push the document back to the external database

so ideally both push and pull replication is happening here...

Let me know whether i am right in understanding,

are u supporting my model as perfect or sjef bosman's ... Kind of confused ;-)

Well when I started typing his comment was not there.. obviously yours
bosman suggestion says that user should not see the data that he posted.. is that you want ? If so you give them depositor access only. Write a cleanup agent which will run nightly to remove the documents I don't see any added benefit here
p_parthaAuthor Commented:
The document for external feedback providers shd be visible to them at any point of time as they can save the document as "draft". But once they do any modification to the document it shd be reflected int he internal....

Also when the document has crossed 30 days then the internal database wills tamp the document with some flags, so that it is not submittable. So ideally both push and pull shd take place here

Right !
Sjef BosmanGroupware ConsultantCommented:
Ah, now you change the (assumed) specifications! If you say that "feedback" is required, that's one-way to me, hence my suggestion to use a copy of the database (not a replica!) and an agent to move documents into the central db. What you describe now, i.e. that you want users to be able to modify the document, does require full replication. Your original suggestion is more complicated, but replication in this case will be the only solution.

Maybe you could use a mixed approach: use a copy of the database for the external users, and let the agent only run on documents with status Accepted. If you want your browser-users to see documents that are processed, just leave them in the external db as well.

For the copy to be maintained easily, create a template database that you modify, base both your databases on this template, and use Refresh Design whenever you modified your template (or wait for the Designer task to pass by).

I concur with Sjef's original suggestion, DESPITE the fact that you need a "two way" agent.  I have seen selective replication do so much harm, I try to stay away from it at all costs. The only place I would ever use it is for a user replicating a subset of information to a local copy, when teh file would be awfully large otherwise.

So, how do you make this work?

It depends.  If the "external" documents are created and edited externally, and never created internally, then it is easy -- you just need to write an agent that copies from the "public" copy to the "real" copy.

If the documents will alway be CREATED internally, but only MODIFIED externally, then write an agent that:
1) Gathers all internal unexpired docs, and copies them to the exterbal copy
2) Gathers all internal documents over 30 days old, marks them as expired, and deletes teh correspodning document from teh externa; copy
3) Gathers all external documents, matches them to thei nternal copy, and brings over any changes

As far as the physical structure is concerned:
* The internal database should only be on internal servers.
* The external database should be on the external server, and replicate to an internal server.
* The agent should run on the latter internal server
Why not just give full replication abilities to both the inside and outside db and set web and client forms to only be accessible for the necessary users.  You can still hide most information you need too.
Safer to start with "I give you nothing" and then add what you need to actually give.  If you chose teh "here's everything, but I am wrapping shrouds around the parts I dont wnat you to see," well, shrouds have a way of slipping off, and if you've got lots of stuff, all to easy to overlook another part you wated to hide.
I gotcha, you are right.  Sometimes I think more of my own restricted environment and not of others.  

Of course!  We all se the world through "locally-colored" glasses.

Still waiting on that code from you, though.

Uh Oh, I sent it to the _s_a_l_e_s addy in your profile.  My independant is if you don't want to post your email address.  I've got it ready to go though.

It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Lotus IBM

From novice to tech pro — start learning today.