Winter ’15 – Developer and Platform Style

Is that time of the year, you’ll see many blogs going over these new features of Winter ’15, I want to take a moment and specifically focus on the platform and development.  As always not all inclusive, just my take and highlights I see as I go through the release notes, enjoy Winter ’15 !

Force.com Customization

Force.com Home Page Recent Items –> now includes more platform pieces like approval processes, and workflow pieces.  Less clicks is always good.

Advanced Setup Search (Beta) –> This will now be enabled by default in all orgs.  There are also some items added to the results (workflow items, email templates, queues, static resources, etc.).  An object column is also available now to show any parent objects.

advanced setup search

Custom Permissions –> are now GA and will include a new global variable $Permission that can be used on run time to check a users custom permissions.

Salesforce1 Platform Connect –> Use this tool and external objects to access data in your external systems.  Exposing this brings you all the goodness of the Salesforce1 platform.  Look for this to further strengthen the analytics offerings coming up with a “full data perspective”.

Flow:

Time-based Processing –> Look for the new Wait element in flow to automate your time based periods.  Great new feature to encapsulate and connect those stringed out processes that require necessary time intervals. (Example, perform a record create or update then two days later send an email to the record owner.)

Collection Variables –> a new flow resource that can be manually populated or from other flow resources.  This is for more primitive type values like text, numbers, etc.  You can also use collections to send multiple email addresses into a Send Email Element.

Submit Record for Approval / Post to Chatter –> this is now GA, you can configure a flow to submit a record for approval.  Also new, you can post to chatter from flow.    In the past these needed an Apex class as a plug-in.  Continued example of flow eating up the real estate of code requirements, love it!

Login Flows –> this one is neat, and caught me off guard.  This allows post login procedures to occur with certain profiles.  Basically any process you want to force the user into post login (terms agreement, additional data capture, second factor authentication, etc) you can now accomplish with Login Flows.

 

Force.com Development

Deployment –> Yes oh yes we can now deploy apex with active jobs (schedule apex, batch, etc).  This is not by default, make sure to turn this option on. (Setup\Deployment Settings)

Quick Deploy (Pilot) –> So I’m interested to see how successful this becomes.  Quick Deploy allows you to push components to production and skip all Apex test runs if the components have been validated in the past four days.  For any environment that has many, many unit test, you know how painful this can be (upwards of 30-45 mins per deploy attempt).  Under the pilot this can only be executed through the Salesforce user interface (Deployment details).

deployTool

Visualforce Remote Objects –>  You’ll see alot of posts about this throughout the developer community (especially Force.com MVP’s).  This is the ability for basic DML actions against your Salesforce objects, directly through JavaScript.  This has been in pilot/beta for a while and now its GA.  Very powerful option from a UI perspective and mobile.

Visualforce Style Sheet and Resources –> Standard Style Sheet loads in Visualforce are now a combined connection load.  No risk or action needed on a developers part, content is unchanged, just wanted to point out the potential performance improvement.  There will also be a critical update for “Serve static resources from Visualforce Domain.”  This will change how resources are loaded, currently through the salesforce.com domain, to the force.com/visualforce domain.  If you’re currently loading resources through the $Resource global variable you should be fine.  Otherwise if you have a absolute reference this will break.

Asynch Jobs through Queueable Interface – Great tool and control for developers for asynchronous  apex.  Some benefits over future calls are you get your job id and ability to chain jobs.  (Warning: won’t be able to chain in apex unit testing).

Future and Callout Limits –> have been increased from 10 to 50 (future) and 100 (callout).

Trigger support for Territory –> now available for Territory2 and UserTerritory2Association.

