Apex Trigger Frameworks

20 marzo, 2017 Salesforce

As most of you already know, we should use a trigger framework in order to manage properly the logic that is executed after we create, update or delete a record by using Apex. The main reason is that we cannot control the order of execution of the different triggers that we can have per object. There are a lot of frameworks available that we can re-use, my favourite ones are as follows: Kevin O’Hara published in 2014 a good frameworkRead More

Frameworks for testing Apex Code

9 marzo, 2017 Salesforce

I would like to share a couple of framworks that are very useful for testing Apex Code. The first one is Apex Mock and it will become essential for you when it comes to create test data for your Apex Test classes. The second framework is FinancialForce ApexMocks Framework. This one allows you to decouple complex logic and test it separately. I encourage you to check them out and spend half an hour trying to understand how they work. Once you haveRead More

Get code coverage using REST API query

6 febrero, 2017 Salesforce

Let’s suppose you need to find all the classes or triggers starting with “MY_” and having 0 lines covered. The REST API query we need would be as follows:

Obviously, it will return a JSON string with the classes and triggers which match the criteria. There are a lot of online tools to view the JSON response as a tree view, such as Code beauty and JSON Viewer or even convert it into CSV.

Retrieving blob objects from Azure with Apex

3 octubre, 2016 Salesforce

Maybe you need to retrieve blobs stored in Azure Storage Services and save them as Salesforce attachments. Let’s suppose we have an attachment base64 encoded stored as a blob in Azure. We could retrieve it with the following snippet:

Sending e-mails from Salesforce using Amazon SES

3 octubre, 2016 Salesforce

SFDC has increased from 1000 to 5000 the number of e-mails that can be sent to external e-mail addresses within Winter ’17 release. This is really good news but still, in some cases, can be insufficient. I want to show you how you can send e-mails, in both HTML and text plain versions and with attachments using Amazon SES. However, as of now Amazon SES doesn’t support TLS v1.1, only supports v1.0. SFDC is going to disable all the communicationsRead More

Named credentials using OAuth

12 mayo, 2016 Salesforce

Sometimes you need to use the Rest API in your Apex Code to make callouts to other Salesforce Orgs or even to the same Org where you are executing your code. You could use Named Credentials to avoid storing user and password credentials (normally in an unsecure way) with OAuth. We will need the following components for achieving our goal: Connected App Auth Provider Named credentials Let’s see an example of set up; Code for testing:

Let’s call ourRead More

Setting RecordType for new records without query

27 febrero, 2016 Salesforce

My godness, how many queries would force.com save if all of us knew this?

How come has this gone unnoticed? Anyway, better late than never!

CreatedDate in test classes

26 enero, 2016 Salesforce

Finally Salesforce fills the gap and allows you to specify the createddate field within test classes. You only have to use the Test.setCreatedDate method introduced with Spring ’16.

Better late than never!

Manage UserTerritory table through REST API

22 enero, 2016 Salesforce

UserTerritory is one of the few objects that don’t allow DML Operations. However, we can manage it through the REST API. We could assign a User to a Territory by using the following APEX code:

If you want to remove a user from a territory, then the APEX code would looks like the following:

Happy coding!

Defensive future calls

14 enero, 2016 Salesforce

I would like to talk about the wonderful and simple pattern for making future calls. This pattern was presented by Dan Appleman at one of his sessions at Dreamforce this year. It looks like this:

Simple but very effective. To provide you a quick example. Let’s suppose we have a Session object and a trigger which is fired when a Session record is inserted and we need to make a future call when it happens. In our future methodRead More