Summer 15 for Developers
Summer 15 for Developers

Summer 15 for Developers

06/08/2015 by Roger Mitchell
Summer ‘15 started rolling to production orgs this month, and here are the features we’re excited about for developers.

If you’re a developer and have already started working with new features in Summer ‘15, it’s prime time to start deploying these to production as Salesforce upgrades its last instances this weekend; if you haven’t gotten to dive into the release notes yet, here are the features that we’re excited about for Summer ‘15.

Backend Changes

Two types of composite resources were added to the REST API, and the SObject Tree is an interesting enhancement that enables developers to create 200 records in a single request. Each request must have the same parent object type (e.g. Account) and can nest child records based on the relationship name (e.g. Contacts, Opportunities, Your Custom Object). This change enables developers to leverage an out-of-the-box feature of the API instead of creating a custom endpoint to handle the logic, or make multiple requests to the REST API.

Salesforce is now offering encryption at rest for all data, not just custom text fields, which enterprise architects and developers often will encounter as part of the vetting process for getting on the platform. This is a paid upgrade, though many CIOs may deem it worth the expense. Organization Sync also has some support for syncing metadata, which can help decrease the dependency on using continuous integration to push any changes to both primary and secondary orgs.

Small Steps for UI

Declarative developers have a few quick wins from the UI side, as Salesforce has decoupled the publisher actions bar, allowing for admins and developers to create a desktop-specific and Salesforce1-specific layout of various actions. This small change has a big impact, as not all actions are mobile-friendly in terms of data entry or displaying to the user within the app.

Troubleshooting development has also gotten easier, allowing admins and developers to login as any user in the organization without requesting Salesforce to enable the permission, and without requesting the end user to do so. This will streamline the iterative feedback process when assisting users with production bugs, or testing functionality in a variety of scenarios during development.

On the Visualforce side, enriching content with maps in our pages has gotten sexier, as we can now customize the map marker used (perhaps a cloud or kitten?) for our waypoints, and include pop-up windows that can appear when a user clicks or hovers over a map marker. This mimics functionality available with other mapping apps, like Google Maps and GeoPointe.

Giant Leaps for ISVs

Salesforce has taken a big step to allow us to delete components from their managed packages, which can assist with cleaning up hefty apps that have evolved over time (both with the platform, and for the app’s architecture). While this feature is only available to select partners, there are some teams out there that can rejoice to not prefix their custom settings with “DEPRECATED: “ or “X_”.

Another great leap is that custom metadata types are now generally available, which allow us to hold app specific configurations in a place that can have its records packaged and deployed. Previously, custom settings or custom objects were used to populate specific settings to get features to work correctly, which presented a challenge for ISVs and deploying with change sets. Metadata types changes this, and allows a metadata type AND its records to get pushed to orgs.

We’re also able to indicate how our apps impact customer org limits based on the number of custom apps, tabs, and objects that we include as part of our package. This helps customers clearly understand how our apps will impact their org, and make informed decisions as part of their installations.

What other features are you loving from Summer ‘15? Feel free to leave comments and questions below, on our Facebook page, directly @RogerMitchell on Twitter, or in the Success Community!