4

We pushed patch 1.1.1 of our managed app to a customer production org which worked fine in their sandbox for the last weeks. After the installation our customers faces compile-time type errors as Apex classes could not be found during runtime.

Variable does not exist:...

or

Invalid type: ....

Indeed a handful of public classes were missing on which the code relied on. In the Sandbox with the exact same version those classes existed!

The the patch DE org those classes were marked with this strange deprecation warning which we have never seen before:

This Apex class is deprecated

Strange as we thought you can only annotate global classes to be @deprecated. enter image description here

So it appears that the deletion of Apex classes in a later release changes the behaviour of classes already uploaded as a patch release month before. Customer orgs which had this patch installed before the deletion of the classes were lucky and those who installed it later are...doomed.

We currently see no way to cure this problem. Anyone out there that experience similar strange behaviour in his apps.

As a side note: Salesforce.com activated the "Delete Packaged Components" and "Push Upgrade" feature for this ISV app recently. We also had the feeling that Salesforce.com with Winter '15 changed the behavior of class deletion. See this Why can I not reuse the name of Apex classes deleted in previous releases?

1

This was indeed a Platform bug which only seemed to happen in our ISV product.

In the past we did the following: remove a class from the org, upload a new package and then later undelete the class from the "View Deleted Components" page.

This was possible until the Winter '15 upgrade. Conerning to Saelsforce the first delete of that class left a max_version flag on this file of the kind "Deprecated in release x.Y". With Winter '15 this flag started to become meaning an classes that very illegally undeleted after a release got deprecated and unusable in already delivered releases.

Salesforce.com Support was now able to change those max version flags in all relevant classes and we could reuse them.

| improve this answer | |

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.