+ Start a Discussion
Julian KeefeJulian Keefe 
Error Message:
Challenge Not yet complete... here's what's wrong: 
The AccountTab Visualforce page does not include one or both of the following: the apex:slds tag in the page, or the slds-table value in the table.

Hello all. I am working on the new superbadge and getting stuck on Challenge 3 . I have tried several solutions but cannot get the data to display in table format. Here is my code below, my main issue is where to place the table class in realtion to the pageBlockTable.

<apex:page standardStylesheets="false" standardController="Account" recordSetVar="accounts" tabStyle="account" applyBodyTag="false">
    <apex:slds >
        <div class="slds-scope">
                    <table class="slds-table"> 
                    <apex:pageBlockTable  value="{!accounts}" var="a">
                        <apex:column headerValue="{!$ObjectType.Account.Fields.Name.Label}">
                            <apex:outputLink value="{!URLFOR($Action.Account.View, a.id)}">{!a.name}</apex:outputLink>

Best Answer chosen by Julian Keefe
David HamburgDavid Hamburg

<apex:page standardStylesheets="false" standardController="Account" recordSetVar="accounts" tabStyle="account">
<apex:slds />

    <div class="slds-scope">
        <apex:pageBlock >
            <apex:pageBlockTable value="{!accounts}" var="a"  styleClass="slds-table" >
                <apex:column headerValue="{!$ObjectType.Account.Fields.Name.Label}">
                    <apex:outputLink value="{!URLFOR($Action.Account.View, a.id)}">{!a.name}</apex:outputLink>

rima khanrima khan 
I registered with trailhead.
I’m an SDR looking to expand my Salesforce skill set. Let’s pretend I have none. Particularly looking for the basics around reporting, and any other trails that may be beneficial to spend some time with.
My goal is to have a competent understanding of SF to build my sales as I enter a closing role and the relevant tools in SF that will help me gain an advantage.
Thanks in advance!
Best Answer chosen by rima khan
manasa udupimanasa udupi
Hi Rima,

Below are few trailhead links, hope it helps:)

Tiago Armando CoelhoTiago Armando Coelho 
Custom\ Standard Lightning component for Lookup fields?
Best Answer chosen by Tiago Armando Coelho
HI Tiago ,
check here custom salesforce lookup lightning component :

Thanks , let us know if it helps you



 I have a visualforce page created with some fields and a button basically a command button. Now I want to navigate to another page on click of the button i.e x page has button, on click of which i want to load the browser with page y. How do i do that?



Thanks in Advance,


Best Answer chosen by Admin (Salesforce Developers) 

No I found the solution for this

U jus need to put  action='/apex/Y' in the commandButton attribute. It will work.


Thanks for your time

Vinay SalveVinay Salve 
Hi Team,

I am not able to import data for the SolarBot App, as I am getting the following error - Server Error - Sample Data Import Failed - Check log for errors, please find the snapshot attached
User-added image
Vinay Kumar Salve
Best Answer chosen by Vinay Salve
Vinay SalveVinay Salve
Issue solved
Jan Kopejtko 2Jan Kopejtko 2 
Hey, I have object A.

A has lookup to Account. All records on A have the same owner.

I need to change the owner of A records to the owner of the Account in lookup.

Example: John owns 10 records of object A. All of those records have lookup to an Account called McDonalds. Owner of the McDonalds record is user McDonald. I need to change ownership of John's records to the user in related Account (that might not only be McDonald, but others...).

I'm experiencing difficulties with my code:

