Prodly

Linkhttps://appexchange.salesforce.com/listingDetail?listingId=a0N30000000q5oPEAQ
PricingFrom US$2000/year http://www.prodly.co/pricing/
5 Users / YearFrom US$2000/year
Description

Moves data from Prod to Sandbox or Prod to another Prod

Change Sets for Data - I like that tag line.

Details

http://www.prodly.co/

There are a plethora of these apps out there now - this just happens to be one that I've used and it does the job. 

Setup

Just install it. Grant access to Admins only. 

You have to grant third party access to their Heroku App

Documentation

There seems to be no documentation that I can find.

Here is the documentation provided by support. I still can't find where these link from. 

http://public.prodly.co/docs/MooverInstallGuide.pdf

http://public.prodly.co/docs/MooverUserGuide.pdf

It REALLY NEEDS more Documentation - especially to explain all the errors. It needs a Wiki to list every error that they have troubleshooted so that it can help new users down the track. 

There is no support contacts listed on their website. 

Notes

It seems to be pretty easy to configure.

I Like

  • It adds all the related data sets as you choose child or Parent Objects
  • It seems to work out all the depths of the relationships on its own. 
  • I love that it does deep relationships - my objects go 5 levels deep. 
  • It has great record keeping of what it does to the Sandbox org
  • It seems to do the deployment really well - looping through and adding eg contact records that exist with the Campaign, then contact records that exist with the Asset - as it needs them. Nice. 

I Dislike

  • I'm getting a bit lost in all the objects - you have to have good mental or actual map of your data relationships to work this tool. 

Suggestions

Setup

  • Hide particular objects that you never want to see - eg you may never want to move Attachments or Notes to Sandbox
  • I would like Replicate Owner and Replicate Record Type to be able to be set as a default
  • Reports - especially a report to tell you of potential errors (like inactive users) before you run. 
  • I would like to have a "status" field on each Data set so I know I have checked it over. 
  • Please! Have some form of indicator of what the External IDs on a data set are without having to drill down into the fields. 

Deploy

  • I want an automatic Truncate of the result data after X days - you don't need that hanging around taking space in your org. See how Skyvva does it. (Unless the result data could be used to do a continuous deployment type thing. 
  • I would like a status bar of some sort to see how far through the deployment you are. 
  • More info on the "Failure" email because creating 5000 records is not a complete "Failure" 
  • Have a button to test the connection to the connected org before you deploy. 
  • I want a way to "re-deploy" individual records. 
    • Eg, I transferred ALL accounts owned by inactive users even thou

Tips

Installation

  • Make sure you add the Prodly Admin permission set to the users that will use it - you will get all sorts of weird errors otherwise. 

Setup

  • Add Record Type and Replicate Owner to the main list view. 
  • When you are looking down the list of Child Records and you are mainly dealing with custom objects - scan down the Namespace column and pick out just the ones ending in __c. 
  • Don't set Replicate Record Type until you have gone back in and checked that Data Set - use this as your "ready to go" checkbox. 

Deploy

  • Set the UI Setting to enable updates to records with inactive owners before deploying. 
  • Actually - make sure all your records are owned by active users anyway, or you may get this error OP_WITH_INVALID_USER_TYPE_EXCEPTION:Operation not valid for this user type:-- and it looks nasty http://salesforce.stackexchange.com/questions/24390/mysterious-op-with-invalid-user-type-exception-operation-not-valid-for-this-use    
  • Wait a while after you create a sandbox to start deployment or you will get a 503 error. 
  • Change the layout of the Deployment Results page to display Deployment Batch and Deployment Record Results in reverse DateCreated order, so you can refresh and keep an eye on what's going on. 

Issues

