Students, you’ve waited long enough – the Apex Academy is now LIVE!
Join the Apex Academy and let me be your mentor. I will personally guide you through all the lessons you need to learn to become an expert Salesforce developer”
No more open-ended tutorials. No more uncertainty over whether you’re on the right learning path. No more supplementary Head First Java books! I’ve designed this academy to be the only resource you need to become a Salesforce developer.
![]() |
We start from scratch and assume you’ve never coded before! |
![]() |
Real-world Salesforce examples drawn from my experiences working in over 50 different Salesforce orgs, including Google’s! |
![]() |
In-depth Apex tutorials that go deeper than anything ever written. Through video, voice, and exercises, I teach you how, and more importantly, why! |
![]() |
Yes, there is homework! |
Course #0: Knowing When to Code in Salesforce
Dive into the the pros and cons of various “clicks vs code” tools such as Apex, Workflow Rules, and Process Builder as we work together to solve a common business scenario. By the end of this course, you’ll have learned a step-by-step approach to decide whether or not you should use code in your next Salesforce project.
Course #1: Absolute Beginner’s Guide to Coding in Salesforce
[Updated for 2020!] Want to learn how to code in Salesforce but scared to start? This course is for you! We’ll give you a crash course on Salesforce development and teach you how to write, test, and deploy Apex triggers. No programming experience required – anyone can code!
Course #2: Fundamental Salesforce Coding Techniques
Behind every advanced Salesforce developer is a strong understanding of fundamental Apex coding techniques. Learn the six core Apex tools: variables, collections, dot notation, IF statements, loops, and DML. There will be multiple live demos of triggers and test classes – and lots of homework too!
Course #3: The Power of SOQL
The key to awakening the power of Apex lies in SOQL – yes this is the course where you become all-powerful in Salesforce! Learn how to write SOQL queries, how to integrate SOQL in your Apex triggers, and how to defend your org from bugs by using SOQL in your test classes.
The Apex Academy is my legacy in this world. I’ve worked so hard, and sacrificed so much already to make it. This academy HAS to be perfect. I believe if you work hard enough on a goal and pour all your heart into it that you can create a masterpiece. The Apex Academy is my masterpiece to you and I will do everything it takes to make sure you achieve your goals through it!
Frequently Asked Questions
Should I take the Apex Academy or follow along the tutorials on SFDC99/Trailhead?
My SFDC99 tutorials and Trailhead are superb, especially if you’re a natural self-learner and you’re not afraid to Google things to fill in some blanks.
But if you’re looking for the best possible opportunity to learn to code and you want your hand held throughout the entire process, the Apex Academy is for you!
Will you be providing scholarships to the Apex Academy?
Yes, I’ll do my best!
I’ve already given out over a hundred scholarships and I intend to continue helping those in need! If you’re a veteran, unemployed, or just going through tough financial times, email me at sfdc99.mailbag@gmail.com with your current situation. I have a limited number of scholarships available but I’ll do my best to help you out!
I’m interested in getting a subscription for my whole team at work – how can I do this?
Smart move – there are many benefits to a corporate subscription at PluralSight!
Email me at sfdc99.mailbag@gmail.com and I’ll get you in touch with a PluralSight contact!
What’s next for the Apex Academy?
A new course every few months on Salesforce coding, best practices, and certifications!
I’ve finished all the Apex Academy videos, what else should I watch?
Check out the 200+ Salesforce courses on Pluralsight!
See you in class, students!
David
I could see that your courses are retired. Please suggest how do we access since I was in middle of your course
Hi David,
I just signed in for Apex academy but couldn’t see the coding classes for Apex. There is lots of classes for Java but for Apex coding there is only a few I could find. Is there any chance you could guide me where are the apex coding classes ?
Hello David
// could you please tell me why my code is not working
I am new in Salesforce and I am trying to learn salesforce concepts
Please tell me
When Primary Contact is True then only selected Contact address is same as Account address
trigger UpdateAddress on Contact (after update) {
Set contactIds = new Set();
for (Contact a : Trigger.new) {
Contact old = Trigger.oldMap.get(a.Id);
if (a.BillingStreet != old.BillingStreet || …) {
contactIds.add(a.Id);
}
}
if (contactIds.size() > 0) {
Account[] updates = [
select Id, AccountId
from Account
where AccountId in :contactIds
];
for (Account c : updates) {
Contact a = Trigger.newMap.get(c.ContactId);
c.BillingStreet = a.BillingStreet;
…
}
update updates;
}
}
kindly provide full code (expand …) and requirement as stated in your use case
Hi hope you are doing well after 7 months,
I am also on week 6, but I am struggling. Want to know if you finish the whole week 6 homework in one trigger or two?
Since the homework require creating task, it must be after trigger. But at the same time it also update the fields on its record. So I kept getting error: execution of AfterInsert. The only solution I can think of is split the trigger into one before insert and another one after insert.
How do you write the code? mind sharing? Thanks.
Hi David,
Thank you so much for your Apex Academy classes.
I cleared PD1 recently.your classes are really helpful.
I come from developer background switching to salesforce.For beginners like me it gave very clear guidance.I am happy to find one such.
Hey David!
Your videos are awesome- thanks for sharing your knowledge! :) In your videos you mention that a SF developer should have the SF Admin training/certs as well. Should you have the SF Admin training prior to starting the Apex Academy?
I am a Project Manager who has helped implement and worked with SF for the past 3 years or so, I have some Admin knowledge but not enough to pass the certs. I am thinking about moving from the just a PM path to learning the development side of SF.
Thanks!!!
Yes! Generally strongly recommend admin knowledge first, roughly the level of the first admin cert!
@David Liu: Are you still teaching Salesforce on this platform? Are the contents here or on Pluralsight recently updated? Thanks
Pluralsight content is still good (just old UIs) but a refresh is probably coming. I wouldn’t wait for it though!
Hey David, I am in a desperate situation to learn a skill that can better provide for my family and stumbling across your youtube channel has given me a lot of hope..
Just curious what you think about my plan of attack being someone who has had practically 0% experience with salesforce in my work history and I currently work a job where this is all irrelevant.
I was going to combine trailhead and focus on force to pass my admin cert and get my skin in the game.
After that I want to begin your Apex academy while simultaneously going after the 5 certs that you recommend getting in the order you suggest.
Do you think this is a good plan of attack? Thank you for your content !
This is my (I think) bulkified solution to the Apex Academy SOQL Opp compare challenge (with no SOQL in the loops).
Question is @DavidLiu – when are the enterprise units coming??? (I will rejoin Pluralsight when they are available!!! ;)
****************************
public with sharing class OpportunityLogic2 {
Public static void createComparableRecords (){
//List oppsToReview = new List([SELECT Id, Account.Id, Opportunity.Account.Industry, Amount FROM Opportunity WHERE IsClosed = False AND Amount != NULL AND Opportunity.Account.Industry != NULL AND Id IN Trigger.newMap.keySet()]);
List oppsToReview = [SELECT Id, AccountId, Account.Industry, Amount FROM Opportunity WHERE Id IN : Trigger.newMap.keySet() AND Amount != NULL AND Account.Industry != NULL];
System.debug(‘oppsToReview size = ‘ +oppsToReview.Size());
System.debug(‘oppsToReview = ‘ +oppsToReview);
//set of base opp industry values used to find the comparable opps
Set baseIndustries = new set ();
for (Opportunity opp : oppsToReview){
baseIndustries.add(opp.Account.Industry);
}
System.debug(‘baseIndustries size = ‘ +baseIndustries.Size());
System.debug(‘baseIndustries = ‘ +baseIndustries);
//to relative-date filter comparable opps
Date oppCloseDate = date.today();
//list of potentially comparable opps
List possibleComparableOpps = new List ([SELECT Id, Account.Id, Opportunity.Account.Industry, Amount FROM Opportunity
WHERE CloseDate >= :oppCloseDate -365 AND Account.Industry in : baseIndustries AND
IsWon = True ]);
System.debug(‘possibleComparableOpps size = ‘ +possibleComparableOpps.Size());
System.debug(‘possibleComparableOpps = ‘ +possibleComparableOpps);
//Map the similar opps (utilises the private static below)
If(possibleComparableOpps.Size()>0){
System.debug(‘COpp3 possibleComparableOpps = ‘ +possibleComparableOpps);
List compsToCreate = new List ();
for(Opportunity possibleBaseOpp : oppsToReview){
System.debug(‘COpp3 possibleBaseOpp = ‘ +possibleBaseOpp);
List matchingCompareableOpps = identifyComparableOpps(possibleComparableOpps,possibleBaseOpp);
If(matchingCompareableOpps.Size()>0){
System.debug(‘COpp3 matchingCompareableOpps = ‘ +matchingCompareableOpps.Size());
System.debug(‘COpp3 matchingCompareableOpps = ‘ +matchingCompareableOpps);
for (Opportunity opp : matchingCompareableOpps){
Comparable__c comp = new Comparable__c();
comp.Base_Opportunity__c = possibleBaseOpp.Id;
comp.Comparable_Opportunity__c = opp.Id;
System.debug(‘Base_Opportunity__c =’ +comp.Base_Opportunity__c);
System.debug(‘Comparable_Opportunity__c =’ +comp.Comparable_Opportunity__c);
compsToCreate.add(comp);
}
}
}
System.debug(‘compsToCreate.Size =’ +compsToCreate.Size());
System.debug(‘compsToCreate =’ +compsToCreate);
Insert compsToCreate;
}
}
//**** static which identifies comparable oppsfor the CURRENT base opp in the loop
Private static list identifyComparableOpps (List possibleComparableOpps, Opportunity possibleBaseOpp){
list allCompareableOppsForBaseOpp = new list ();
System.debug(‘baseOpp amount = ‘ +possibleBaseOpp.Amount);
System.debug(‘baseOpp Id = ‘ +possibleBaseOpp.Id);
System.debug(‘baseOpp Id = ‘ +possibleBaseOpp.Account.Industry);
For(Opportunity opp : (List)possibleComparableOpps){
System.debug(‘opp amount = ‘ +opp.Amount);
System.debug(‘opp Id = ‘ +opp.Id);
System.debug(‘opp Id = ‘ +opp.Account.Industry);
if((opp.Account.industry == possibleBaseOpp.Account.Industry) && (opp.Amount >= possibleBaseOpp.Amount *0.9 ) && (opp.Amount <= possibleBaseOpp.Amount *1.1 )){
allCompareableOppsForBaseOpp.add(opp);
}
}
System.debug('allCompareableOppsForBaseOpp size' +allCompareableOppsForBaseOpp.size());
Return allCompareableOppsForBaseOpp;
}
}
Hello Master David,
Just want to check-in. I just finished Week 6 of the 15 weeks Apex Academy Curriculum the second time. We all can do this! PD1 here we come!
Hi hope you are doing well after 7 months,
I am also on week 6, but I am struggling. Want to know if you finish the whole week 6 homework in one trigger or two?
Since the homework require creating task, it must be after trigger. But at the same time it also update the fields on its record. So I kept getting error: execution of AfterInsert. The only solution I can think of is split the trigger into one before insert and another one after insert.
How do you write the code? mind sharing? Thanks.
How to join Apex-academy?
Are all courses updating on time ?
It’s all on demand via the links in this post! Refreshed in Dreamforce 2019!
Loving this it’s awesome!!!
This was my successful code for the secretInfo trigger challenge. @DavidLiu – dear teacher can you tell me how to get spaces between the different key words in the child case description I’m getting e.g. ‘ssnpassport numberbeen drinking’ when I want ‘ssn passport number been drinking’.
Or maybe even:
‘ssn
passport number
been drinking’
Goggle is not being forthcoming!!!
trigger SensativeDataOnCase on Case (after insert, before update) {
String childCaseSubject = ‘Check for sensative info!’;
String childCaseDescription = ”;
//step 1 create a list of the sensative key words
set keyWords = new set();
keyWords.add(‘ssn’);
keyWords.add(‘passport number’);
keyWords.add(‘been drinking’);
System.debug(‘keyWords = ‘ +keyWords);
//Step 2 – check to see if the case in the loop contain any of these key words
Set sensativeCases = new Set ();
for (Case myCase : Trigger.new){
if(myCase.Subject != childCaseSubject){
system.debug(‘case description = ‘ +mycase.Description);
for (String keyWord : keyWords){
if(myCase.Description != NULL && myCase.Description.containsIgnoreCase(keyWord)){
sensativeCases.add(myCase);
childCaseDescription = childCaseDescription + keyWord;
System.debug(‘Case = ‘ +myCase.Id +’ key word is ‘ +keyWord);
} else {System.debug(‘Case = ‘ +myCase.Id +’ description is ‘ +myCase.Description);
}
}
}
}
//step 3 create the child cases
for (Case sensativeCase : sensativeCases){
Case childCase = new Case();
childCase.Subject = childCaseSubject;
childCase.ParentId = sensativeCase.Id;
childCase.Priority = ‘High’;
childCase.Description = childCaseDescription;
insert childCase;
}
}
Nice. =). Good problem for you to struggle over!
Hi David, started a free trial of your amazing Apex Academy course two days ago and have been really enjoying it but today Pluralsight is giving me a message ‘Your current plan does not allow access to this course please upgrade’! Also, when I select the contact us box and submit a message I get an error. Thought you ought to know that the experience is a bit bumpy. Unsure whether I’ll take a paid subscription if the platform is always like this?
okay – they clarified it’s 10 days or 200 minutes for free. They got back to me super quick and reset my time so I take back what I said about my experience. Imagine I will be signing up. Thanks again David for this awesome resource!!
Whew thanks for getting to the bottom of this really sorry you had to go through the effort!!! If you run into another issue for any reason shoot me an email I’ll take care of ya
Hi Dave,
Thank you for Course #2: Fundamental Salesforce Coding Techniques. I learned a lot and was able to solve the 4 homework exercises on my own. My solutions were tested and they worked but when I checked yours I understood why your coding was more efficient. That’s why you are the instructor and SF TA, right? I am ready to start Course #3: The Power of SOQL soon. After that class, what should training should I take next in my Developer I journey? Thanks again!
Thanks! From there try to finish the 15 week curriculum and projects: bit.ly/go-apex
Hi David!
This course has been really great! I have completed Apex Academy #2 > Homework assignment #1 (WarrantySummary) and I’m thrilled!
I took the assignment a step further and attempted to get the Warranty Summary field to populate with any fields that were completed, and to leave those that were not completed *blank*. If all of the Warranty fields are empty, then populate the Warranty Summary message with empty values.
Does that make sense? I wasn’t able to figure out how to do this (spent a lot of time trying, though).
Is this possible, and if so, how difficult would it be? I’m just a curious beginner!
Thanks for putting all of this together!
Andrew~
Hi David,
Thanks alot for the amazing apex academy!
I spent 5 hours trying to solve check secret information and i failed!
And that made me crazy! Please where can i find the solution?
What is the solution? Anyone knows it please let me know before i go more crazy than this ☹️
Thanks alot in Advance!!
Crazy is good. =). Keep trying!
I did solve it!!!! After 7 days of trying
The secret was with the secret method! .split! Well i didnt know the secret method in the beginning and i tried to think in different ways! But when i knew this method i solved it in less than a min
Thanks alot!!! You helped me to LOVE CODING! And just keeeeeep tryyiing!!!
=)
Hi David. My name is Katie. I am living in the US but my English is not good. Can I learn saleforce developer and be able to do a saleforce developer job? Does people do this job need to be good at English? Thank you!
English is important for any Salesforce job here but it’s definitely the least important for developers. Cheers!
Hey David! On the Warranty Summary code, I’m trying to get the trigger saved into Salesforce to work on my test class, but for the following:
myCase.Warrant_Summary__c = ‘text field’
I am receiving an error saying expression cannot be assigned. I have made the custom field in the Case object of Warrant Summary, API of Warranty_Summary__c and set it to a text field type. Is there something I’m not seeing? Please and thank you!
// Populate summary fields
myCase.Warranty_Summary__c = ‘Product purchased on ‘ + purchaseDate + ‘ ‘
+ ‘and case created on ‘ + createdDate + ‘.\n’
+ ‘Warranty is for ‘ + warrantyDays + ‘ ‘
+ ‘dats and is ‘ + warrantyPercentage = ‘% through its warranty period.\n’
+ ‘Extended warranty:’ + hasExtendedWarranty + ‘\n’
+ endingStatement;
Very interesting! Sorry I got nothing for ya! Try more System.debug()!
It is because of a using ‘=’ instead of ‘+’ after warrantyPercentage. Try and please respond if that works !!
indumathiveluchamy4@gmail.com
Hi David,
Do you know roughly when you will be launching course #4? Currently on course #2 and loving what you put together and keen to keep going with the other courses you have planned.
Thanks,
David
Hi David,
When do you expect to be launching course #4 of the academy? Currently on course #2 and loving your modules so for hoping to be able to continue with new courses in the near future…
Thanks,
David
To be honest I’m doing YouTube videos specifically to procrastinate this more
Oh ok. One thing I haven’t figured out yet from where I am with your material yet: the focus so far has been on creating triggers and test classes.
Why is it that you are not specifically covering the creation of classes in general? Have seen developers creating those regularly and only use triggers to initiate some kind of utility classes. Something that you are covering in your existing courses?
Hi all, I need some helps for apex test class…
I have created apex class with below, but hitting the roadblock to create a test class to have more 75% coverage.
Please help..
public class LightningDataTableController {
@AuraEnabled
public static List fetchData() {
//Query and return list of Contacts
id userId = UserInfo.getUserId();
User u = [select id, contactId from User where id = : userId];
id getContactId = u.contactId;
List cont = new List();
cont = [SELECT AccountId, Title, Name, Email FROM Contact Where Id =: getContactId];
String dealerId = ”;
if(cont != null && cont.size() > 0){
dealerId = cont[0].AccountId;
}
List objRecords = [SELECT id,Product_Category__c, Product_Name__c,ProductCode,UnitPrice,Inventory_Status__c,Inventory_Description__c from PricebookEntry where isActive =true AND Pricebook2.isStandard = false AND Pricebook2.Dealer__c =: dealerId LIMIT 900];
return objRecords;
}
}
Hi David,
Hope you are doing good!!
I am working on site remediation which is developed on Salesforce, I need to customize a error below the fields in the contact form in site page.
for ex: “First name should not be empty” currently what I am seeing is “Please fill out this field”
I am new to this, can you please assist me on this.
Regards,
Lok
Hi All,
I need your help!!! I’m trying to complete the homework exercise from the Apex Academy Course #3. (“Write a trigger that sets the case status to “Closed” if there are more than 2 cases created that day associated with the same account”), but on my debug log file, I can see that the Status of the case has been changed to “Closed.” However, on the case record, the Status is still showing as “NEW.”
This is the code which I wrote:
trigger CaseStatusClosed on Case (after insert) {
for (Case myCase: Trigger.new){
if (myCase.ContactId != null) {
List checkForMultipleCases = [SELECT Id,
Status,
ClosedDate
FROM Case
WHERE ContactId = :myCase.ContactId
AND CreatedDate = TODAY
ORDER By ClosedDate DESC];
System.debug(‘The total number of cases created for this contact is: ‘ + checkForMultipleCases.size());
if (checkForMultipleCases.size() >= 2){
checkForMultipleCases.get(0).Status = ‘Closed’;
System.debug(‘Case ‘ + checkForMultipleCases.get(0).Id + ‘ status has been changed to ‘+ checkForMultipleCases.get(0).Status);
}
}
}
}
19:32:50:083 USER_DEBUG [16]|DEBUG|Case 5004R00001ZV0tiQAD status has been changed to Closed
Can you help me to understand where my mistake is?? Thank you :)
Hi All,
Sorry… I got the answer… Instead of using the before trigger, I used “After Trigger”. :)
=)
Abdirizak Suleiman
Hi David,
First 3 courses were great. Do you still have plans to release the others?
– The Dude
I want to know when will your Course #4 and Course #5 will be released.
David,
It’s June 2019 and you still list 2 more courses as coming for developers. Are they still going to come out?
David,
I’m almost finished with APEX academy. When do you think the other modules will done? Thanks for all you do.
Brandon
Hi david this is nikhil while login time it’s asking credit card details y …
Hello, I’m trying to install Salesforce CLI before Visual studio code and extension codes for Salesforce, but I’m having problems installing the CLI. I go to the main website and download the CLI for windows 64 and it runs and that’s it. Gives me an option to close and then I can’t find it anywhere. I go to my c-drive where it’s saved and open the file and a command box appears for about a few seconds and closes straight away. Please can anyone help me figure out what I’m doing wrong? I’ve enabled dev hub and downloaded the latest java. I’m just starting out so please excuse the lack of knowledge. Thanks
It might be installed. To check, open Visual Studio Code, then inside vscode open a new terminal, type sfdx and wait until it returns something. If it’s installed, it will return some details.
Hi David,
I’ve been working through Apex Academy over the past month and I’m about to finish #3 – I’ve learnt so much and it’s set me up to be confident enough to transition into a Development role!
You’re a busy guy, but do you have any plans to do Apex Academy #4 this year? I don’t what I’ll do to fill the void after I finish #3!
Thanks for everything
Hello David,
I am enrolled in Apex Academy.
Can you share examples of how you project manage request in your organization around Salesforce. What do you ask the the project team for to make sure you have all the information you need. What do you provide to the team to make sure they understand what they are asking for?
Thank you
Jasmine
Hi I have problem with entering data which you prepared for clean new org in soql apex academy.
I’ve got an error
Line: 48, Column: 1
System.DmlException: Insert failed. First exception on row 222; first error: DUPLICATES_DETECTED, Use one of these records?: []
line 48 is just a line where a contacts are inserted.
Thanks in advance!
I am getting the same error too! I have also tried inserting code, block by block and executing one at a time, still its giving me the same error.
I ran into the same problem. I fixed it by deactivating Duplicate Rules in my org
Developer might be a leap for me starting from scratch, though I do have an IT background, and can use scripting tools such as PowerShell and REXX. Do you offer an admin level training path?
Hi David,
I am enjoying your class but am stuck on the DedupeReminder. I am getting the following error with nearly the same code you created (unless I am overlooking something). Any thoughts on what I am doing wrong?
DedupeCase1: execution of AfterInsert caused by: System.StringException: Invalid id: acc.Id Trigger.DedupeCase1: line 6, column 1
trigger DedupeCase1 on Account (after insert) {
for (Account acc : Trigger.new) {
Case c = new Case();
c.Subject = ‘Dedupe this account’;
c.OwnerId = ‘0051U000001EcGU’;
c.AccountId = ‘acc.Id’;
insert c;
}
}
Hi Nancy,
I think I see your issue:
c.AccountId = ‘acc.Id’;
No single quotes around acc.id, it’s a variable not free text. We put quotes around free text like the value of the subject.
Should be
c.AccountId = acc.Id;
Nancy, try acc.Id without the quote marks. What you are telling sales force to do is to put the text “acc.Id” as the account Id. Salesforce doesn’t like that.
c.AccountId = acc.Id;
write insert c; after the for each loop.
dont write dml queries inside the for each loop
David,
I cannot thank you enough for creating the APEX Academy! I’m going through the modules right now and all I can say is that it’s simply amazing. No one can explain the fundamental APEX concepts to a person with a non-technical background like you can!
One question. Now that development and support of MavensMate has been discontinued, what text editor would you recommend?
Thank you!
Hi David,
I have the same question. Looking forward to your answer.
Thanks.
A method is passed a list of generic sObjects as a parameter. What should the developer do to determine which object type(Account, Lead, or Contact, for example) to cast each subject?
A. Use a try-catch construct to cast the sObject into one of the three sObject types.
B. Use the getSObjectType method on each generic sObject to retrieve the sObject token.
C. Use the getSObjectName method on the sObject class to get the sObject name.
D. Use the first three characters of the sObject ID to determine the sObject type.
B.
hello david sir,
can we Update value using after insert trigger?NOTE:-its not a test process !!
can you briefly explain difference between After insert Trigger and After Update ?
Hi David & APEX Cadets, started Apex Academy and got some weird issue. When creating the HelloWorld trigger (I checked every single line of code), the trigger fires as soon as I click on on a dummy Lead. So no edit and save action before. It seems to happen only when using LEX, but on Classic it works as expected. Any idea? Doesn’t happen to the first homework (change Email on Contact) from David’s 14-weeks Dev curriculum.
Hi David, started Apex Academy and got some weird issue. When creating the HelloWorld trigger (I checked every single line of code), the trigger fires as soon as I click on on a dummy Lead. So no edit and save action before. It seems to happen only when using LEX, but on Classic it works as expected. Any idea? Doesn’t happen to the first homework (change Email on Contact) from your 14-weeks Dev curriculum. Thanks a lot!
Hi, I am Starting my career in salesforce and getting very confuse how to start and where should i start, please help me to get understand the salesforce.
If I spend one hour per day on the Apex Academy course, how long will it take me to complete it?
1 – 3 months.
Hi David, Thanks for this class; it’s incredible. Quick question, I looked into MavensMate today and it appears that it is no longer supported (it was yesterday when I looked).
Is it worth looking into VisualStudio or can I get by with the Developer Console for now. It will certainly increase my muscle memory.
Thanks in advance.
Dev console.
Hello!
You might be gettin this a lot—— you are awesome!
Long story short – need to find a job, keep the current job and spark some interest in myself to learn Salesforce.
I have been trying to just “find” the spark for over a month( I realized I don’t do well under the pressure of my current job. This was messing up my chances of finding the ‘spark’).
One fine day I decided enough is enough ( today 68 min ago). I decided I need to get a better job and be good at it ( if not the best :P).
I googled “ Salesforce tutorial” – found your website. Loved the way you articulated (it was fun!).
Ended up listening to your tutorial ( surprised myself by coding).
I found my “spark”…. (more like my zeal to learn!)
Thank you so much! I have a long way to go but I found what mattered- the drive and initiative to learn something completely new!!
hehehe thank you Tej =) I’m cheering for you!
Hello David,
I am writing in regards to the Apex academy(Pluralsight) and I have been tryng to reach you but with no luck.
I am stuck with Secret information trigger in which I am not able to create the child case even after following the same code as you mentioned in video. Can you please help me with that, following is the code in my org:
Please let me know if I did any mistake. I tested to create a case with description field with secret keyword but not able to create the child case,
trigger ChecKSecretInformation on Case (after insert, before update) {
String childCaseSubject = ‘WARNING: Parent Case may contain sensitive info’;
// Step 1 create a colection to store the secret keywords
Set secretKeywords = new Set();
secretKeywords.add(‘Credit card’);
secretKeywords.add(‘SSN’);
secretKeywords.add(‘Social Security’);
secretKeywords.add(‘Passport’);
secretKeywords.add(‘Bodyweight’);
// STep2. Check if our case has Secret keywords
List caseWithSecretInfo = new List();
for(Case myCase: trigger.new){
if(myCase.Subject != childCaseSubject){
for(String keyword: secretKeywords){
if(myCase.Description != null && myCase.Description.containsIgnoreCase(keyword)){
caseWithSecretInfo.add(myCase);
System.debug(‘Case’ + myCase.Id + ‘include secret keyword’ + keyword);
break;
}
}
}
}
List casesToCreate = new List();
for(Case caseWithSecretInfo: caseWithSecretInfo){
Case childCase = new Case();
childCase.Subject= childCaseSubject;
childCase.Priority=’High’;
childCase.IsEscalated=True;
childCase.Description=’At least one of the following keywords were found + secretKeywords’;
casesToCreate.add(childCase);
}
insert casesToCreate;
}
Thanks
// Step 1 create a colection to store the secret keywords
Set secretKeywords = new Set();
Should instead read:
Set keywords = new Set();
Hi David,
I’ve finally have gotten around to taking your classes on Plural Sight. So far so good, but I’m stuck on the check secret info trigger. I wrote everything down the way you presented it.
But when I save I get :
Result: [OPERATION FAILED]: triggers/CheckSecretInformation.trigger: Illegal assignment from List to List (Line: 12, Column: 13)
Here is the code block:
trigger CheckSecretInformation on Case (after insert, before update) {
// Step 1: Create a collection containing each of our secret keywords
set secretKeywords = new Set();
secretKeywords.add(‘Credit Card’);
secretKeywords.add(‘Social Security’);
secretKeywords.add(‘SSN’);
secretKeywords.add(‘Passport’);
secretKeywords.add(‘Bodyweight’);
// Step 2: Check to see if our case contains any of the secret keywords
List casesWithSecretInfo = new List();
for (Case myCase : Trigger.new) {
for (String keyword : secretKeywords) {
if (myCase.Description != null && myCase.Description.containsIgnoreCase(keyword)) {
casesWithSecretInfo.add(myCase);
System.debug(‘Case’ + myCase.Id + ‘include secret keyword’ + keyword);
break;
}
}
}
// Step 3: if our case contains a secret keyword, create a child case
for (Case casesWithSecretInfo : casesWithSecretInfo) {
Case childCase = new Case();
childCase.subject = ‘Warning: Parent case may contain secret info’;
childCase.ParentId = casesWithSecretInfo.Id;
childCase.IsEscalated = true;
childCase.Priority = ‘High’;
childCase.Description = ‘At least one of the following keywords were found’ + secretKeywords;
insert childCase;
}
}
Any feedback would be greatly appreciated.
Thank you,
Orquidea
Not gonna lie this one stumps me LOL. List to list???
Hope someone else can help!!
I am newbie and not good at coding but can you try list casesWithSecretinfo = new list(); the constructor might need datatype or subject
List casesWithSecretInfo = new List();
This should be changed to List casesWithSecretInfo = new List();
The line List casesWithSecretInfo = new List();
should be…
List casesWithSecretInfo = new List();
The assignment exception is thrown because you haven’t declared the data (sObject) type the List will store.
In addition, I would look at the following line too – for (Case casesWithSecretInfo: casesWithSecretInfo) { […] }
should be…
for (Case someOtherVariableName: casesWithSecretInfo) { […] }
… to ensure that you are not declaring two variables with the same name.
Hi David,
I am learning a lot about triggers from your tutorials from Apex Academy. I have a question. Apex class is a code that tests other code, in our case apex triggers. The Hello World trigger, where before updating the lead, the lead’s first and last name is updated to what we have specified in trigger. When we write test class for the same – lead is created and lead is updated with company name, this is the test class with 100% coverage of the Hello World trigger. How come the test class does not check the value of first and last name of the lead after it is updated? Because manually we check first and last name after the lead is updated in Salesforce UI, but it is never part of test class and this test class has 100% coverage. What is that I am missing here?
We cover that, keep on continue with the tutorials =)
Hi David,
What other coding editor will you recommend since mavensMate is no longer available?
Dev console
David,
I can see list of Apex Academy courses. Sorry if this is dumb question – I am trying to learn how to code in Salesforce with Apex and Visuaforce. Out of 4 courses below – can I start with Course #1 or Course #2 directly, or do I have to start in order specified below?
Course #0: Knowing When to Code in Salesforce
Course #1: Absolute Beginner’s Guide to Coding in Salesforce
Course #2: Fundamental Salesforce Coding Techniques
Course #3: The Power of SOQL
You can start with 0 or 1 =) If 0 isn’t interesting for you, skip!
David,
I am new to SF, never coded before but works in IT since 5 years. I absolutely do not know coding ex. Java or C++, but eager to learn. I am learning Java from the Head First Java book but still its baby steps. If I subscribe to apex academy – do I have to fully know Java or Javascript or HTML to master apex and visualforce?
0 experience/knowledge required.
Hi David
I have taken the Beginner’s guide to Coding in Salesforce and enjoyed it thoroughly! I am now on Fundamental Salesforce Coding Technics. I am stuck on one of the sections – Variable Practice Part 2. For the life of me I am getting an error message which I cannot seem to resolve =
Result: [OPERATION FAILED]: triggers/WarrantySummary.trigger: Expression cannot be assigned (Line: 11, Column: 34)
Below is the code and I checked it line by line. Even deleted the trigger and started again. Is there something obvious to you that I have missed?
======= code below =====
trigger WarrantySummary on Case (before insert) {
for (Case myCase : Trigger.new) {
Date purchaseDate = myCase.Product_Purchase_Date__c;
Datetime createdDate = myCase.CreatedDate;
Integer warrantyDays = mycase.Product_Total_Warranty_Days__c.intValue();
Decimal warrantyPercentage = purchaseDate.daysBetween(Date.today()) / warrantyDays;
Boolean hasExtendedWarranty = myCase.Product_Has_Extended_Warranty__c;
//Populate summary field
myCase.Warranty_Summary__c = ‘Product purchased on ‘ + purchaseDate + ‘ ‘
+ ‘and case created on ‘ + createdDate + ‘.\n’
+ ‘Warranty is for ‘ + warrantyDays +’ ‘
+ ‘and is’ + warrantyPercentage = ‘% through its warranty period.\n’
+ ‘Extended warranty: ‘ + hasExtendedWarranty + ‘\n’
+ ‘Have a nice day!’;
}
/*
Product purchased on <> and
case created on <>.
Warranty is for <> and is <> through its warranty
period. Extended warranty: <>
Have a nice day!
*/
}
===== code end =====
Any help is appreciated! :)
Try removing lines of code one by one until you find the “broken” one!
Hello David!!
I am writing you to kindly ask you if you know about a tutorial or a site which explains (in a really easy way) how to create a webservice which integrates Salesforce with another CRM, like Siebel. The idea is to create something that allows to create and/or update accounts from Salesforce to Siebel.
Thanks for your attention
Best Regards
Alcides
David,
I viewed the first module of Apex Academy this morning and I am excited to complete the course.
However, it is not clear to me what the prerequisites are. It seems you are saying that I would need experience in Salesforce Admin. You make reference to Trailhead. But, there such a large amount of info and so many directions to go within Trailhead it is bewildering.
Would you please explain what the prerequsites are so that even I can understand?
Thanks.
Hi David,
I’ve just subscribed to Apex Academy. I’m just curious as to when the launch dates of new courses is set to be? Cheers
Hello David,
I am learning Apex through Apex Academy. I copy this code from your video tutorial on Pluralsight. FYI I am new to Apex.
Here is the code that I copied
trigger OppPriceCompetitor on Opportunity (before insert, before update)
{
for(Opportunity opp : Trigger.new)
{
//Create the list to store all the prices
List CompetitorPrices = new List();
CompetitorPrices.add(opp.Competitor_1_Price__c);
CompetitorPrices.add(opp.Competitor_2_Price__c);
CompetitorPrices.add(opp.Competitor_3_Price__c);
//Create the list to store all the Competiotors
List Competitor = new List();
Competitor.add(opp.Competitor_1__c);
Competitor.add(opp.Competitor_2__c);
Competitor.add(opp.Competitor_3__c);
// Loop through all of our prices find the lowest one
Decimal lowestPrice;
Integer lowestPricePosition;
for(Integer i = 1; i<=CompetitorPrices.size(); i++)
{
Decimal currentPrice = CompetitorPrices.get(i);
if(lowestPrice == null || currentPrice < lowestPrice)
{
lowestPrice= currentPrice;
lowestPricePosition = i;
}
}
//populate the leading competitor field with the competitor maching the lowest price position
opp.Leading_Competitor__c = Competitor.get(lowestPricePosition);
}
//Create the list to store all the prices
// Loop through all of our prices find the lowest one
// //Note the list position of our lowest price
}
And I am getting this error message
Error: Invalid Data.
Review all error messages below to correct your data.
Apex trigger OppPriceCompetitor caused an unexpected exception, contact your administrator: OppPriceCompetitor: execution of BeforeInsert caused by: System.ListException: List index out of bounds: 3: Trigger.OppPriceCompetitor: line 22, column 1
Please help me !!
You gotta debug this one the hard way!
The Problem is with your for loop.
Change following
for(Integer i = 1; i<=CompetitorPrices.size(); i++)
to
for(Integer i = 0; i<CompetitorPrices.size(); i++)
and give a shot. All the Best.
Hi David,
I have been coding with apex for months now exclusively to control data internally, however there is a tremendous need in my company for integration services and we dont want to go to a vendor to do so. I am currently enrolled in the dev502 course integration with force.com but it seems (after the first day of class) that this course assumes a lot and i am completely new to webservices. It also contains a lot of exercises that focus on using java or c# which blows my mind since i was under the assumption salesforce would want to promote apex and i am not familiar with java or c#. So i am already thinking this course was a waste of time and money. The trailhead modules also assume a lot and do not get into the neddie gritty. The developer guide might as well be written in
hieroglyphics. The pluarsight video with Richard also glosses over the basics and isnt helpful at all for absolute beginners new to coding and new to the concepts of webservices. i need a lot of hand holding and comprehensive step by step instructions. HELP!!!!
I hear ya, it’s a tough topic! I don’t have any good answers for you now or in the short term, but I hope to help here someday!
In the meantime, you gotta learn the hard way.
Hey David, I am in the process of the Apex Academy Absolute Beginners Guide to Coding. In that video you use MavensMate which I have used before when trying to learn code a couple of years ago. I was wondering since it is no longer supported is there another coding editor you now use? While testing my Apex Class in MavensMate, it no longer gives the breakdown of what the issue is, they only show you if you are 100% covered which doesn’t help me much :) Any advise on any others I should check into? Thanks so much
Dev console for now =) Then one day maybe the Force.com IDE!
when next series will relaese for apex academy?
Hey David. Thanks a lot for all these courses. But I request you to please make a video tutorials for salesforce integration with third party. I am really looking forward for this course. Your teaching style is just awesome. You explain things in depth. Please help people like me who are new to salesforce with some more courses. Best of luck for your future!
Thank you, noted!
Eagerly waiting for this “Course #5: Building End-to-End Salesforce Applications” from you David, this will give big boost lot of people to work in real job. Hope I will get to see this quick :).
Keep this good work for all us.
Cheers mate.
Hi David,
I have a query on the command button.
Is that the ‘action’ event n the command button work as asynchronous or synchronous?
When I tried, the page has been reloaded and the action performed as expected. Doesn’t AJAX reload the page right?
could you please provide me an insight on this ?
Thanks,
Anil
It’s synchronous, you probably need a rerender somewhere if you’re using VF. GOOD LUCK!
Thank You, David.
ActionFunction’s action method also works as synchronous right?
I am basically a java developer, Few days back I have started the salesforce Journey using your PluralSight videos. Now, I have a clear understanding of the triggers and workflows. Visual force action calls are a bit confusing for me with respect to sync and async perspective, due to the Spring – Java web development knowledge.
I strongly believe that you can help me to sort out this concept issue.
Thanks,
Anil
Yup, synchronous!
IMO start learning Lightning, VIsualforce is dying!
@David, Can we expect some new Apex Academy courses anytime soon.
Hi david, you are an inspiration for thousands of aspiring salesforce developers like me.I am a newbie to salesforce. But, I want to tell you I am hoping to be a salesforce developer by this date next year. I’ll do everything in my power to achieve this goal
Thank you Harsha, I believe in ya!!!
I wish we get few more Apex Academy courses this year..
^_^_^_^_^_^_^_^_^
Agree. I think this material it’s not that much…
Hope I can have more for ya in the future!!!
Hello David,
The http://mavensmate.com/ website seems to closed now, they made it as plugin to visual code. I tried doing it and failed.
But then I downloaded the desktop version of Mavensmate from the website : https://github.com/joeferraro/MavensMate-Desktop/releases/tag/v0.0.11-beta.6
And installed sublime text seperately .
Connected my MavensMate to my salesforce org and created project and launched the sublime text within desktop app.
One more thing I notice in the Sublime- >MavensMate -> Settings , it is different User settings from one in your videos.
Thanks for great video. I watching and learning alot from it.
Dont know if I missed something in your video, but this is how it
Such a shame! You’ll want to use dev console for now =)
Hi David,
I’ve been going through the Apex Academy courses and they’re great! Probably the most useful training I’ve had in my burgeoning development career. Just want to say a big, ‘Thank You!’ Really looking forward to future courses you create.
Sweeeeet! Thank you Josh!!!
Hey David,
I recently started the Apex Live Academy on Pluralsight. The course is excellent so far. The only problem I am facing is with practicing it in Mavensmate. I have been able to successfully install Mavensmate but it is behaving differently for me; eg, when I run my test class, it gives me a success message but doesn’t give me test coverage results. I was wondering what to do since I don’t want to discontinue the course. Please advise. Thanks in advance!
Switch to dev console, MavensMate is dying unfortunatel!!
hi how should i join to live class
Hi David,
One absolute basic question. I just started with your course and created HelloWorld Before update trigger on lead in a brand new dev instance and have copied the trigger code exactly as you have. But the trigger is firing when I create a new lead. What could be wrong and how do I go about debugging this issue?
Many thanks, RC
Very strange! Make sure you’re using a brand new org when doing any of the exercises
Yes David, I created a brand new fresh DEV edition instance and have copied your code word to word, comma to comma. What could be wrong? I don’t want to fall at the very first trigger I ever tried, so please let me know if there is any way to debug.
Thanks in advance for your time!
Best regards,
RC
Try deleting the trigger and seeing what happens when you create a lead!
I have experienced the same thing. and also the look and feel of the setup is changed now compared to the one in video. But yes, it does update name to Hello World when i create a new lead.
Thanks for sharing! Very strange!! I wouldn’t worry too much about it for now. I’m going to test this out on my own when I have some time!!
I also faced this issue last month but when i tried doing same today, it worked fine. So is it something related to the critical updates we get in our org?
Hey David,
I switched from Linux to windows. I wanted to download Mavensamet again. but for some reason, I wasn’t able to install it. I am sure you must be aware of this issue.I switched to Visual Studio Code. I will start apex academy course again from scratch. As all of your lectures are in Mavensmate. How’s it’s going to work out? Please advise.
I say use the dev console or the Force.com IDE for now. The core concepts are all the same regardless of which code editor you use, so you should be fine!
Hello,
I am taking Salesforce fundamental coding techniques course on plural sight. So far it is the best Apex course I have taken. I am learning a lot from this course.
I am practicing along with the course. I am getting few errors messages when I test my trigger. If I post those error messages would you be able to help me. I am new to apex programming so I am having a hard time to understand why I am getting those error messages.
Regards
Bareera
Thank you Bareera!
You are welcome to ask your questions here =)
Don’t forget to remove all existing code and/or start a brand new dev org before trying any of the exercises!
David,
I practice one of the trigger “Check Secret Info’ On Case Object in new developer org. It doesn’t give me any error but it doesn’t create child case.Again I am new to Apex programming so I dnt understand Why this trigger is not working.
Here is the code for that trigger
//It has the list of keywords and it checks the cases with those keywords and create a child case.
trigger CheckSecretInfo On Case (after insert, before update)
{
String childCaseSubject = ‘Warning: Parent Case may contain secret info’;
//Step1: Create a collection of our secret keyeords
Set Keywords = new Set();
Keywords.add(‘CreditCard’);
Keywords.add(‘Social Security’);
Keywords.add(‘SSN’);
Keywords.add(‘Passport’);
//Step2 : Check to see if any of our case contains secret keywords
List casesWithSecretInfo = new List();
for(Case c : Trigger.new)
{
if(c.Subject != childCaseSubject)
{
for(String k : Keywords)
{
if(c.Description!= null && c.Description.containsIgnoreCase(k))
{
casesWithSecretInfo.add(c);
System.debug(‘Case’ + c.Id + ‘Include secret Keyword ‘ +Keywords);
break;
}
}
}
}
//Step3: IF our case contains a secret keyword, Create a child case
List casesToCreate = new List();
for(Case Sinfo : casesWithSecretInfo)
{
Case childCase = new Case();
childCase.subject = childCaseSubject;
childCase.ParentId = Sinfo.Id;
childCase.IsEscalated = true;
childCase.Priority = ‘High’;
childCase.Description = ‘Atleast one of the following keywords are found’ + Keywords;
casesToCreate.add(childCase);
}
insert casesToCreate;
}
Try using more System.debug() to get to the bottom of this one =)
(Also if you’re in Lightning, sometimes there are caching issues so newer records don’t show up immediately!)
Bareera here is your updated code:
trigger CaseChild on Case (after insert, before update)
{
String childCaseSubject = ‘Warning: Parent Case may contain secret info’;
//step1: Create a collection of our secret keywords
Set Keywords = new Set();
Keywords.add(‘Credit Card’);
Keywords.add(‘Social Security’);
Keywords.add(‘SSN’);
Keywords.add(‘Passport’);
//Step2: Check to see if any of our case contains secret keywords
List casesWithSecretInfo = new List();
for(Case c : Trigger.new)
{
if(c.Subject != childCaseSubject)
{
for(String k : Keywords)
{
if(c.Description != null && c.Description.containsIgnoreCase(k))
{
casesWithSecretInfo.add(c);
// System.debug(‘Case’);
break;
}
}
}
}
//Step3: IF our case contains a secret keyword, Create a child case
List casesToCreate = new List();
for(Case Sinfo : casesWithSecretInfo)
{
Case childCase = new Case();
childCase.subject = childCaseSubject;
childCase.ParentId = Sinfo.Id;
childCase.IsEscalated = true;
childCase.Priority = ‘High’;
childCase.Description = ‘Atleast one of the following keywords are found’+ Keywords;
casesToCreate.add(childCase);
}
insert casesToCreate;
}
I’ve started learning java a year ago because I read somewhere that was the language to know to learn apex. After feeling comfortable with the core classes in java I was having trouble finding a apex ciricumlum that would easily help me transition from Java to apex. Until I found you! I’m in the middle of your second course on plural sight and you are great at explaining the fundamentals and made it so easy for me to transfer what I learned and fit it into apex. I feel encouraged and energized after finishing each module and feel I’m on the right path of becoming a admin/developer duel threat. No more project hold ups at my job because we don’t have the available developer resources to contribute. I can be that guy. And the best thing is I don’t have to invest $4,500 in the salesforce university apex courses. Please continue to produce these videos especially on integration. That’s essentially what every org needs. Thanks again David!
Thank you Cristian!!
Just finished your first three Apex Academy courses and I HAVE to say Thank You! I’ve been trying to learn to code for a little while now but even with multiple written tutorials, trailhead, and practice doing ‘reverse engineering’ of prebuilt code, something just never fully clicked. Finally after watching your videos, it makes sense to me!! Your courses are not only super easy to follow and expertly explained, but you also do the best job at making them engaging – they’re like a great book you can’t put down! I’m so excited to have this tool of coding under my belt. Can’t wait to put it into practice as well as tell employers now that, YES, I know basic coding; I can be an admin hero AND make their dream customizations a reality. ;) …Also can’t wait for your next courses to come out! Thank you again.
Aawwww thank you Naomi!!!
HI David,
I’m currently taking the Apex Academy course on Pluralsight and love it!
The amount of detail you explain is very helpful and I feel like I am learning a lot!!!
I have a quick question and wonder if a Trigger is a good fit for this requirement:
We have a custom object developed for “Client Visits” used with the Salesforce1 mobile app on Android.
A quick-action button performs “Check-in” = Date/Time field updated with NOW()
Another workflow updates a checkbox named “In Progress” as true.
My employer would like to start capturing the GPS data (Latitude-Longitude) when a Rep checks-in.
I wonder if it makes sense to fire a Trigger when the “In Progress” checkbox ISCHANGED to True,
and run a JavaScript function to capture the GPS data?
I have searched quite a bit on the subject and can’t find anything like what I’m proposing.
So, I’m beginning to believe a trigger is not the right approach.
Any advice you can offer would be much appreciated.
Thank you David and thank you for all you do!
Great question – not too familiar with GPS stuff though so can’t give a good answer here sorry!! I am skeptical of triggers for this one though as you also suspect
Have you utilized Visual Studio Code Extension? I have started the Apex Academy and I am at the part to download MavensMate, but if you go to mavensmate.com you will notice a letter from Joe saying that he is ending its development. He references to use the Visual Studio Code Extension. Is this an okay substitute for the course?
Go dev console for now.
I am working on the test class portion and I am not sure I am doing it correctly in the dev console. I wrote out the test class and hit the ‘Run Test’ button, but how do I see the code that failed like it displays in MavensMate?
Try this!
https://developer.salesforce.com/forums/?id=906F0000000BUaeIAG
Hi David,
I am new to coding and I am trying to solve the challenge on Opportunity price wars, I don’t seem to get the ‘if’ condition right for the first challenge which is to update the opportunity based on the highest price.
I wrote it as Highest price not equal to 0, but technically all the prices we input are greater than zero, so I cannot expect it to return one value. I see where the mistake is, but cannot find the solution. Could you please help me?
Decimal HighestPrice;
Integer HighestCompetitor;
for(integer i=0; i HighestPrice){
HighestPrice = CompetitorPrices.get(i);
HighestCompetitor = i;
Don’t give up =) Keep at it! It is a difficult challenge!
Hello,
Thank you for these amazing courses. I am thoroughly enjoying them and my brain is nearly maxed out, but I love it. Question, do you post the solutions to the challenges so that I can check my work? Having trouble with the Secret Information Challenge specifically.
Thank you!
Bethani
Correction, I was able to get the challenge working, YAY!! But I noticed this updates on any edit to the case and want to optimize it to only run when the description is modified. I realize this may be more advanced than where I am today with coding, but happy that these courses have my brain working in such a way.
NICE!!! Congrats!!!
Check out this one!
https://www.sfdc99.com/2014/02/25/comparing-old-and-new-values-in-a-trigger/
Thank you!
Moooost solutions are there in the end =) Sometimes I like to leave it a mystery though!
As long as it works, you’re good!!
David,
I can see there are videos for Apex and Visualforce on SFDC99 which are free. The ApexAcademy on Pluralsight.com has 3 salesforce videos put by you and they are paid. What is the difference between vidoes on SFDC 99 and ApexAcademy. I believe ApexAcademy has more videos than SFDC99, is this true?
The Apex Academy vids go deep in depth and are meant to be a one stop shop to learn. =)
I would say start with the free ones and then switch to Apex Academy if you’re interested in learning further!
Trying to follow your APEX Beginners Guide course but it looks like Mavensmate is no longer available, what should I do?
Switch to dev console for now!
I work with MavensMate at work so I definitely know it can work, but honestly not worth it if it’s giving ya troubles!
@david I am getting this error on my very first few lines
Error Error: Compile Error: Unrecognized symbol ‘f’, which is not a valid Apex identifier. at line 4 column 11
I have checked that I have a direct copy from your example
Error Error: Compile Error: Unrecognized symbol ‘f’, which is not a valid Apex identifier. at line 4 column 11
thanks
derek
Double check if it’s an F =)
To anyone else who has the same problem, I was able to get it to work by changing the variable ‘1’ to ‘lead1’. eg:
trigger HelloWorld on Lead (before update) {
for (Lead lead1 : Trigger.new) {
lead1.FirstName = ‘Hello’;
lead1.LastName = ‘World’;
}
}
David, any feedback on why this worked and ‘1.FirstName’ did not?
Hi Aaron,
I’m still learning myself, I think the variable name was supposed to be “L” in lower case, when reading it looks like a number one. I would use numbers at the end of the variable name just like you did if I need to use numbers at all. Cheers!
I am getting the same exact error. Even spun up a new developer org think it was my org – nope same error. Removed the first name line and only had last name and it came up with same error but instead of ‘f’ it was ‘l’
Here is my code copied from my developer org as I wrote it.
trigger HelloWorld on Lead (before update) {
for(Lead 1: Trigger.new) {
1.FirstName = ‘Hello’;
1.LastName= ‘World’;
}
}
The “1” is actually an “i”. Number vs letter!
I gotta make that more clear in the vid! Sorry!
I tried the I and still it isn’t working. I am so new to this please tell me what I am doing wrong. This is my first attempt at creating a trigger.
trigger HelloWorld on Lead (before update) {
for (Lead 1: Trigger.new) {
1.FirstName = ‘Hello’;
1.LastName= ‘World’;
}
}
Use the letter “l” instead of the number “1” =)
It’s Lead.l not lead.1
I got the same error and was using 1. instead of lower case l
I changed the 1 to an l and the code worked.
Yup, had the same issue here – as soon as I realized it was an “L” instead of an “1” it all worked great! Maybe update the video if possible, the characters look identical in the video.
Congrats on the golden hoodie by the way!
The problem is the name of the Lead list. It’s a lowercase L, not a number 1.
Hi David!
I have just been watching your course you did with Don. Knowing when to Code….
Great story!
Sorry, but I think you guys overlooked an option. The Flow you create, should be run from cases, updating the account accordingly. (You might run it from account as well)
Still, declarative coding, will never fire upon delete, so if somebody deletes an open case, Account will still show an open one.
Also you should extend the Flow, to update both Accounts, in case a Case gets re-parented….
You clearly know Salesforce very well – kudos! =)
I wish we mentioned that solution because you’re not the first person to talk to me about it! We had it in our outline but chose the alternate solution since it felt more substantially different than the process builder one.
Alas, as you’ve noted, both solutions would fail for different reasons. I guess that’s Salesforce for us =)
Hi David
I am not able to install MavensMate for Windows 8 , I followed all the steps provided by you. In package control I don’t see Mavensmate name in install package.
Steps followed till this point
1. Installed sublime text 3
2. Installing package control (copied code in sublime text using Control +`)
3. restarted the sublime text.
4. Couldn’t find the Mavensmate in install package.
Pl help.
Hello Praveen,
Before you paste the MavensMate Package Control Code on to Sublime3, You have to install the MavensMate Desktop from MavensMate.com(But from now the site is shut down).
So,I recommend you to use DevConsole..
Cheers,
Aravind Babu
Hi. David!! I just wanted to say I have finished all your 3 courses and learnt immensely. I do look at them every now and then even though I am completely done with it to get a better hang of it. I want to know when will your Course #4 and Course #5 will be released. Really can’t wait for it. I love your fun way of teaching which keeps mt attention focussed. Thanks. I’m a big fan of yours. Thanks of inspiring millions of Developers.
Thank you Bala!
This post should help answer your questions!
https://www.sfdc99.com/2017/04/29/apex-academy-4-mailbag/
FOR REAL David you are amazing!
Lol thanks!
Mistyped got* a job as well !
Hi David,
It was nice to read all your post. I am also a certified SF admin and how a job as well. Now I’m thinking to pursue another certification. I have never coded before so was wondering what should I target next.
Would really appreciate your opinion !
Check out the fourth post here!
https://www.sfdc99.com/ultimate-salesforce-certifications-guide/
BTW congrats on landing the job!!
Thank you !
After reading your post I am really excited and motivated to get my another certification.
I have a quick question about first 5 certifications. Should I follow step by step 5 of them ?
or it could be random ?
Step by step!
Hi David,
I was with Siebel CRM for past 4 years and recently its been 3 months i have moved to Salesforce and i find it very interesting. I am trying for certifications in June fingers crossed. I have been following the Apex academy its pretty awesome!! The way you teach and explain is very easy to understand and i loved it. I am so keen to learn Salesforce and i ll be waiting to go home just to go through Apex academy. Thanks a lot for teaching.
Thank you Ranjana!!
I am learning lot from you David. Thank you.
Quick Q) When is Course #4 & 5 are coming?
After I take the TA cert!
https://www.sfdc99.com/2017/04/29/apex-academy-4-mailbag/
Hello #DavidLiu i’m a getting started student in salesforce and i’m looking my future in salesforce but i really didn’t know so much about salesforce and don’t know whether i choose development or support field.. i’m totally confused could you help me to sort out my problems..please
I will have a post on this soon!
HI David
My journey just started today with Apex Academy. I have been learning the fundamental concepts about SFDC these two weeks and now, the real journey kicks off.
I am a Full Stack PHP developer (PHP and Rbuy) with four years experience. Also know Java a little bit. Hopefully, I’ll be successful in my path to become a SF developer. Good job David and keep it up.
Thank you Vahob enjoy the journey!
Support! I’m also eagerly awaiting the arrival of AA #4 through infinity.
@David, I’m sure you’ve been told this before, but it bears repeating: the Apex Academy is an absolute masterpiece.
Einstein roughly said, “Everything should be made as simple as possible, but no simpler.” On this alone, the Apex Academy would make Einstein proud. The streamlined teaching and replay value are amazing… but when you realize how quickly the knowledge converts into a large salary, you’ve arrived at the heart of a lot about what’s awesome in the Academy.
Basically, we love you soooooo much so please make Apex Academy #4 because we are literally starving to death (lol) for lack of more Apex Academy. So much misery and suffering, and no good very bad days, because of our limited access to the genius of the Academy. You could fairly state WITHOUT SARCASM that all the pain in the whole wide world is because there isn’t a #4 yet and we just need our hero to give us the tools to save ourselves from the oppressive nature of the universe.
Please, we love you and you’re awesome, please… help us… before we starve… to death…. gargheblelhehhhhh
LOL! Wow! Thank you Nick! Hahaha.
I’m going to write an entire post on this comment and I think you’ll like it! It’ll drop today!
EDIT: here it is!
https://www.sfdc99.com/2017/04/29/apex-academy-4-mailbag/
@David, When is the Apex Academy 4 course coming ? It’s been long.. Eagerly waiting for it.
Hahaha good question, I’ve been studying hard for certs and the review board recently, Apex Academy resumes immediately afterwards!