Clone from Production to Non-Prod Environment
In the very near future we would like to do a cloning of our SAAS Production Environment down to our non-prod environments, to ensure that our production and test environments are in sync. We feel that the best way to accomplish this would be to wipe out everything in our non-prod environments, then package and migrate everything from Prod down. Is there anyone out there who has done this? Any advice? Some concerns/questions we had are:
- Can we wipe out everything in non-prod and then migrate down to do a full cloning?
- Is there an easy way to move data along with all applications, DDEs, Questionnaires, etc.?
- Is there a specific order in which we should migrate the applications?
- Is there any special considerations we should take when migrating DDEs?
Any feedback would be greatly appreciated!
I would recommend something like this:
- Backup the Production Instance database and restore in the Dev environment.
- Delete the record content as needed using the Delete Content button, Data Feeds, API, and maybe SQL.
The backup/restore process guarantees your applications/data will match exactly what is in Production. Some customers do this on a regular basis, but needs to be coordinated with developers.
Things to remember or gotchas:
- Modify Data Feeds (URLs, SQL Servers, File Paths) to use the Dev environment's resources.
- Consider turning off Notifications or using a SMTP Server that doesn't send outbound emails.
- Update User permissions for developers if they were limited in Production.
- I'm sure there are others, so hopefully the Community can point these out.
Will RSA support facilitate a database copy from prod to a non-prod environment for an Archer SaaS customer? I know of on-premise customers that follow the method you recommend but wasn't aware that it was an option for SaaS customers.
Yes, the SaaS Operations Team can backup/restore an Instance database from one environment to another. The downside is the request can take 1-5 business days depending on their workload and they can't commit to a specific date/time.
When submitting a SaaS request like this, please include the following in the email:
- Backup the Instance database for PIN XXXXX and restore to PIN YYYYY. I'm aware this change will result in complete data loss in the target environment.
- Instances involved: PIN XXXXX and PIN YYYYY.
- Archer version: 188.8.131.52
- Environments involved: Production and Development
Also you need to make sure to copy your file repository over from Production or it will break packaging in the Dev environment when it can't find the Mail Merge templates referenced by the Production database copied to Dev.
Kudos to Jeff for outlining some steps for this process, it is much appreciated. We have been wanting to "clone" our Prod to the lower environments for awhile and didn't have the steps laid out as such. Are there any other "gotchas" from other Archer Community Members that we should know about?
One that we have been hesitant to do in mass was to modify the email addresses in the lower environments with a test account. We were expecting to be able to execute a sql script to update the emails for all users and expected the field to be in the tblUser but it wasn't. Does anyone know of an easy way to modify all users' email addresses via the database or maybe even a datafeed in Archer and can we be certain that all email addresses have been modified so that notifications do not go out to the original intended recipient?
As you pointed out, updating or deleting the email addresses for all users is not an easy process in the UI. The Archer Web Services API has a method, SetUserDefaultEmail, to modify the email address, but it does not accept a blank email address. In SQL, the user's contact information is spread across several tables. Normally, I'm very hesitant to provide SQL scripts...but in this scenario, the functionality doesn't exist to clear email addresses.
Below are 3 SQL commands with a comment above each one and run these against the Instance database. This is intended for non-prod environments and testing purposes only. Do not run in a Production environment. Be sure to perform SQL Backups before running in case a restore is needed. Use at your own risk!
Get a list of users with default email address, id, display name, user name, account status, is user logged in, and security parameter.
SELECT * FROM viewUserList
Delete all email addresses.
DELETE tblXUsersContactTypes WHERE cont_type_id=7
Update all existing email addresses to a specific email address. Users without an email address will not be updated.
UPDATE tblXUsersContactTypes SET xuserconttype_value = 'firstname.lastname@example.org' WHERE cont_type_id=7 AND xuserconttype_value LIKE '%@%'