Salesforce Spring ’15 – Platform and Developer Features

A great way to kick off the new year is to dive into the Salesforce Spring ’15 release notes.  In this post I’ll dive into the feature that caught my eye for the platform and developer features.  As always this isn’t an all inclusive post, make sure to catch the release notes to see what catches your interest. Customization

Advanced Setup Search – In my Winter ’15 post I went over this new feature that went open Beta.  In this release more items have been added, to include assignment rules, custom buttons, and custom links.

Standard Account Address / Google Map – If enabled (Customize –> Map and Locations –> Settings –> Enable Map and Location Services) a Google map will now appear under the standard account address.  To show the map you need to enter the address, city and one of the following: state, postal code, country.  Otherwise the map will not show.


Geolocation Fields – These fields are now generally available, previously only as a beta.  Along with the ability to reference in SOSL, SOQL, visual workflow, workflow rules, and approval processes.

Indexed Column – Now when you view your list of fields in Setup for an object there will be a column for which fields are indexed.  This may be a small change, but a huge asset to understand which fields are currently indexed by Salesforce.


Field Audit Trail – This feature is now GA, to let you retain field history for up to 10 years.  The metadata API has to be used to set the retention settings and then you can use other APIs (Rest, SOAP, Tooling) to work with the archived data.

Lightning Process Builder – Big news is this is now GA, which I’m sure is a welcomed and quick fast track from just going to beta last release.  New features in this release:

  • Call Apex action, to point to and process apex method
  • Versioning of Processes
  • Process record multiple times (up to 5) in same transaction.
  • Condition Logic now available, ex: 1 AND (2 OR 3).
  • Builder updates: Sort processes, expand/collapse actions, node highlighting when working on, Deprecated some status (now only Active and Inactive is available), multi-picklist values now available.
  • Limit of 10 immediate and 10 scheduled actions has been removed.

Flow – A lot of updates on flow this time around:

  • You can now pause flows to accommodate for interruptions, and pick them back up when ready.  Administrators can select which users can pause flows, provide a button to do so, and provide messaging to confirm flow is paused.
  • Condition logic is now available, 1 AND (2 OR 3).
  • Dynamic Labeling is now available for each flow in process.
  • Trigger ready flows renamed to Autolaunced flows.
  • Reference information and Id from actions that occured (chatter post id, approval process submitted info)
  • Event output information can now be available that the flow waited for.  When the “Wait” element concludes you can capture the status and date/time.

Monitor Login Activity – is now GA, you can use event monitoring to to see when and how often your users are logging in. This data is available for 24 hours and through the EventLogFile sobject.

Manager Groups – are now available for all orgs.  This allows the ability to share records and give access through sharing rules even when “Access Using Hierarchies” is disabled for an object.


  • Publisher Actions are now termed Quick Actions
  • Record Actions are now termed Productivity Actions
  • You can now create/assign or edit Accounts, Opportunities, and Custom Object records owned by an Inactive user.  Previously only available to Administrators.
  • Better formula monitoring for compound fields (can now use isnull, isblank, ischanged) Development

Quick Deploy – I mentioned this in the Winter ’15 release, and I’m excited to read its GA with Spring ’15.  Deploying to a production org with a multitude of test classes can be an exercise in patience.  With this new feature, as long as the validation run (and test classes) has executed you then have 4 days (96 hours) to “quick deploy” your components, meaning the target environment test classes don’t have to run again.

Visualforce Map Component – Along the mapping theme in this release you now have a VF tag to create a map component inside a VF page. <apex:map /> to create the map canvas and <apex:mapMarker /> to create the marker for the map.


Apex Flex Queue – is now GA, you can submit up to 100 batch jobs that will be held in holding status.  When resources are available a job is retrieved an moved from the Apex flex queue into the batch job queue.  The ability to process 5 queued or active jobs hasn’t changed, but this provides a much more flexible (see what I did there?) mechanism and pipeline for these jobs.  Also you can modify the order of jobs held in the Apex flex queue.  This can be done in Setup–>Jobs–>Apex Flex Queue.

Asynchronous callouts from Visualforce – An async callout (continuation) can allow you to to make long running requests to external web services and process a response in a callback.  This helps with Visualforce UI’s that may have multiple concurrent requests coming from a larger user base.

@testSetup – can be used to create test records once in a test class and then subsequently used in all unit test methods within that same class.  While this is a great option for setting up test data once keep in mind changes do not span across unit test methods.  After the test method is complete, changes are rolled back when additional test methods run.

Compound fields in Apex – this may be a small change, but one that will greeted eagerly by developers.  Address and Geolocation Compound fields are finally available in Apex.


New Apex Classes:

  • Database.DMLOptions.DuplicateRuleHeader
  • Database.DuplicateError
  • System.Address
  • System.Location
  • System.Continuation
  • A lot of classes under DataCloud

Lightning Components – are still Beta in Spring ’15 but its exciting to see new components and events made available.  Also a list of changed features include:

  • Component markup is now case sensitive.
  • Namespace requirement removed but support added for default namespace.
  • Lightning components can now extend another Lightning component (inheritance).  Also an app can extend an app.
  • Referential Integrity added when editing and saving components.

Components can now be configured to be usable in the Lightning App Builder and Lighting Pages.  You’ll need to implement the interface:

<aura:component implements=”flexipage:availableForAllPageTypes”>

and provide a design file to the component bundle:


<!–attributes here–>




  • Number of deployable/retrievable items have been increased from 5k to 10k files.
  • When (at what point) components are deleted in a deploy (beginning or end) can now be controlled.
  • New attribute for <flow:interview /> “allowShowPause”
  • For the JS utility, and nagivateToRelatedList() method, the relatedListId parameter will now accept the API name of the related list instead of the internal Id.
  • Per the Apex Flex Queue functionality, the existing AsyncApexJob has a new Status field.  Value of holding when in the flex queue.
  • Callout size limit (request or response) increased from 3MB to 6MB (sync) and 12MB (asynch)
  • A tooling api endpoint “apexManifest” is now available to list all apex classes and triggers for an org.
  • ChatterMessage object now supports triggers.


So overall I feel like this is a really decent size release for the platform and developer features.  Many core pieces added and the continued maturation of Lightning being made available to us.  Again this is not all inclusive, make sure you check out the release notes!