2

I am currently migrating to a managed package and I wish I could copy unmanaged [protected -- in case it matters] custom settings values to the managed ones in my post install script.

However, I'm getting the following exception when trying to query the unmanaged CS:

Custom Setting cannot be referenced outside code from the same namespace.

Does it mean I won't be able to copy them automatically? What is the best way to copy them then? I think I'm going to have to serialize them via unmanaged code but maybe there's a better way to do it.

This post says that 'without sharing' would grant my post install script with access to all data but it doesn't seem to be working for my unmanaged custom settings.

Thanks

  • Does the managed custom setting and the unmanaged custom setting have the same name? Eg ns__Setting__c and Setting__c – bigassforce Apr 21 '15 at 17:44
  • I've tried different names as well. – bananka Apr 22 '15 at 7:56
1

Sharing is independent of the public/protected custom settings distinction, just like it's independent of the difference between a global apex method and a merely public one.

Protected custom settings can only be accessed by code within their namespace. Since unmanaged things are treated as being in the customer's organization's namespace (the "empty namespace" counts, if the customer hasn't set a namespace on their organization), code in managed packages, including code in post-install scripts, can't read it.

You could serialize it via unmanaged code, as you say, or simply copy it into an unmanaged public custom setting or a custom object, and have your post-install script copy from there into the packaged, protected custom setting.

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.