As a Salesforce Admin you sometimes wish you could create a custom button on an object that does one thing depending on a certain condition or does something else if the condition is not met.
My company depended on external consultancy for such requirements and after letting then create some, analysing their code, I actually can create them myself now.
I guess it’s one of those features that you only get to know about when you get into a situation like I have ;-)
I call this a “hidden” feature because it’s one of those features you have to ask to enable through submitting a case at Salesforce Support. And if you Google hard enough with the right keywords you could find it. Let’s just say I didn’t for 2 months!!
Preparing for a Salesforce Certification exam always raises the question "What do I need to study and where can I find any good resources?".
As a good habit I developed over the last years I try to start the year of with a bang and getting a new certification always does the trick ;-)
So in this post I'll share the resources that I've used to study for the Salesforce Platform Developer I exam and what to expect from the exam.
60-70% of the questions I've got were scenario based, so you should have a good understanding of each topic referenced in the study guide. During the exam certain questions will leave you confused with more than one correct answer so read through the questions more than once before you select your answer(s).
Define your strategy:
Start with Salesforce platform developer 1 Certification study guide. Go through each section from the study guide to see if there is any specific area you need more knowledge on. Don’t rely on practice exams or exam dumps as they are mostly out-of-date and never replicates real exam. Sometimes those question/answers are just wrong. Salesforce has loads of documentation on each specific topic, so if you study hard and practice a lot in your developer org, you will do just fine!
Each section in the study guide is assigned percentage of questions:
- Logic and Process Automation (46%)
- Data Modelling and Management (12%)
- Testing (12%)
- User Interface (10%)
- Debug and deployment tools (10%)
- Salesforce Fundamentals(10%)
What to study?
First of all if you have access to a Premier Online Training catalogue or Partner Training catalogue do lookup the following online course:
It takes about 4 hours, but gives you a nice detailed summary of the most important topics and I actually had some questions that were clearly answered in this course! Highly Recommended ;-) ;-)
I watched this course when I started to study and then watched it again the morning of the exam as a review.
Besides that I studied the following materials:
Logic and Process Automation
- Describe how to programmatically access and utilize the object schema (Go through methods to validate Access Control for fields programmatically. During the exam I received a question on how to check whether user has specific permission on a specific object in a Visualforce page or not. Read through this article)
- Describe the capabilities and use cases for formula fields. (Understand when formula gets executed, Formula Data types, Building cross object formulas) . The questions around this topic might try to trick you between formula, rollup summary fields and trigger. Remember cross object formula always works from child to parent meaning you can create formula on child and reference fields from it's parent! And if a parent has to refer to children then it might be a roll-up summary field if there is a master-detail relation or otherwise a trigger for more complex logic. Workflow rules can update fields on the record itself or it's related parents for an update. Never children. Process Builder can update children!
- Describe the capabilities and use cases for roll-up summary fields. (Consideration for Roll-up summary fields, Go through the Formula & Validations trailhead)
Remember roll-up summary fields only work with Master-detail relationships, so as soon as you read that it's a lookup relation it can’t be a roll-up summary field
Very important table in the Process Automation Trailhead Module which compares capabilities of process builder, workflow, approval process and visual flow.
- Describe when to use declarative automation features vs. Apex classes and triggers (Yes same trailhead link because if you know you can’t use one of the process automation features then trigger is last option. Also check when use apex )
- Describe how to declare variables and constants in Apex and how to assign values using expressions. (Also go through apex workbook topics from Data Types and Variables till Assignment Statements)
- Describe the primitive and complex Apex data types and when to use them (Topic is covered by above link)
- Describe how to use and apply Apex control flow statements. (Be clear on when to use inline SOQL query in for loop and when not to use)
- Describe how to write and when to use Apex classes and interfaces.( Understand how inner classes can be defined, invoked from outer class, what they can refer inside their body and type of access modifier they can have. Try various scenario related to inner class by creating it in your developer org and call it from anonymous block or outer class)
- Describe how to use basic SOSL, SOQL, and DML statements. (It says basics not advanced so trailhead topics are good enough, make sure you clearly understand the difference between when to use Database class DML statement vs standard DML. Several of the questions will be about this, when can you rollback, are all records persisted to database even when one of them has an error, etc…)
- Describe the basic patterns used in triggers and classes to process data efficiently. (if you just remember to bulkify and no DML, SOQL within for loop and how to use inline SOQL query is enough for this topic. Trigger bulk operation, Trigger best practices)
- Describe when to use and how to write triggers on Trailhead. (Understand Trigger Exceptions, Context variable considerations)
- Describe the implications of governor limits on Apex transactions. (Remember in a single transaction you can retrieve 50,000 records via SOQL, update 10,000 records, execute 100 SOQL calls and 150 DML statements max that will cover majority around limits. The question will be scenario based and from code sample you will have to figure out whether whole transaction gets committed or partial or nothing. Count through number of times any DML or SOQL being executed and number of records being executed correctly.)
- Describe the relationship between Apex transactions , the save execution order, and the potential for recursion and/or cascading. (You must remember execution order by heart and there are definitely one or two questions on it. If you understand execution order you will understand when it can be recursive. )
- Describe how to implement exception handling in Apex. (I received question where there was code sample to select what kind of exception gets thrown. It was possible either null pointer or list exception. Reading carefully in first line of code there was no initialization of string and it was being referenced in apex condition so it will first throw null pointer.)
- Describe how to write Visualforce controllers. (Refer next topic links, Don’t forget Standard and custom list controller)
- Describe when and how to use standard Visualforce controllers vs. Apex custom controllers and controller extensions .
- Describe the programmatic techniques to prevent security vulnerabilities in Apex and Visualforce.
- Describe how Apex impacts the ability to make declarative changes.
- Describe the testing framework and requirements for deployment.
- Describe how to write unit tests for triggers, controllers, and classes.(Be clear on Test.startTest() and Test.stopTest() about how governor limit gets reset)
- Describe when and how to use various sources of test data.(Make sure you know how @Testsetup works and how it executes. Also know that you can load testdata from Static Resources!!)
- Describe how to execute one or multiple test classes. Describe the differences between invoking Apex in execute anonymous vs. unit test ( Unit test executes in system mode and any changes made to records are not visible out of its test execution context where with anonymous block any changes performed to data are visible after its execution is successful. Code written in anonymous block is not stored as metadata in salesforce org and user permissions are enforced during execution.)
Data Modelling and Management
- Given a set of requirements, determine the appropriate data model.(Expect scenario based questions and select whether to apply look up ,master-detail or junction relation)
- Describe the capabilities of the various relationship types and the implications of each on record access, user interface (UI), and object-oriented programming. (Scenario Questions like display child related list on parent record, have to manage permissions separately from parent etc.)
- Describe the impact of schema design and modifications on Apex Development.
- Describe how to visualize and create entity relationships. (Schema builder and it's functionalities)
- Describe the options for and considerations when importing and exporting data into development environments. (Scenario based question for whether to use data loader or built in Import Wizard.)
Debug and Deployment Tools
- Describe how to monitor and access various types of debug logs.( Expect questions like at what log level User Debugs are logged or what is a checkpoint in developer console. Go through the Developer console options for viewing logs like using logs perspective, filtering logs etc. which will be more easier than reading.)
- Describe the capabilities and security implications of the Developer Console, Workbench, and Force.com IDE.
- Describe the different processes for deploying metadata and business data.
- Describe how the different environments are used in the development and deployment process.
- Describe the considerations when developing in a multi-tenant environment.
- Describe how the Salesforce platform features map to the MVC (Model View Controller) pattern.
- Describe the capabilities of the core CRM objects in the Salesforce schema. (Read through Account & Contact trailhead, Lead & Opportunity trailhead. This topic is very general and it's all about knowing relations between these objects and their capabilities)
- Identify the common scenarios for extending an application’s capabilities using the AppExchange. (know the difference between unmanaged package and managed package)
- Given a scenario, identify common use cases for declarative customization. (Scenario based question which will focus on test takers ability to identify whether to use formula, roll-up summary field, validation rule, workflow rule, process builder or approval process. Refer to trailhead modules ‘process automation’ and ‘formula fields and validations’)
- Describe how to display Salesforce data using a Visualforce page. (Though This topic is very broad but studying basics should be enough. You can still go through first few sections in visualforce developer guide. )
- Describe the types of web content that can be incorporated into Visualforce pages (Maps, Charts, flows, PDF renderer and custom content type. This topic is very broad but you don’t need to learn details of how these components can be embedded into VF pages.)
- Describe how to incorporate Visualforce pages into Force.com applications.
- Describe the benefits of the Lightning Component framework.
- Describe the resources that can be contained in a Lightning Component
I also recommend unlocking all the Trailhead modules necessary to do the Apex Specialist Superbadge. I've done this and found it highly valuable, but I have to say that the Superbadge itself was a real pain in the **** and took me about 12 hours to complete :-(
I hope this helps anyone who wants to pass the certification exam! Good Luck!
For those of you who create Visualforce pages to extend default Salesforce functionality and who want to be as close to the standard layouts of the user interface, this little baby might come in handy to know ????
When you create a pageBlock in VisualForce you might have noticed that the background is LIGHT GRAY when viewing or editing fields, but if you use the standard edit function for an object the background is WHITE!
How do you make sure that your VisualForce page uses the same layout styles and properties as native Salesforce functionality?
Have you ever had the following business requirement?
You all know that when you submit a record for approval you can have an email notification sent to the approver with some mergefields of the record to be approved and a link that takes the approver immediately to the approvalpage.
But what if that email should also contain childrecords, like for example when you have to submit a quote for approval containing the QuoteLineItems in the approval request email, so that the approver can immediately decide without having to go into Salesforce to review what you are offering your customer.
Brian had some trouble with that and asked for help on the Salesforce Community and I wanted to challenge myself and give him a hand with it.