I am interested to hear possible approaches on setting up a dedicated training environment for users. Part of the business has a high turn over of staff and need a stable, close to live environment for ongoing training.

I've got some ideas I will put it in an answer but I would love to hear how others have approached this.

3 Answers 3


I see this use case quite often when dealing with training. You can leverage your developer and developer pro sandboxes by copying data to them from your Production org by using an app like SFXOrgData (http://www.sfApex.com). It lets your copy data relatively easily and also lets you wipe the data in the sandbox for repeated loads. I developed this application to improve development and QA cycles although we've seen a lot of our customers use it for their training purposes as well.


Below is with the assumption of an org with at least access to a developer sandbox.

Use a developer Sandbox

+Plenty available for use, can be left in semi perment state without impacting project/development

+No additional cost

+Can be refreshed daily

-Only includes setup no record data, requiring data to migrated. This process could be automated with an ETL tool (e.g. Talend) but comes with a maintenance cost when refreshing.

-Limited storage space, but could be enough for training purposes.

Use a full copy Sandbox

+Copy of all data at the point of refresh

+No additional cost for orgs with one

-Can only be refreshed once every 30 days

-Will be refreshed according to project need not training need

-Changes will be applied here, that may not go live, so will not necessarily be consistent with live.

Purchase and use another full copy Sandbox

+Copy of all data at the point of refresh

+Will not interfere with project/development as standalone environment

-Ongoing additional cost

-Can only be refreshed once every 30 days

Purchase and use a partial copy Sandbox

+Partial copy of data according to sandbox template

+Will not interfere with project/development as standalone environment

+Should/could contain enough data for training purposes depending on requirements

-ongoing additional cost, but less than a full copy


Love everything that Girbot said but for non-data sandboxes rather than using an ETL tool to create the data you could do it programmatically. Ok depends on the amount of data but there are work arounds. Sometimes its easier, you don't have to constantly go to the ETL tool to add/change records stop things breaking and its then easy just to fire the visualforce page when the sandbox has refreshed/created.

  • oh that sounds interesting, what would be the general approach to do it programmatically?
    – Girbot
    Sep 2, 2014 at 14:02
  • Create A VisualForce page and an custom controller. Then in the class create the code to create the records. If you are developing Apex in your org its generally good practise to have a test helper to generate records to use in your tests. This is just an extension to that but actually stores the records in your database.
    – Francis
    Sep 5, 2014 at 20:26
  • In my experience generic test-data doesn't come close to real data. One thing is that users know their records quite individually and often have specific questions on them. An other point is when you cover reports it dramatically helps you to have the real(!) numbers to roughly validate results. Then consider a complex data model with lots of custom object and complex relations and processes. Not easy to generate. If you change the structure, you need to maintain the class. Generic test-data could be unsatisfactory in the best case and misleading/counterproductive in the worst for trainings
    – Uwe Heim
    Oct 21, 2014 at 15:27

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .