I have a global class member in a managed package that I am working on with type Id. Can this member be changed to a type String in a future release of the package?


Once it has been released to production via a managed package my understanding is that it is locked in from that point forward.

You will get an error along the lines of:

Save error: Global/WebService identifiers cannot be removed from managed application: Method: foo bar

There are a couple of suggestions via Remove 'Public and Private' tagging from being required in managed package

  1. 'Roll-back', ask all managed package installations to uninstall the package. At which point the elements in question will be unlocked and allowed to be re-added as beta components.

  2. Create a new 'Namespaced' package based on the original code, resubmit for security review, and ask any users whom you wish to have the updated code, to uninstall your original package, and than install this new package.

Another option would be to annotate the variable with @deprecated and then switch to a new variable.

See also:

| improve this answer | |
  • This was my understanding as well. Thanks for confirming. – Suryatej Mukkamalla Aug 8 '16 at 22:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.