List <TestObj__c> list1 = New List<TestObj__c>();
list1 = [SELECT id, NAME From TestObj__c WHERE (OwnerId = '0052o000009Stq8')];
for(TestObj__c a :list1) {
   /* variable a;
   /* variable a = [Select AccountOwner from Account where (TestObj__c.lookupToAccount equals AccountId];
    /* a.Owner = a;

The for look works, but I don't know what to put inside, because it gives me errors, so I just deleted it and put something vague inside and commented it. How do I do this?
Best Answer chosen by Jan Kopejtko 2
Anthony McDougaldAnthony McDougald
Good Evening Jan,
Hope that your day is off to an amazing start. The code below will query all object A records where the related Account record's owner is not the same (this is under the assumption that the record owner API name of object A is OwnerId). It will then loop through the results, change the record owner of object A to the record owner of the related Account record. It will add each record to another list and update all the records at once with DML so you follow best practices and don't hit any governor limits. Please test and report back when you get the chance. Hope this helps and may God bless you abundantly.
List <TestObj__c> list1 = [SELECT Id, Name, Account__r.OwnerId, OwnerId From TestObj__c WHERE OwnerId != Account__r.OwnerId];
List <TestObj__c> list2 = New List<TestObj__c>();
 for(TestObj__c a :list1){
	a.OwnerId = a.Account__r.OwnerId;
update list2;

Best Regards,
Anthony McDougald​​​​​​​ 
Charlotte CharlesCharlotte Charles 
Hi There,

I'm having a hard time trying to validate the challenge of the module:
Lightning Flow
(step 3) Guide Users Through Your Business Processes with Cloud Flow Designer 

I followed every direction of the challenge, three times, removing eveything in between so I start from scratch again, but no, I still get this error message upon challenge validation:
Challenge Not yet complete... here's what's wrong: 
Can't find the forceContent:fileUpload Lightning component in the 'New Lead' flow. Make sure the field’s unique name is 'Upload_File'
Thing is this field does exist in the right named flow, called by the properly named home page. I don't get what I did wrong.
Flow Lightning Component field Upload_File

Any idea?
Best Answer chosen by Charlotte Charles
Chris DuarteChris Duarte
Sorry for the trouble. We investigated and discovered the challenge checker is looking for the screen name to be Upload_Files rather than the lightning component field name. 

We will get this resolved in our next release. In the meantime, if you update the second screen name to Upload_Files you should be able to pass.

This knowledge article walks you through it:

Carrie Nunemaker 10Carrie Nunemaker 10 
I am completely new to Apex and could really use some help with what seems to be a simple task.  I have a formula on the contact, Persona_True__c, that returns a 1 if the custom field "persona" is populated and a 0 if it is blank.

I would like to have a roll-up summary that sums this field at the account level in a field called Related_Personas__c.  

Because we can't roll-up from contact to account I'm reading that this type of action needs to be a trigger, but I don't even know where to start.  Does anyone have any thoughts or expertise they can share to help me out? 
Best Answer chosen by Carrie Nunemaker 10
Anthony McDougaldAnthony McDougald
Good Evening Carrie,
Hope that your day is off to an amazing start. We've constructed a trigger to your specifications. Please test and report back if anything. Hope this helps and may God bless you abundantly.
trigger ContactSumTrigger on Contact (after delete, after insert, after undelete, after update) {

Contact[] cons;
    if (Trigger.isDelete){ 
    cons = Trigger.old;
    cons = Trigger.new;
Set<ID> acctIds = new Set<ID>();
for (Contact con : cons) {

Map<ID, Contact> contactsForAccounts = new Map<ID, Contact>([SELECT Id, AccountId, Persona_True__c FROM Contact WHERE AccountId IN :acctIds]);

Map<ID, Account> acctsToUpdate = new Map<ID, Account>([SELECT Id, Related_Personas__c FROM Account WHERE Id IN :acctIds]);

for (Account acct : acctsToUpdate.values()) {
Set<Id> conIds = new Set<Id>();
Decimal totalValue = 0;
for (Contact con : contactsForAccounts.values()) {
    if (con.AccountId == acct.Id && con.Persona_True__c != NULL) {
        totalValue += con.Persona_True__c; 
acct.Related_Personas__c = totalValue;
if(acctsToUpdate.values().size() > 0) {
    update acctsToUpdate.values();

Best Regards,
Anthony McDougald
Best Answer chosen by myseo article
myseo articlemyseo article
Successful Women in Business Need a Personal Brand (http://myseoarticle.com/successful-women-in-business-need-a-personal-brand/)

When you’re building a following, whether for a business or as an individual, you need to look the part. But personal branding is so much more than this. As a female, typically breaking through can be harder than for their male counterparts, so you need to do whatever it takes to get an edge.
Here are some ideas on how a woman can improve their personal brand.
Have An Elevator Pitch Ready
Having a one minute spiel that tells people what you do and why you do it is crucial for business success. But having a generic boring pitch that doesn’t raise eyebrows won’t get the desired traction. Frame your pitch in a way that is unique, powerful and shows what you are doing to make a difference for the recipient. How are you helping to eliminate their pain points?
Take Ownership of Your Success
For people to take you to celebrate your success, you need to celebrate it yourself. It’s easy to get caught up in the “head to the grindstone” mentality and simply work hard with no accolades. But taking time to celebrate your success is an important part of moving forward. Your achievements should be commended, and when you commend them, so will others.
Discuss What You’re Passionate About
Personal branding isn’t just talking about your specific work, but it should also involve your hobbies and passions. They are part of who you are and just as important when it comes to your brand. Celebrate your passions too and don’t be afraid to talk about them.
Style Your Wardrobe Accordingly
Portraying the right image is key to success but first, you need to define what that is. The best way is by reverse engineering the process. Decide who your target audience is, and what resonates with them, and then plan your style accordingly. A personal branding expert with specialties in fashion styling can assist greatly with this.
The work you put in comes out the other end tenfold, so it’s important to invest in your brand.

Matthew HofmannMatthew Hofmann 

I'm creating an Apex class that creates a Salesforce File record and associates it with a parent record. I'm having a problem creating the association (ContentDocumentLink) record.

Here is what I'm doing:
  • Create a ContentVersion record. This creates a ContentDocument record automatically if you leave the ContentVersion.ContentDocumentId field blank. (https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_contentdocument.htm - "To create a document, create a new version via the ContentVersion object without setting the ContentDocumentId. This automatically creates a parent document record.")
  • Insert ContentVersion record
  • DEBUG: Confirm ContentVersion.ContentDocumentId is set (Here is where the problem is because it is NULL; however if I SOQL query ContentVersion after the Apex completes, ContentVersion.ContentDocumentId is set and the corresponding ContentDocument record exists)
  • Create ContentDocumentLink record (commented out because it fails because ContentDocumentLink.ContentDocumentId is a required field)
  • Insert ContentDocumentLink record (commented out because it fails because ContentDocumentLink.ContentDocumentId is a required field)
Here is the code:
public class FileController {
    public static Id saveTheFile(Id parentId, String fileName, String base64Data, String contentType, Id contentDocumentId) { 
        base64Data = EncodingUtil.urlDecode(base64Data, 'UTF-8');
        ContentVersion cv = new ContentVersion();
        cv.ContentLocation = 'S';
        cv.ContentDocumentId = contentDocumentId;
        cv.VersionData = EncodingUtil.base64Decode(base64Data);
        cv.Title = fileName;
        cv.PathOnClient = filename;
        insert cv;
        //***This DEBUG statement must return an Id for the rest of the code to work***
        //ContentDocumentLink cdl = new ContentDocumentLink();
        //cdl.ContentDocumentId = cv.ContentDocumentId;
        //cdl.LinkedEntityId = parentId;
        //cdl.ShareType = 'I';
        //insert cdl;
        return cv.Id;

    public static Id saveTheFile(Id parentId, String fileName, String base64Data, String contentType) {         
        return saveTheFile(parentId, fileName, base64Data, contentType, NULL);

Does anyone know what I'm doing wrong, not considering, etc?
Appreciate any thoughts and input!
Best Answer chosen by Matthew Hofmann

Well the culprit in your code is the null value and way you are using it to assign the value to ContentDocumentLink.contentDocumentId.
You should query the content version object again to get the contentDocumentId (which is generated after the parent document is inserted by default because of you passing of null value).
Something like below :
ContentDocumentLink cdl = new ContentDocumentLink();
cdl.ContentDocumentId = [SELECT Id, ContentDocumentId FROM ContentVersion WHERE Id =: cv.Id].ContentDocumentId;
cdl.LinkedEntityId = '00590000000a6dP';
cdl.ShareType = 'V';
insert cdl;

As per the salesforce documentation lines higlighted by you, "To create a document, create a new version via the ContentVersion object without setting the ContentDocumentId. This automatically creates a parent document record." it does create the parent document record as expected, but the contentDocumentId is still null in above initialised object. Id doesn't get updated automatically to the object instance. Infact you will have to pull out the corresponding Id as done in the above snippet.

Let me know if this helps.