This is the second post in 2 part series of Salesforce winter’16 release features review for Dev and Admin. Click the link to visit part 1 in this series.

  • Track Geographic locations of users login

Now Salesforce Users can view their locations of IP addresses for past logins from their personal settings. As well as admins can view any user’s login IP address locations history from individual user’s page.

  • Store larger passwords and OAuth tokens when using Named Credentials 

Named credential is one of the important feature to handle authentication without worrying about processing authentication parameters from apex code for callouts. In the past with larger Oauth tokens and passwords it was not possible to use Named Credentials. With increased size for storing OAuth tokens to 4000 and password to 1020 characters all callouts related authentication parameters can be handled from Named Credentials.

  • Customize Connected App behaviour with Apex

Now you can associated your own apex class to connected app to provide more authentication options and manage user attribute handling. You can create a class that extends ‘ConnectedAppPlugin’ and assign it to connected app. When you are creating or editing connected app you can enter the name of apex class in the custom connected app handler section of connected app settings. The class has 3 methods to handle authorization, custom attributes and refresh(Called by salesforce during refresh token exchange) method.

  • Transaction Security Policy (Available at extra cost and currently in Pilot)

Event based monitoring is a key to protect sensitive data or any suspicious activities. With transaction security policy Salesforce allows to setup predefined security policies for specific events or define custom policies based on need. Salesforce provides setup audit trail which captures some of the events but there is no notification sent out when specific event happens. As this feature has an ability to notify as well as perform an action it becomes an important weapon. For example you can define a policy to notify admin when someone downloading key encrypted data. Another example to configure login policy where you allow only 3 concurrent sessions instead of 5 allowed by Salesforce.

  • More support for Platform encryption.

Now you can apply platform encryption to person account, selected case and case comments fields. When you apply encryption to certain fields in person account equivalent fields in Account and Contact will also get encrypted.

The case fields subject and description which can be populated by web to case can also be encrypted. Case comments object body can also be encrypted

There is now support of encryption for field type of text area as well. The crucial change comes in support of grouping for encrypted field in reports.

  • Choose options for running unit test case with change set

When you are validating or deploying inbound change set in production or sandbox there is an option to select whether you want to run local test classes (Excluding managed packaged one..this is also default behaviour) or specific test classes or all test classes (Runs test classes in managed package too). This will be certainly very helpful for faster deployment through change sets in case if you are sure you code has enough coverage and want to run only new test classes.

  • Sandbox management changes

Certainly many times you forget to activate the sandbox after refresh. This option allows to auto activate the sandbox after refresh. just select ‘Auto Activate’ option under sandbox option and there wont be any activation email or have to click on ‘Activate’

User will not required ‘Modify All Data’ permission to refresh, create or activate the sandbox. With new permission named ‘Managed Sandbox’ it allows to perform sandbox maintenance without providing total control on data.

Progress tracking of sandbox refresh or creation with progress bar for sandboxes in queue, in process or recently completed from Data Management | Sandboxes. Progress bar also displays percentage completed for sandbox refresh.

  • Apex Debugging

Debug apex code in eclipse like java or other programming languages with improved debugger. This is the one of the awaited feature of eclipse plugin. With improvements you can set break points, view variables including sobject types,collections and apex system types. You can also output your result to console window which many are going to love to trace the issues while working in support or development. Check the link for more info on additional details on this.

While using debug logs you have to keep resetting monitored user log as it fills up. Now you have an option to set different trace flag with customized duration. Trace flag has debug level, start time, end time and log type. The log types are DEVELOPER_LOG, USER_DEBUG, CLASS_TRACING. You can resuse debug levels across the trace flags.

  • Lock and Unlock records from apex

lock() and unlock() methods in system.Approval name space will allow to lock record by passing record id. Previously this was only possible from user interface. This feature needs to be enabled before using it from Setup | Process Automation Setting. Then select ‘enable record locking’ and ‘unlocking apex’. Record locks and unlocks are counted as DML and counts against DML limit. Further example of this feature can be found on following link

  • Unhandled apex exception Email

Previously when there is unhandled exception occurs in prod the email is sent to user who deployed it. This was very painful if user who deployed it went on vacation after deployment and there were bunch of errors happened during that time. Now you can specify email addresses to notify when apex exception occurs from ‘Apex Exception Email’ under setup.

  • Other Apex changes

You can now make calls to the getContent() and getContentAsPdf() methods of the PageReference class from within asynchronous Apex such as Batch Apex, Schedulable and Queueable classes, and @future methods.

You can use the following data types as keys in JSON-serialized Map objects.

  • Boolean
  • Date
  • DateTime
  • Decimal
  • Double
  • Enum
  • Id
  • Integer
  • Long
  • String
  • Time

The equality operator == returns true when comparing long and short version of IDs during JSON Serialization and deserialization.-

  • Platform Cache

Now you can use cache namespace in apex to improve performance by specifying what to cache and for how long. By using session cache will avoid need to create set or hold large visual force view state. Another type of cache is org cache which allows to hold data to be used across sessions, profiles and users. Session cache expires when users session expires or reached to specified Time to live. Org cache will expire when it reaches to specified Time-To-Live. The link provides more details on platform cache.

  • Links to Other important changes

New and Changed apex classes

New and Changed Objects

REST API, SOAP API, Metadata API changes

The 2 part series for winter’16 changes comes to an end here. I hope you  enjoyed reading it and found useful. In the next post I will be putting together how to use Salesforce process builder with its advanced features.