Apex Class changes –>  each release we get little nuggets of functionality in the apex class changes and additions.  I always enjoy going through these and there are usually a decent amount.  Some that piqued my interest:

  • Queable Interface and queable methods in the Limits class (obviously with the new feature)
  • InstanceOf (change) will return false if lefthand operand is null.  (Not retroactive, have to bump up to API 32).
  • E and PI now available in Math class.
  • Handful of Authentication classes and methods added, same for ProcessSubmitRequest for approvals.
  • New URL methods in the Network class that will be handy for anyone developing with communities.

Force.com IDE Improvements –> this is somewhat old news but is being announced through this release cycle, the Force.com IDE for Eclipse went open source and can now be found on GitHub.  You can clone the repo and fiddle away with it.  Look for more info and sessions on IDE building and the tooling API at Dreamforce this year.

API’s –>  big addition to the SOAP and REST API is the List View resource, as you’ll probably see coined the List View API.  Very excited about the potential of this addition and ability to read those resources and execute SOQL behind the List View.

 

 

 

 

 

Salesforce MVP Summit v2.0

This past June was the 2nd annual Salesforce MVP Summit.  Some background:

-A Salesforce MVP is someone with outstanding community and knowledge contributions to the Salesforce success community.  Nominations are held every release, more info here: MVP Program.

-The MVP summit is an event Salesforce does where they bring all MVP’s to San Francisco, CA for a couple days of round tables, sessions, and collaboration.

My take:  I’ve been fortunate with the opportunity of being an MVP.  I was nominated and accepted this past winter (’13-’14), so this was my first experience with the summit.  All I can say is….wow.  Expectations were blown out of the water with all the knowledge and content that was discussed.  Three things that impressed me:

1.) How valuable the MVP program has become.  Salesforce has really started to rely on this advocate program not only for ideas and community support, but also for road map and beta input.

2.) Trust.  The amount of knowledge and forward looking vision was on high display at the summit.  Salesforce really trusts the MVP group with this sensitive information.

3.) Openness.  The frankness and openness of the product managers was so good to see.  Not only were they very honest with where they are and what they are dealing with, they wanted and solicited our input and feedback.

 

Overall, just a great event.  Such a great job putting this even on, and hoping its the template for many more to come!

 

 

Force.com IDE – The Eclipse Plug-in

Throughout the past year Salesforce has invested in building out and improving the developer console.  The developer console is a great place for new developers, quick environment edits, running tests, etc.  With all the progress in the Developer Console, we as developers wondered when the eclipse plugin would receive the same amount of love.  It looks like that day as come!  As of today, the force.com plugin for eclipse just went open source:

https://github.com/forcedotcom/idecore

What better way to improve this important tool than to open it up to the community that has always delivered to Salesforce and the ecosystem!

GearsCRM company summit

This past week the GearsCRM crew got to hang out and meet in Cape Cod.  We had to time to swing the golf clubs, visit the spa, and have a drink or three (who’s counting?).  Most important, we had time to collaborate and take an inner look at the company and what we do.  A few things I noticed:

1.) We are Salesforce geeks.  In our downtime our jobs, projects, and hurdles were brought up multiple times.  Not once did I hear “stop talking about work!”.  Everyone had an open ear and enjoyed the conversation.

2.) We love what we do and we’re good at it.  It’s great to work in an environment where we are pushing the envelope and love challenges.

3.) We’re human and we’re honest with each other.  No egos, we’re honest about what we can do and ask for advice when needed.

Date Formatting in Apex

Here’s a quick cheat sheet on displaying dates and date info via Apex.  In this example I’ll use system date for “right now”…but you can do this with any instance of the Date class.

Day of the week:

system.now().date().format(‘EEEE’);

Month of the year:

system.now().date().format(‘MMMMM’);

Year-Month-Day:

string.valueof(system.now().date())

Month/Day/Year:

system.now().date().format()

 

***You can find additional examples here: Java SimpleDateFormat

Salesforce Developer Evangelist

Absolutely fantastic post by our friend Brian Kwong, aka the “Salesforce Wizard”, on the Salesforce Developer Evangelist group.  This is such a great group to be plugged into to see what they are discussion and the content they push out each month.

