• WDCi Nat
  • NEWBIE
  • 20 Points
  • Member since 2017
  • Project Manager
  • WDCi

  • Chatter
    Feed
  • 0
    Best Answers
  • 2
    Likes Received
  • 0
    Likes Given
  • 6
    Questions
  • 14
    Replies
We have a code that prevents us from closing a project if there are still open activities.
The trouble is that it picks up the "Not Started" Status update on the Recurring Tasks Series, even when the series has ended (end date has passed).

The Status of the actual Recurring Series record can't be updated: 
Recurring Task Error

The code is: public static void checkIncompleteTask(List<amc__Project__c> newList, Map<Id, amc__Project__c> oldMap) {
        List<Task> taskList = [SELECT Id, WhatId FROM Task WHERE WhatId IN: newList AND Status != 'Completed'];


Can anyone assist in excluding Recurring Series records from this? It doesn't appear as a separate RT, and isn't a reportable activity in itself.

Cheers, Nat
 
Hi there

I'm getting an error message on this Trailhead Module and I don't know what I'm doing wrong.  I have been trying for a couple of days and can't work out what my error is.

Here is my Developer Console code:

PROPERTY DIALOG COMPONENT:
<aura:component implements="flexipage:availableForRecordHome,force:hasRecordId" access="global" >
    <aura:attribute name="picklistValues" type="Object" />
    <aura:attribute name="propertyRecord" type="Property__c" />
<force:recordData aura:id="forceRecord"
                recordId="{!v.recordId}"
                targetFields="{!v.propertyRecord}"
                fields="Id,Name,Beds__c,Baths__c,Price__c,Status__c"
                mode="EDIT" />
    <aura:handler name="init" value="{!this}" action="{!c.doInit}" />
<c:PickListValues sObjectName="Property__c" fieldName="Status__c" picklistValues="{!v.picklistValues}" />
    <lightning:input aura:id="propName" name="propName" label="Property Name" required="true" />
<lightning:input aura:id="propBeds" name="propBeds" label="Beds" />
<lightning:input aura:id="propBaths" name="propBaths" label="Baths" />
<lightning:input aura:id="propPrice" name="propPrice" label="Price" />
<lightning:select aura:id="propStatus" name="propStatus" label="Status">
        <aura:iteration items="{!v.picklistValues}" var="item">
    <option value="{!item}">{!item}</option>
</aura:iteration>
</lightning:select>
<lightning:button variant="neutral" label="Cancel" />
<lightning:button variant="brand" label="Submit" onclick="{!c.saveRecord}"/>
</aura:component>

PICKLIST COMPONENT:
<aura:component >
    <aura:attribute name="sObjectName" type="String" />
<aura:attribute name="fieldName" type="String" />
<aura:attribute name="picklistValues" type="Object" />
    <aura:handler name="init" value="{!this}" action="{!c.doInit}" />
</aura:component>

PICKLIST CONTROLLER:
public class PickListController {

@AuraEnabled        
public static List<String> getPickListValuesIntoList(String objectType, String selectedField){
    List<String> pickListValuesList = new List<String>();
    Schema.SObjectType convertToObj = Schema.getGlobalDescribe().get(objectType);
    Schema.DescribeSObjectResult res = convertToObj.getDescribe();
    Schema.DescribeFieldResult fieldResult = res.fields.getMap().get(selectedField).getDescribe();
    List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues();
    for( Schema.PicklistEntry pickListVal : ple){
        pickListValuesList.add(pickListVal.getLabel());
    }     
    return pickListValuesList;
}}

PICKLIST VALUES CONTROLLER:
({
    doInit : function(component) {
        var action = component.get("c.getPickListValuesIntoList");
        action.setParams({
            objectType: component.get("v.sObjectName"),
            selectedField: component.get("v.fieldName")
        });
        action.setCallback(this, function(response) {
            var list = response.getReturnValue();
            component.set("v.picklistValues", list);
        })
        $A.enqueueAction(action);
    }
})

PROPERTY DIALOG CONTROLLER:
({
    doInit : function(component, event, helper) {
        
    component.find("forceRecord").getNewRecord(
        "Property__c",
        null,
        false,
        $A.getCallback(function() {
            var rec = component.get("v.propertyRecord");
            var error = component.get("v.recordError");
            if (error || (rec === null)) {
                console.log("Error initializing record template: " + error);
                return;
            }
        })
    );},
    saveRecord : function(component, event, helper) {
var propBeds = parseInt(component.find('propBeds').get("v.value"), 10);
var propBaths = parseInt(component.find('propBaths').get("v.value"), 10);
var propPrice = parseInt(component.find('propPrice').get("v.value"), 10);

component.set("v.propertyRecord.Name", component.find('propName').get("v.value"));    
component.set("v.propertyRecord.Beds__c", propBeds);
component.set("v.propertyRecord.Baths__c", propBaths);
component.set("v.propertyRecord.Price__c", propPrice);
component.set("v.propertyRecord.Status__c", component.find('propStatus').get("v.value"));

var tempRec = component.find("forceRecord");
tempRec.saveRecord($A.getCallback(function(result) {
    console.log(result.state);
    var resultsToast = $A.get("e.force:showToast");
    if (result.state === "SUCCESS") {
        resultsToast.setParams({
            "title": "Saved",
            "message": "The record was saved."
        });
        resultsToast.fire();                
        var recId = result.recordId;
helper.navigateTo(component, recId);
    } else if (result.state === "ERROR") {
        console.log('Error: ' + JSON.stringify(result.error));
        resultsToast.setParams({
            "title": "Error",
            "message": "There was an error saving the record: " + JSON.stringify(result.error)
        });
        resultsToast.fire();
    } else {
        console.log('Unknown problem, state: ' + result.state + ', error: ' + JSON.stringify(result.error));
    }
}));}
})

PROPERTY DIALOG HELPER:
({
    navigateTo: function(component, recId) {
        var navEvt = $A.get("e.force:navigateToSObject");
        navEvt.setParams({
            "recordId": recId
        });
        navEvt.fire();
    }
})

And I'm getting this error message:
Uncaught Unknown controller action 'getPickListValuesIntoList'
Callback failed: serviceComponent://ui.flexipage.components.page.FlexipageControllerV2/ACTION$getPage

With this Stack Trace:
a.H.get()@https://curious-goat-22263-dev-ed.lightning.force.com/auraFW/javascript/cbZO21YQZI1hrYG6dKZGlw/aura_prod.js:288:176
Object.value [as get]()@https://curious-goat-22263-dev-ed.lightning.force.com/auraFW/javascript/cbZO21YQZI1hrYG6dKZGlw/aura_prod.js:720:228
doInit()@https://curious-goat-22263-dev-ed.lightning.force.com/one/components/c/PickListValues.js:10:32

Any help would be greatly appreciated.  I don't use Developer Console work in my role, but thought I'd learn and am just ripping my hair out!!

Cheers, Nat
Hey guys,

Please help me.  This is the 3rd Org I've set up because I keep having the same error every challenge.  I follow the same steps but it works in one org and not in another, so I don't know what the issue is.  But, this one I need help with...I've tried too many times!!

The Challenge on Create Initial Submission Actions requests
If you’ve navigated away from where you ended the previous step, enter Approval Processes in the Quick Find box, then click Discount Approval Process from the Inactive Approval Processes section.
From the Add New picklist in the Initial Submission Actions section, select Field Update and complete the field update details with these values:
FieldValueNameApproval Status Pending
Unique Name[this field auto-populates]
Field to UpdateApproval Status
Picklist Options: A specific valuePending
Click Save.
Next, create approval steps.
Click New Approval Step and complete the details of the first approval step:
FieldValueNameManager Approval
Unique Name[this field auto-populates]
DescriptionDiscount approver must approve discounts over 15%
Step Number1
Click Next.
Select the Enter this step if the following radio button, and choose criteria are met, else approve record then fill in these details:
FieldOperatorValueOpportunity: Discount Percentagegreater than15
Click Next, then complete the assigned approver information:
Select the Automatically assign using the user field selected earlier (Manager) radio button.
Deselect The approver’s delegate may also approve this request checkbox.
Click Save.
On the What Would You Like To Do Now? page, select No, I'll do this later, take me to the approval process detail page to review what I've just created.
Click Go!
In the Approval Steps section, click New Approval Step and complete the details of the second approval step:
FieldValueNameVP Approval
Unique Name[this field auto-populates]
DescriptionVP North American Sales must approve discounts over 40%
Step Number2
Click Next.
Select the Enter this step if the following radio button, and choose criteria are met, then fill in these details:
FieldOperatorValueOpportunity: Discount Percentagegreater than40
Click Next, then complete the assigned approver information:
FieldValueSelect ApproverAutomatically assign to approver(s)
UserAllison Wheeler
Approve or reject based on the FIRST responseselect
Approver’s delegate may also approve this requestdeselect
Reject BehaviorPerform all rejection actions for this step AND all final rejection actions (Final Rejection)
Click Save.
On the What Would You Like To Do Now? page, select No, I'll do this later, take me to the approval process detail page to review what I've just created.
Click Go!

So I followed those instructions and created this:
Org

There's too many screenshots to attach, so let me break it down:
1: Approval Status ending - specific value = Pending
2: Manager Approval:
- Set to "Criteria are met, else approve if Discount Percentage greater than 15
- Automatically assign to Manager
3: VP Approval:
- Set to "Enter this step if the following criteria are met": Discount Percentage greater than 40
- Automatically assign you Allison Wheeler
- Perform all rejection actions

So, please help me identify why it's not working, despite me following the instructions to the letter.  I'm baffled.

Cheers, Nat
Hi guys,

This is one of the simplest Challenges I've done and for some reason I'm not passing it...so clearly I'm doing something wrong!!  Can anyone help?

The Challenge is on the Build a Discount Approval Process -> Prepare Your Org module

The instructions are:
First, create the Discount Percentage field:
From Setup, click the Object Manager tab.
Click Opportunity, then click Fields & Relationships.
At the top of the Fields & Relationships section, click New.
Select the Number radio button, and click Next.

Instructions

Click Next, then complete Step 3.
In the Read-Only column header, select the checkbox.
In the Read-Only column, deselect the Standard User and System Administrator checkboxes.
Click Next, then click Save & New.

So, that's what I did and created this:
Discount Percentage field
Which I've done twice, logged out and tried again and I can't seem to pass the Challenge.  This is the error message:
Error Message
But, I can see it on all the Opportunity Layouts:
Field on layout

Can anyone help?  Clearly, it's something really simple that I'm missing, but I can't figure out what.

Cheers, Nat
I'm trying to completed the Lightning Experience Customization Trail but the module for "Create and Customize List Views" has a listed link for a Challenge, but there's nothing at the bottom of the page?

List Views Challenge

I've logged out and logged back in, and tried in Chrome and Firefox.  When I check other Modules, I can see/click on the Challenge, but I'm getting nothing for this one, which means I can't complete the Trail.

Can anyone help?  
How to set up for the Package an AppExchange App Trailhead Challenge?

Can anyone help me?  I'm trying to complete a Trail Challenge and am unable to get an Environment Hub app to do this.  In the earlier module "Understand the AppExchange Development Landscape" it says to:
To set up your development management org:
Use the Environment Hub in your business org (1) to create a Partner Development Edition (PDE) org (2).
When you have the new PDE org, file a case in the Partner Community to request the Environment Hub app in the new org (3). This may take a couple of days"
 
And in the "Get Started with the AppExchange Partner Program" module, it says to:
Go to partnersignup.salesforce.com.
Click Join the Partner Community.
Request an AppExchange Partner Program account.
If you already have a Salesforce account, choose Log In with Salesforce (1).
Enter your login credentials. If you have multiple Salesforce accounts, log in with the username that you use most often in your day-to-day work. You can use most Salesforce accounts, including those associated with any CRM edition org, a Developer Edition org, or a trial org. Don’t log in using an account associated with a sandbox.
Click the login button.

So, I followed those steps and got a response from the Partner Operations community that says I can't do this:
"Unfortunately, only approved Partners can get full access to the Partner Community to log cases. They go through 4-6 weeks of due diligence with Legal and have to pay a sizable fee to get in as well. Given this, I don't think you'll be able to complete this particular objective"

So, if I can't actually get access to the Partner Community to get an Enivornment Hub, how do I complete the Challenge?

Cheers, Nat
I'm trying to completed the Lightning Experience Customization Trail but the module for "Create and Customize List Views" has a listed link for a Challenge, but there's nothing at the bottom of the page?

List Views Challenge

I've logged out and logged back in, and tried in Chrome and Firefox.  When I check other Modules, I can see/click on the Challenge, but I'm getting nothing for this one, which means I can't complete the Trail.

Can anyone help?  
We have a code that prevents us from closing a project if there are still open activities.
The trouble is that it picks up the "Not Started" Status update on the Recurring Tasks Series, even when the series has ended (end date has passed).

The Status of the actual Recurring Series record can't be updated: 
Recurring Task Error

The code is: public static void checkIncompleteTask(List<amc__Project__c> newList, Map<Id, amc__Project__c> oldMap) {
        List<Task> taskList = [SELECT Id, WhatId FROM Task WHERE WhatId IN: newList AND Status != 'Completed'];


Can anyone assist in excluding Recurring Series records from this? It doesn't appear as a separate RT, and isn't a reportable activity in itself.

Cheers, Nat
 
Hi there

I'm getting an error message on this Trailhead Module and I don't know what I'm doing wrong.  I have been trying for a couple of days and can't work out what my error is.

Here is my Developer Console code:

PROPERTY DIALOG COMPONENT:
<aura:component implements="flexipage:availableForRecordHome,force:hasRecordId" access="global" >
    <aura:attribute name="picklistValues" type="Object" />
    <aura:attribute name="propertyRecord" type="Property__c" />
<force:recordData aura:id="forceRecord"
                recordId="{!v.recordId}"
                targetFields="{!v.propertyRecord}"
                fields="Id,Name,Beds__c,Baths__c,Price__c,Status__c"
                mode="EDIT" />
    <aura:handler name="init" value="{!this}" action="{!c.doInit}" />
<c:PickListValues sObjectName="Property__c" fieldName="Status__c" picklistValues="{!v.picklistValues}" />
    <lightning:input aura:id="propName" name="propName" label="Property Name" required="true" />
<lightning:input aura:id="propBeds" name="propBeds" label="Beds" />
<lightning:input aura:id="propBaths" name="propBaths" label="Baths" />
<lightning:input aura:id="propPrice" name="propPrice" label="Price" />
<lightning:select aura:id="propStatus" name="propStatus" label="Status">
        <aura:iteration items="{!v.picklistValues}" var="item">
    <option value="{!item}">{!item}</option>
</aura:iteration>
</lightning:select>
<lightning:button variant="neutral" label="Cancel" />
<lightning:button variant="brand" label="Submit" onclick="{!c.saveRecord}"/>
</aura:component>

PICKLIST COMPONENT:
<aura:component >
    <aura:attribute name="sObjectName" type="String" />
<aura:attribute name="fieldName" type="String" />
<aura:attribute name="picklistValues" type="Object" />
    <aura:handler name="init" value="{!this}" action="{!c.doInit}" />
</aura:component>

PICKLIST CONTROLLER:
public class PickListController {

@AuraEnabled        
public static List<String> getPickListValuesIntoList(String objectType, String selectedField){
    List<String> pickListValuesList = new List<String>();
    Schema.SObjectType convertToObj = Schema.getGlobalDescribe().get(objectType);
    Schema.DescribeSObjectResult res = convertToObj.getDescribe();
    Schema.DescribeFieldResult fieldResult = res.fields.getMap().get(selectedField).getDescribe();
    List<Schema.PicklistEntry> ple = fieldResult.getPicklistValues();
    for( Schema.PicklistEntry pickListVal : ple){
        pickListValuesList.add(pickListVal.getLabel());
    }     
    return pickListValuesList;
}}

PICKLIST VALUES CONTROLLER:
({
    doInit : function(component) {
        var action = component.get("c.getPickListValuesIntoList");
        action.setParams({
            objectType: component.get("v.sObjectName"),
            selectedField: component.get("v.fieldName")
        });
        action.setCallback(this, function(response) {
            var list = response.getReturnValue();
            component.set("v.picklistValues", list);
        })
        $A.enqueueAction(action);
    }
})

PROPERTY DIALOG CONTROLLER:
({
    doInit : function(component, event, helper) {
        
    component.find("forceRecord").getNewRecord(
        "Property__c",
        null,
        false,
        $A.getCallback(function() {
            var rec = component.get("v.propertyRecord");
            var error = component.get("v.recordError");
            if (error || (rec === null)) {
                console.log("Error initializing record template: " + error);
                return;
            }
        })
    );},
    saveRecord : function(component, event, helper) {
var propBeds = parseInt(component.find('propBeds').get("v.value"), 10);
var propBaths = parseInt(component.find('propBaths').get("v.value"), 10);
var propPrice = parseInt(component.find('propPrice').get("v.value"), 10);

component.set("v.propertyRecord.Name", component.find('propName').get("v.value"));    
component.set("v.propertyRecord.Beds__c", propBeds);
component.set("v.propertyRecord.Baths__c", propBaths);
component.set("v.propertyRecord.Price__c", propPrice);
component.set("v.propertyRecord.Status__c", component.find('propStatus').get("v.value"));

var tempRec = component.find("forceRecord");
tempRec.saveRecord($A.getCallback(function(result) {
    console.log(result.state);
    var resultsToast = $A.get("e.force:showToast");
    if (result.state === "SUCCESS") {
        resultsToast.setParams({
            "title": "Saved",
            "message": "The record was saved."
        });
        resultsToast.fire();                
        var recId = result.recordId;
helper.navigateTo(component, recId);
    } else if (result.state === "ERROR") {
        console.log('Error: ' + JSON.stringify(result.error));
        resultsToast.setParams({
            "title": "Error",
            "message": "There was an error saving the record: " + JSON.stringify(result.error)
        });
        resultsToast.fire();
    } else {
        console.log('Unknown problem, state: ' + result.state + ', error: ' + JSON.stringify(result.error));
    }
}));}
})

PROPERTY DIALOG HELPER:
({
    navigateTo: function(component, recId) {
        var navEvt = $A.get("e.force:navigateToSObject");
        navEvt.setParams({
            "recordId": recId
        });
        navEvt.fire();
    }
})

And I'm getting this error message:
Uncaught Unknown controller action 'getPickListValuesIntoList'
Callback failed: serviceComponent://ui.flexipage.components.page.FlexipageControllerV2/ACTION$getPage

With this Stack Trace:
a.H.get()@https://curious-goat-22263-dev-ed.lightning.force.com/auraFW/javascript/cbZO21YQZI1hrYG6dKZGlw/aura_prod.js:288:176
Object.value [as get]()@https://curious-goat-22263-dev-ed.lightning.force.com/auraFW/javascript/cbZO21YQZI1hrYG6dKZGlw/aura_prod.js:720:228
doInit()@https://curious-goat-22263-dev-ed.lightning.force.com/one/components/c/PickListValues.js:10:32

Any help would be greatly appreciated.  I don't use Developer Console work in my role, but thought I'd learn and am just ripping my hair out!!

Cheers, Nat
I am stuck at the Trailhead: "Build a Lightning Component to Override a Standard Action" - "Use Lighting Data Service"
with the error:
"Challenge Not yet complete... here's what's wrong: The JavaScript controller markup for the 'PropertyDialog' component is not correct."
Thanks Trailhead ><
Everythign is working as expected when I test it. I passed the next modules with no issues.
I only copy pasted what they required so this looks like some other mistakes is creeping in.
PropertyDialog:
<aura:component implements="flexipage:availableForRecordHome,force:hasRecordId" access="global" > <aura:attribute name="picklistValues" type="Object" /> <aura:attribute name="propertyRecord" type="Property__c" /> <force:recordData aura:id="forceRecord" recordId="{!v.recordId}" targetFields="{!v.propertyRecord}" fields="Id,Name,Beds__c,Baths__c,Price__c,Status__c" mode="EDIT" /> <aura:handler name="init" value="{!this}" action="{!c.doInit}" /> <c:PicklistValues sObjectName="Property__c" fieldName="Status__c" picklistValues="{!v.picklistValues}" /> <lightning:input aura:id="propName" name="propName" label="Property Name" required="true" /> <lightning:input aura:id="propBeds" name="propBeds" label="Beds" /> <lightning:input aura:id="propBaths" name="propBaths" label="Baths" /> <lightning:input aura:id="propPrice" name="propPrice" label="Price" /> <lightning:select aura:id="propStatus" name="propStatus" label="Status"> <aura:iteration items="{!v.picklistValues}" var="item"> <option value="{!item}">{!item}</option> </aura:iteration> </lightning:select> <lightning:button variant="neutral" label="Cancel" /> <lightning:button variant="brand" label="Submit" onclick="{!c.saveRecord}" />


PropertyDialogController:
({ doInit : function(component, event, helper) { console.log('Property Dialiog init'); var recordData = component.find("forceRecord"); recordData.getNewRecord('Property__c', null, false, $A.getCallback(function() { console.log('callback from getNewRecord'); var rec = component.get("v.propertyRecord"); var error = component.get("v.recordError"); if (error || (rec === null)) { console.log("Error initializing record template: " + error); return; } })); }, saveRecord : function(component, event, helper){ console.log('saveRecord start'); var propBeds = parseInt(component.find('propBeds').get("v.value"), 10); var propBaths = parseInt(component.find('propBaths').get("v.value"), 10); var propPrice = parseInt(component.find('propPrice').get("v.value"), 10); component.set("v.propertyRecord.Name", component.find('propName').get("v.value")); component.set("v.propertyRecord.Beds__c", propBeds); component.set("v.propertyRecord.Baths__c", propBaths); component.set("v.propertyRecord.Price__c", propPrice); component.set("v.propertyRecord.Status__c", "Listed"); console.log('finished setting fields'); var tempRec = component.find("forceRecord"); console.log(tempRec); console.log(JSON.stringify(tempRec)) ; tempRec.saveRecord($A.getCallback(function(result) { console.log(result.state); var resultsToast = $A.get("e.force:showToast"); if (result.state === "SUCCESS") { resultsToast.setParams({ "title": "Saved", "message": "The record was saved." }); resultsToast.fire(); var recId = result.recordId; console.log('record id: '+recId); helper.navigateTo(component, recId); } else if (result.state === "ERROR") { console.log('Error: ' + JSON.stringify(result.error)); resultsToast.setParams({ "title": "Error", "message": "There was an error saving the record: " + JSON.stringify(result.error) }); resultsToast.fire(); } else { console.log('Unknown problem, state: ' + result.state + ', error: ' + JSON.stringify(result.error)); } })); }
})


PropertyDialogHelper:
({ navigateTo : function(component, recId) { var eventNav = $A.get("e.force:navigateToSObject"); eventNav.setParams({recordId: recId}); eventNav.fire(); }
})


Thanks for the help!
Hey guys,

Please help me.  This is the 3rd Org I've set up because I keep having the same error every challenge.  I follow the same steps but it works in one org and not in another, so I don't know what the issue is.  But, this one I need help with...I've tried too many times!!

The Challenge on Create Initial Submission Actions requests
If you’ve navigated away from where you ended the previous step, enter Approval Processes in the Quick Find box, then click Discount Approval Process from the Inactive Approval Processes section.
From the Add New picklist in the Initial Submission Actions section, select Field Update and complete the field update details with these values:
FieldValueNameApproval Status Pending
Unique Name[this field auto-populates]
Field to UpdateApproval Status
Picklist Options: A specific valuePending
Click Save.
Next, create approval steps.
Click New Approval Step and complete the details of the first approval step:
FieldValueNameManager Approval
Unique Name[this field auto-populates]
DescriptionDiscount approver must approve discounts over 15%
Step Number1
Click Next.
Select the Enter this step if the following radio button, and choose criteria are met, else approve record then fill in these details:
FieldOperatorValueOpportunity: Discount Percentagegreater than15
Click Next, then complete the assigned approver information:
Select the Automatically assign using the user field selected earlier (Manager) radio button.
Deselect The approver’s delegate may also approve this request checkbox.
Click Save.
On the What Would You Like To Do Now? page, select No, I'll do this later, take me to the approval process detail page to review what I've just created.
Click Go!
In the Approval Steps section, click New Approval Step and complete the details of the second approval step:
FieldValueNameVP Approval
Unique Name[this field auto-populates]
DescriptionVP North American Sales must approve discounts over 40%
Step Number2
Click Next.
Select the Enter this step if the following radio button, and choose criteria are met, then fill in these details:
FieldOperatorValueOpportunity: Discount Percentagegreater than40
Click Next, then complete the assigned approver information:
FieldValueSelect ApproverAutomatically assign to approver(s)
UserAllison Wheeler
Approve or reject based on the FIRST responseselect
Approver’s delegate may also approve this requestdeselect
Reject BehaviorPerform all rejection actions for this step AND all final rejection actions (Final Rejection)
Click Save.
On the What Would You Like To Do Now? page, select No, I'll do this later, take me to the approval process detail page to review what I've just created.
Click Go!

So I followed those instructions and created this:
Org

There's too many screenshots to attach, so let me break it down:
1: Approval Status ending - specific value = Pending
2: Manager Approval:
- Set to "Criteria are met, else approve if Discount Percentage greater than 15
- Automatically assign to Manager
3: VP Approval:
- Set to "Enter this step if the following criteria are met": Discount Percentage greater than 40
- Automatically assign you Allison Wheeler
- Perform all rejection actions

So, please help me identify why it's not working, despite me following the instructions to the letter.  I'm baffled.

Cheers, Nat
Hi guys,

This is one of the simplest Challenges I've done and for some reason I'm not passing it...so clearly I'm doing something wrong!!  Can anyone help?

The Challenge is on the Build a Discount Approval Process -> Prepare Your Org module

The instructions are:
First, create the Discount Percentage field:
From Setup, click the Object Manager tab.
Click Opportunity, then click Fields & Relationships.
At the top of the Fields & Relationships section, click New.
Select the Number radio button, and click Next.

Instructions

Click Next, then complete Step 3.
In the Read-Only column header, select the checkbox.
In the Read-Only column, deselect the Standard User and System Administrator checkboxes.
Click Next, then click Save & New.

So, that's what I did and created this:
Discount Percentage field
Which I've done twice, logged out and tried again and I can't seem to pass the Challenge.  This is the error message:
Error Message
But, I can see it on all the Opportunity Layouts:
Field on layout

Can anyone help?  Clearly, it's something really simple that I'm missing, but I can't figure out what.

Cheers, Nat
I'm trying to completed the Lightning Experience Customization Trail but the module for "Create and Customize List Views" has a listed link for a Challenge, but there's nothing at the bottom of the page?

List Views Challenge

I've logged out and logged back in, and tried in Chrome and Firefox.  When I check other Modules, I can see/click on the Challenge, but I'm getting nothing for this one, which means I can't complete the Trail.

Can anyone help?  
How to set up for the Package an AppExchange App Trailhead Challenge?

Can anyone help me?  I'm trying to complete a Trail Challenge and am unable to get an Environment Hub app to do this.  In the earlier module "Understand the AppExchange Development Landscape" it says to:
To set up your development management org:
Use the Environment Hub in your business org (1) to create a Partner Development Edition (PDE) org (2).
When you have the new PDE org, file a case in the Partner Community to request the Environment Hub app in the new org (3). This may take a couple of days"
 
And in the "Get Started with the AppExchange Partner Program" module, it says to:
Go to partnersignup.salesforce.com.
Click Join the Partner Community.
Request an AppExchange Partner Program account.
If you already have a Salesforce account, choose Log In with Salesforce (1).
Enter your login credentials. If you have multiple Salesforce accounts, log in with the username that you use most often in your day-to-day work. You can use most Salesforce accounts, including those associated with any CRM edition org, a Developer Edition org, or a trial org. Don’t log in using an account associated with a sandbox.
Click the login button.

So, I followed those steps and got a response from the Partner Operations community that says I can't do this:
"Unfortunately, only approved Partners can get full access to the Partner Community to log cases. They go through 4-6 weeks of due diligence with Legal and have to pay a sizable fee to get in as well. Given this, I don't think you'll be able to complete this particular objective"

So, if I can't actually get access to the Partner Community to get an Enivornment Hub, how do I complete the Challenge?

Cheers, Nat

Tried to install this on Sandbox but failed.

Error Message: The post install script failed.

Any resources?