Setup

  • It doesn't give you correct error messages until you go to deploy it. 
  • Bug? I have two fields on Campaign named Start Date (yeah, I know, I didn't set it up). The custom fields do not show. is this because it is just reading the metadata based on Label and not duplicating the fields? 
    • Yes! that is exactly what it is. I renamed the standard Start Date and End Date to XStart Date and XEnd Date and now the custom Start and End dates appear. PLEASE display fields based on API Name not Label. 
  • It doesn't seem to like dates with GMT offsets  eg 2015-01-01T00:01:01+10:00 ERROR at Row:1:Column:70 line 1:70 mismatched character '+' expecting set null

I don't know how I did it but I was doing a final check after setting up a complex setup and I wanted to delete one data set. It deleted EVERYTHING. (This is documented, in the help docs now that I have the help docs, but you will probably do this before you realise how it all works). I bought them all back from the recycle bin but it had lost ALL its configuration. Start again. (sad)

Then It added duplicate data sets, so I tried to replicate what I did by deleting everything, but then I had to go ahead and delete each record one by one.

Deploy

  • Grrr! I mass transferred all records to active owners BEFORE I deployed and I am still getting INVALID user errors on some Accounts even though the owner is a current user.
  • The amount of emails you get is rather annoying. 

New Sandboxes

  • You need to re-create your connections whenever you refresh the sandbox. 

 

Questions

Setup

  • What is Create Missing on External IDs - one was on a custom date field on Campaign - how would it create missing dates? Nothing in the docco about this. 

Deploy

  • Why would it not be able to move users over - error is REQUIRED_FIELD_MISSING:Required fields are missing: [Username, ProfileId]:Username ProfileId - this is a freshly pressed sandbox - can't there be a lookup on something other than UserID? Doesn't Replicate User handle this? 
  • Why am I getting errors like this INVALID_CROSS_REFERENCE_KEY:Record Type ID: this ID value isn't valid for the user: XXXXXXX:RecordTypeId -- when I have set Replicate RecordType?
  • Does it not work with NPSP - this error Ooops looks like there was a problem with the deployment: InvalidBatch : Failed to process query: INVALID_FIELD: CMFL__CustomerPriority__c, OwnerId, RecordTypeId, OwnerId, Contact_Person__c, npe01__One2OneContact__c ^ ERROR at Row:1:Column:698 duplicate field selected: OwnerId
  • Why is this error happening? INACTIVE_OWNER_OR_USER:operation performed with inactive user [XXXXXXZ] as owner of contact:-- and it was happening still after I turned on the new setting to allow for updates to records with inactive owners. 
  • WHY OH WHY Am I getting this error - it started, it did stuff, then it failed with this error? Ooops looks like there was a problem with the deployment: Server returned HTTP response code: 503 for URL:
    • I can understand a freshly-pressed sandbox could give this error if you tried a deploy 5 mins after it was created, like I did, but to start, then get that error? 
  • FAAAAAAAARK! Now I'm getting this error and deployment fails. Ooops looks like there was a problem with the deployment: InvalidBatch : Failed to process query: INVALID_FIELD: Start_Date__c from campaign WHERE ( Start_Date__c IN ('2015-05-30','2016-09-08' ^ ERROR at Row:1:Column:63 value of filter criterion for field 'Start_Date__c' must be of type date and should not be enclosed in quotes
    • Why didn't it pick this up before the deployment started? AND I NEVER set my query to that and Start_Date__c is a valid field AND it previously ran with no issues!!!! WTAF?!?!?!
    • This is my Data Set. It's just making shit up now! So frustrating! 

 

How do I do staged deploys? Eg, say I'm running events....

  • I want to do all Campaigns, and all the setup objects related to that, like Venues etc.
  • I don't want all Contacts in my sandbox.
  • I have a group of staff and users in one or two campaigns used for testing.
  • I want to do a second deployment based on Contacts and filter on only the contacts that are the ones that are in those two Campaigns.
  • But how will I be able to deploy Campaign Members - because it won't be able to find the Campaigns because they are already created.
  • And can you even have two "Root" Data Sets?

Ah, this is where the upsert comes into it. More investigation needed.

 

Or what if I have completed a deployment and forgotten a few objects? How do I add them to the deployment without starting over again? How do I do that?