Make sure you check out the links Brian provides for the developer blogs and twitter accounts.

Again here’s the link: Salesforce Developer Evangelist – Some of My Favorite People

 

Delay of Spring 14 – The Positives

Salesforce has delayed the Spring 14 Release.  This counts as the second time in this past few months this has occurred.  Most people will say this isn’t a good thing, however this tends to remind us of some very key points in using a platform like Salesforce.com:

1.) It enforces that Salesforce is customer success driven first and functionality driven second.  Let’s be honest, it takes a lot of guts to pull back a scheduled go-live of this size.  I actually feel more at ease that they taken this action to ensure we as customers are successful.  Good for SF to make the gutsy call.

2.) It reminds us how fortunate we are to work in a platform that has so many releases.  No other system or software handles or provides releases and functionality like Salesforce.com does.  For most on-premise software, releases can be a nightmare to roll out.  How fortunate we are to work in a platform with such a great track record.

3.) It confirms our trust in a cloud platform like Salesforce.  In my opinion, working through this strengthens our partnership with them.

Looking back, this hasn’t happened that many times.  Salesforce has a great track record when it comes to system availability and release roll outs.  I’m still motivated as ever to work in the most cutting edge cloud environment!!

Getting started videos

Remember when you first signed up with Salesforce.com?  You got your first few introductory emails, carefully read each one and then started to explore your new cloud environment right?   Probably not.  Most of us where so excited to begin we dove straight into configuring our Org and building some cool processes in the cloud.

 

Those introductory emails, especially with recommended videos should not be overlooked.  Here is a good link to all the Quick Starts: https://help.salesforce.com/apex/HTPopularTopicsDetail

Visualforce Page Banner

One of the neat little solutions I implemented in an Org a while back was something I called the Account Banner.  This could really work with any object, in this scenario we were working with Accounts.

The issue we faced was, with hundreds of users spanning multiple departments, some daily users and some not…and with fields upon fields in a page layout, sometimes a “status” of a client was lost in the information.  For the departments that were not deep SF users, they didnt always remember to check that information.

The concept was, we wanted to display some information or graphics dynamically on a page layout to notify the user of that “status”, but we didn’t want to go full custom VF page.  A really great feature of standard page layouts is that you can insert a VF page into it and have it run on page load.

We used the standard Type field and actually accomplished this without writing an Apex class.

 

1.) We loaded some images to Documents in Salesforce.  Each image represented a status we wanted to track for the client.

53025de1d535cfb0400000d2

(note: nothing fancy on these images…created in excel)

2.) I created a visualforce page, utilizing the Account standard controller, then based on the picklist value of the Type field (and some others) I would show/hide images at the top of the page.

5302611ed535cf4ff9000062

 

3.) Add that page to any standard layout…in my example I added to the top and refined the size a little more to minimize the space needed.

53026223d535cfd0090001a9

53026273d535cf753100019c

 

4.) Now when you are viewing an Account, and values are changed you’ll see appropriate images on the Account Banner at the top.

53026389d535cf4532000064

 

 

Salesforce MVP

A few weeks ago it was announced that I had been nominated and accepted to the Salesforce MVP program.

http://blogs.salesforce.com/company/2014/01/salesforce-mvps.html

I can’t begin to express how excited I am about this, it’s a great opportunity to be part of a group of people that are very passionate about what they do in the Salesforce ecosphere.  More importantly though, I am absolutely honored, blessed, and humbled by this.  The Salesforce community is such a great place to be.  Not only are people passionate about what they do, but so much more to help others.  In my professional life this was really a void that needed to be addressed.  I’ve been fortunate to work in challenging positions where I’ve learned many things.  To be honest though I had become a bit bloated.  My involvement through user groups, blogging, answers, and the developer boards have really balanced out my professional life…and all the while the opportunity to assist and help people has become completely addictive!