function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion

How to tailor packaged applications?

I have a packaged application that I wish to tailor for specific installations. For example, I want to customers to be able to include their own logos on printed output.

My application is packaged so all the components are locked down, so the static resources (in the example above), cannot be changed.

Any pointers? Not just with this example, but customizing SalesForce apps in general

Thanks in advance
Hi , 

Is your Package a Managed package or Unmanaged Package?

Managed packages cannot be edited.

See the below links with similar discussion,

Thanks Ashish.

The application is within a Managed Package.

I am aware the packages cannot be edited, but my question is around development strategies that allow configuration for each customer especially in relation to printed output. I would like customers to include their own logos on documents, and potentially their own CSS.

The example above is more around allowing customers to include their own code (pages and controllers), which is not what I am looking for.
Hi , 

The override setting is "subscriber controlled" if you are familiar with that term.

The best strategy available today to allow the subscriber to leverage Visualforce/Apex from a managed package while augmenting with their own customizations (fields, etc.) is to factor your solution like this:

1) Utilize a standardcontroller in your page <- this will allow a clone of your page to accommodate the subscriber's goals and will keep them in Visualforce (and out of Apex) for the majority of their customization needs.
2) Break up your Visualforce page into components that you mark as global (along with appropriate attributes)
3) Mark any extension classes and/or structs as global so your subscriber can use them as necessary
4) Optionally annotate a section of your page that isn't rendered with "insert custom fields here" instructions.

Now, when the subscriber wants to add their fields to a page from a managed package their flow would be:

1) Clone your page (including refs to your global, custom components and apex standard controller extensions)
2) Augment their cloned variation with the requisite input/outputfields for their custom fields in the location/s you may have suggested.
3) Save
4) Override the respective action with their new page.

With this solution your customer will continue to receive the benefits of fixes/enhancements to your custom components and logic (apex controller extension) and can add custom fields to a packaged interface.

We're looking at some features for this year that would move more of the burden to the package author (and easier for the subscriber) but this approach will always be available and more importantly is so today.