Friday, June 3, 2016

The importance of reading the Salesforce Release notes - a cautionary tale

By the time you read this the underlying problem is likely to be a non-issue with the transition to Summer '16 complete. It does highlight the importance of going through the release notes with a fine-tooth comb.

How carefully do you read the release notes for each of the big triannual releases? For Spring '16 the complete document weighed in at 486 pages. "Great!" you say, that's a lot of new features and fixes to play with.

Spoiler alert: I'll admit here that I read them, but didn't commit the entire document to memory. This caught me out as follows:

Some names and identifying details have been changed to protect the privacy of individual pods.

  • Client: For our FooBarWidget records, I need to be able to set if it has one of 4 possible values. Only those 4 values are applicable.
  • Me: That sounds like a good candidate for a picklist field. I'll add one with these values you provided and have it to you shortly for testing.
  • Client: Oh, and we need this in production ASAP.
  • Me: Got it, the usual.
  • Me to dev sandbox: Add a new picklist field to FooBarWidget please.
  • Spring '16 Dev Sandbox:
  • Me to dev sandbox: It's not really a global picklist. And when I looked further at those there is a big red BETA next to them. Let's just define the values here as a one off thing. That "Strictly enforce picklist values" option sounds good. Definitely don't want those rascally users putting inappropriate values in the picklist again. No siree!
  • <The sound of hammers, saws and typing. Maybe some random metal grinding to look good on camera. End result is a changeset for the new picklist field.>
  • Me to pre-production sandbox: Validate and then quick deploy this change set.
  • Spring '16 Pre-production sandbox: Done, and have a deployment fish for your troubles.
  • <High fives CS6 instance. Which was tricky with the whole cloud thing, but we made it work.>
  • Me to Client: Please test the functionality in pre-prod. When you are happy with it we can deploy it to production.
  • Client: It works. And you did it so quickly! You sir are the most meaningful and valued member of this team!
  • Me to Client: I do what I can.
  • Me to Production: Validate this change set.
  • Spring '16 Production: Woah, woah, woah, back the change set up.
    "Cannot have restricted picklists in this organization."
    No deployment fish for you!
  • Me mumbling to self: What the?
  • Me to Google: "Cannot have restric...
  • <Google reads mind>
  • Google: Error message: Cannot have restricted picklists in this organization
  • <Re-reads release notes>
  • Spring '16 Release Notes:
    If you have a Developer Edition org or sandbox org, no setup is required to use restricted picklists. You can package restricted picklists with an app only in Developer Edition or sandbox orgs.
    For all other editions, restricted picklists are available as a beta feature, which means they’re highly functional but have known limitations. Contact Salesforce to enable restricted picklists.
  • Me grumbling to self: It's enabled by default in all sandboxes and dev orgs, but won't work in production without begging to get on the pilot. AND THERE IS NO UI INDICATION THAT IT IS A BETA FEATURE!
    That's just brilliant!
  • Summer '16 Release Notes: Eliminate Picklist Clutter with Restricted Picklists (Generally Available)
  • Me to client: Soooooo, we can't deploy the change set as is to production. We need to do one of the following:
    1. Wait until Summer '16 releases for the feature to become GA. The trust website has it scheduled for one week from now.
    2. Remove the restriction from the picklist and look for other ways to prevent incorrect values in the short term. Make the field restricted again once Summer '16 deploys
    3. Raise a support case and ask our AE to get on the pilot for the one week until Summer '16 arrives.
  • Client: I'm not so much with the meaningfulness and valuing right now.
    Anyhow... That last one sounds like fun. Let's do that!
  • ...

Things degenerate a bit from there and are best not recorded in this medium. The point is that this one was a bit of a pain. Adding the new picklist field in the sandbox gave no indication that things were anything but fine and business as usual. There were no warnings that the features were still in pilot outside of the sandbox and dev orgs. It even deployed just fine into the pre-production sandbox. Then it exploded when trying to deploy to production.

Needless to say, I'm not a huge fan of implicitly activated pilot features in all sandbox and dev orgs without the corresponding BETA indication in the UI.

Admittedly it was all documented right there in the Spring '16 release notes. And the imminent release of Summer '16 will make it all a moot point.

Moral of the story - keep reading those release notes. And I salute you if you can remember everything you read in them.