Pushing upgrades to OEM customer's with customized Skuid pages

We have an OEM managed package which includes Skuid pages. We have a customer that wants us to provide some individual customization on their org. If we (or they) make changes to the Skuid pages specifically their org, will this be reset if we later push upgrades of our package to them that have the same named Skuid pages but without the customization they’ve done in their org? Our pages automatically deploy via a post install script, so I would assume this would cause their now custom pages to be reset to the ones in our upgrade.

Would cloning and then renaming the pages be the best option? Hoping to find something better than that, so please let me know.

Craig, what will happen all depends on how you set this up. If your Post-Install Script is set to always update / upsert the custom Skuid Pages included with your package, and those pages are not protected via a Trigger on the Page object (scroll down to Step 5 in the linked tutorial) such that customers are able to update them, then yes your customers’ changes would be overwritten. But this can be avoided several ways. For one, you can check to see whether your customers have modified the pages and if so not update them. 

We recommend that you make use of Page Assignments for your Visualforce Page overrides, so that a customer can easily clone on of the pages shipped with your package, and then choose to show their users a modified version of your page rather than the one shipped in your package. Unfortunately with this approach, your customer has effectively “branched” off of your included page, and it’s up to them to get back on the main branch of your pages. One way to maintain some control of your distributed pages, particularly if you are preventing modifications to your pages via a Trigger on the Page object, is to add Page Includes within some of your pages which, rather than hard-coding a specific Page to show, run Page Assignments. That way you can designate default content for a part of your page, but then your customers can override this via Page Assignments. But for the rest of your main page, you will be able to push updates at will. 

Also, stay tuned for our next major Skuid release, we will be releasing some additional features which will help improve your ability to delegate control of parts of a page while retaining control of the rest of the page.

Gotcha. We use page assignments on some of our VF pages so switching all of them over shouldn’t be an issue. I think that might be the best way. Most customers won’t ever edit their own pages so I don’t think this will happen too many times. 

Another question, is it possible for us to push the latest Skuid update to our clients or do they have to manually install it?

There’s no declarative way to install / uninstall managed packages, but this is definitely possible via the Metadata API, which, coupled with Andrew Fawcett’s awesome library for calling the Metadata API from Apex, makes this totally possible.

https://github.com/financialforcedev/apex-mdapi
http://andyinthecloud.com/2013/10/27/introduction-to-calling-the-metadata-api-from-apex/

Here’s some more reading:

https://success.salesforce.com/ideaview?id=08730000000Ju7gAAC

http://andyinthecloud.com/2013/06/23/look-ma-no-hands-automating-install-and-uninstall-of-packages/


Thank you, all. I’ll read through the auto updating packages literature.