76 Results

Encryption & Decryption with Crypto

Platform security is important. Creating a composite application for the AppExchange, developing integrations with open authentication (OAuth) or simply integrating salesforce with an internal system/platform can make your security team nervous. However, the Salesforce Crypto class should put your security folks at ease. [...]

RecordType Utility Apex Class

I like to group Apex methods by the object to which they apply. I find that this supports troubleshooting of code and ultimately reduces the amount of code in a given Salesforce organization. For example, every Salesforce developer that works in an Enterprise level organization or higher will find that more often than not they need to know the record types for a given object. [...]

Pass Values to New Opportunity Using Apex

Last year I wrote a post describing how to pass values to a new opportunity using the URL. This post is simply an alternative to accomplish the same goal of auto-populating values to a new record except using Visualforce and an Apex Class controller. For the purposes of our demonstration we will make some general assumptions about the values we want to pass to the new record. To keep it simple we plan on populating the Name, Stage and Close Date of the new opportunity. We will also make the logic flexible enough so that if Salesforce happens to pass additional information we will be able to include those key value pairs as well. [...]

Locale Aware DateTime Component

I am working with a client that is deploying some existing Visualforce pages to international Users. The Visualforce includes some Date and DateTime values so I checked them to make sure they would render appropriately for people accessing the logic internationally. It turns out that the original Visualforce code uses the <apex:outputText> tag to drive formatting for much of the Date/DateTime values within the pages. Therefore, I am converting the occurrences of each <apex:outputText> tag to the Visualforce component I built for rendering. [...]

UNABLE_TO_LOCK_ROW Error Message

I was recently developing some Apex logic and encountered the UNABLE_TO_LOCK_ROW error while running my Apex unit tests for the new code. This UNABLE_TO_LOCK_ROW error message can happen when unit tests update the same record(s) at the same time or when unit tests try to create records with duplicate index field values. One way to avoid this UNABLE_TO_LOCK_ROW error is to simply turn off parallel test execution. This can be accomplished via Setup > Develop > Apex Test Execution. [...]

Edit Link Override Visualforce Page

I just built a Visualforce application that people can use to associate a number of "child" records to a single "parent" record. Let's say that the application uses the Account object as the standard controller and then we extend the logic so that we can find, manipulate and link many Contact records. The functionality of the application is not important for this post but how we access the application is important. [...]

Custom Error Handling in Visualforce

I am a big fan of developing Visualforce pages that are useful to humans. This means providing helpful feedback to the person interacting with the application in order to limit User frustration. In some circumstances this means providing clearer error messaging rather than simply outputting any system generated errors. [...]

Error Handling in Visualforce with <apex:pageMessages>

A big part of building Visualforce pages is making sure that the human has a good experience while interacting with the page(s) you've designed. This means that you need to have a good way of handling errors when and if they occur. In this post I will highlight one of the simplest ways to handle an error by utilizing the apex:pageMessages tag within your Visualforce page. [...]

Pass Values to New Opportunity Using URL

Pass values to a new Opportunity via a custom button using nothing but the URL. This can be useful if you want to default some values on the detail page when new records are being created. It can save your Users some time so they don't need to fill out every field. It will also allow you to provide some guidance for values you want provided when new records are created in your organization. [...]

@testSetup Annotation Sample

The Spring '15 Salesforce release introduced the concept of the @testSetup annotation. According to the documentation, methods defined with the @testSetup annotation are used for creating common test records that are available for all test methods in the class. [...]

Apex Trigger Status Made Simple

Have you ever needed to deactivate a trigger for some maintenance activities on records or for a code deployment? At a high level, the act of activating/deactivating a trigger is simple. Go to your Salesforce sandbox, modify the status of the trigger and deploy the code. Depending on your unit test coverage for the trigger you may have to tweak the test class and include that in the deployment. [...]

Salesforce Wrapper Class Example

A quick search for Salesforce wrapper results in the following definition. A wrapper or container class is a class, a data structure, or an abstract data type whose instances are collections of other objects. That's fine but if you're new to the concept then it is likely that the definition of a Salesforce wrapper class is not as useful as a practical example of the logic. [...]

Prevent Calendar Display When Page is Loaded

We've all seen those edit pages in Salesforce when you access the page and a date or date/time field calendar widget immediately pops up. Sometimes that's okay but sometimes we would like to prevent that from happening because we would prefer the focus to be on some other element of the page. As a Visualforce developer you can accomplish this with a very simple snippet of JavaScript. [...]

Contact Edit Visualforce Page

I was coaching a beginner developer recently and she had a simple question. "Why doesn't my Contact Edit Visualforce page look like the standard Contact Edit page?" She was trying to format the Salutation and First Name fields so that they were on a single line and in one column of a two column layout. The screenshot below illustrates the standard layout, which she was trying to mimic in her Visualforce page. [...]

Modify Profile Permissions Using Enhanced List Views

Often times developers will move an object from a Salesforce sandbox to a Salesforce production org using tools like Ant, change sets or the Eclipse IDE. Developers may not always include Profile permissions when they move their objects from org to org. This means that any Create, Read, Write or Edit (CRUD) settings for an object will be unspecified for all Profiles except their own when the object gets created in the target organization. [...]

Beginner Apex Trigger Example

This post is intended for beginner developers or admins that are interested in learning more about the development side of the Salesforce platform. We will walk through the creation of a Salesforce Apex Trigger, highlight the fundamental elements of the logic and identify why the logic was built the way that we coded it here. [...]

Update to Partner Contact by Community User

Businesses that utilize Salesforce Communities for partners instead of the standard partner portal may find that partners have the ability to search for and find the Contact record that corresponds to their Community User record. It would be nice if salesforce.com did not allow for this visibility because the Partner User is technically unable to make updates to the Partner Contact record. If they click the "Edit" button for the Contact they will receive the Insufficient Privileges message. [...]

Do not create a new opportunity upon Lead conversion using Apex and Visualforce

My client has a use case where they want to convert a Lead but not create an Opportunity at time of conversion. The standard Lead conversion page is fine with the business owners but they want the "Do not create a new opportunity upon conversion" checkbox selected when the page is accessed by the Users in their org. This will allow Users to create an Opportunity in certain cases but default the option to false otherwise. [...]