Thursday, October 17, 2019

Administrator Certification Maintenance (Summer '19)

Unit : Administrator Certification Maintenance (Summer '19)

UNIT : Learn What's New in Summer '19:-

1. An administrator needs to customize hyperlinks to match corporate branding. Which setting can the administrator set to assign custom colors to hyperlinks?
A. Use global header color.
B. Use brand-based color.
C. Use brand color.
D. Use theme-based color.

2. How can different Activities Views be used once the default Activities View is enabled by the administrator?
A. Users can toggle between Classic and Lightning.
B. The administrator can provide delegated access to specific users.
C. The administrator can apply specific permissions in a permission set.
D. Users can switch between preferences.
3. Which filter option can administrators recommend to help a manager filter on tasks for their team?
A. My team's tasks
B. My team's role
C. My tasks
D. My team's region
4. By how many levels can dashboard components be sorted?
A. 1
B. 2
C. 4
D. 5
E. 10
5. Which dashboard component should an administrator use to show subtotals?
A. Bar charts
B. Lightning table
C. Metric components
D. Stacked bar charts

UNIT : Get Hands-on with Inserting Images into Your Email Templates

TASK:-
Include images in your email templates
Make your email messages stand out by adding images to your email templates.
Step 1: Switch to Lightning.
Step 2: In Quick find box Search for Lightning Email Templates.
Enable Folders and Enhanced Sharing for Lightning Email Templates

Step 3: In order to access email template folders, you’ll need to add Email Templates as a tab in lightning.
Switch to Sales Application –Click on Personalize your navigation bar icon – Click on Add More Items - Click on All & Search for Email Templates – Select Email Template
Add Email Template Tab in Sales Application.
Click on Save
Step 4: Next after adding Email Template Tab, Click on Email Template Tab.

Next after adding Email Template Tab, Click on Email Template Tab.

Step 5: Click on New Folder, Enter Label as Sales & Save It
Step 6: After Creating the Folder Create New Template
Create an Email Template
Email Template Name: General
Folder: Sales
Subject: General
Insert an image

Platform App Builder Certification Maintenance (Summer '19)

Unit : Platform App Builder Certification Maintenance (Summer '19)

UNIT : Learn What's New For App Builders in Summer 19:-

1. Which attribute can an app builder use to make a dependent picklist screen component in flow screens required?
A. {!$GlobalConstant.DefaultValue}
B. {!$GlobalConstant.False}
C. {!$GlobalConstant.True}
D. {!$GlobalConstant.Required}

2. How can an app builder determine what flow type best meets a specific business process?
A. Flow Blocks
B. Flow Templates
C. Flow Interviews
D. Flow Reference

3. An app builder needs to notify an account owner of a new support case logged by a high-risk account. Which feature should the app builder use to send a custom notification to the account owner?
A. User workflow
B. Einstein Next Best Action
C. Chatter notifications
D. Notification Builder

4. Agents need to be able to see email attachments easily when reviewing cases. Which related list can the app builder add to the case page layout?
A. Files related list
B. Attachments related list
C. Email related list
D. Source related list

5. Where should an app builder go to create a Lightning letterhead after enabling enhanced letterheads for Lightning email templates?
A. Setup > Email
B. Setup > Lightning Email Templates
C. Setup > Letterheads
D. App Launcher > Email Templates
E. App Launcher > Enhanced Letterhead

UNIT : Get Hands-on with Sales Milestones Confetti
Celebrate Sales Milestones with Path Help your teams celebrate their successes with virtual confetti when sales reps reach a designated path stage.

Step 1: Setup a Path 
Click on Setup - In Quickfind box search for Path Settings, Click on Path Settings, Enable the Path Settings(If You are doing for the First Time), Else Click on New Path. Enter the details as below.
Path Name: Milestones
Object: Opportunity
Record Type: Master
Picklist: Stage
Click Next in Step 2; we don't need to configure guidance for success

Step 2: Enable confetti
Selected for Celebration: Closed Won
Celebration Frequency: Always
Ensure the path is Active and then click Finish

Step 3: Create Opportunity
Create an opportunity:
Opportunity Name: Big Deal
Closed Date: Enter today’s date (we won’t check for this)
Stage: Prospecting
Step 4: Change the Stage To Closed Won.
Use path to set the current stage of the Big Deal opportunity to Closed Won

Platform Developer I Certification Maintenance (Summer '19)

Unit : Platform Developer I Certification Maintenance (Summer '19)

UNIT : Learn What’s New for Platform Developers in Spring ’19:-

1. What allows Flows to manipulate complex data types that are often returned from calls to web services?
A. Screen components
B. Primitive Apex objects
C. Apex-defined data types
D. External service registrations

2. What is the benefit of using the Continuation class in Apex to make a long-running request to an external web service?
A. Multiple Continuation action calls can be made in parallel.
B. A single Continuation object can contain up to 10 callouts.
C. DML operations can be performed within the Continuation.
D. More long-running callouts can be made using Continuations.

3. Which Lightning web component configuration file tag set specifies the form factors that the component supports?
A. <targets>
B. <isExposed>
C. <supportedFormFactors>
D. <design:supportedFormFactors>


4. Which tag adds the Lightning Web Components for Visualforce JavaScript library to a Visualforce page?
A. <apex:include/>
B. <apex:lightning/>
C. <apex:includeLightning/>
D. <apex:createComponent/>.

UNIT : Get Hands-on using Platform Events from Batch Apex Classes
Step 1:- Install the below unmanaged package for completing this challenge.
Link:- https://login.salesforce.com/packaging/installPackage.apexp?p0=04t4P000002EMv0
👉Select Install for All Users, then click Install.
👉Once the installation is complete, click Done.
Step 2:- Modify an existing batch Apex job to raise BatchApexErrorEvents
👉Take an existing batch Apex job class and update it to implement the Database.RaisesPlatformEvents interface.
Then, add a trigger on BatchApexErrorEvent that logs exceptions in the batch job to a custom object.

👉Update the BatchLeadConvert class to implement the Database.RaisesPlatformEvents marker interface.
 public with sharing class BatchLeadConvert implements Database.Batchable<SObject>, Database.RaisesPlatformEvents{  
   private final String CONVERTED_STATUS = [SELECT Id, MasterLabel FROM LeadStatus WHERE IsConverted=true LIMIT 1].MasterLabel;  
   public Database.QueryLocator start(Database.BatchableContext ctx){  
     return Database.getQueryLocator([SELECT Id FROM Lead WHERE ConvertedContactId = null]);  
   }  
   public void execute(Database.BatchableContext ctx, List<Lead> records){  
     List<Database.LeadConvert> leadConverts = new List<Database.LeadConvert>();  
     for(Lead record:records){  
       Database.LeadConvert lc = new Database.LeadConvert();  
       lc.setConvertedStatus(CONVERTED_STATUS);  
       lc.setLeadId(record.Id);  
       leadConverts.add(lc);  
     }  
     Database.convertLead(leadConverts, true);  
   }  
   public void finish(Database.BatchableContext ctx){  
   }  
 }  
Step 3:-
👉Create an Apex trigger called BatchApexErrorTrigger on the BatchApexErrorEvent SObject type. For each event record, capture the following fields and save them to the corresponding fields in a new BatchLeadConvertErrors__c record.
AsyncApexJobId: AsyncApexJobId__c
JobScope: Records__c
StackTrace: StackTrace__c
To make the trigger bulk safe, use a single DML statement to insert a list of new records at the end.
 trigger BatchApexErrorTrigger on BatchApexErrorEvent (after insert) {  
   BatchLeadConvertErrors__c[] insertErrorList = new BatchLeadConvertErrors__c[]{};  
   for(BatchApexErrorEvent error : trigger.new)  
   {  
     BatchLeadConvertErrors__c errorLogs = new BatchLeadConvertErrors__c();  
     errorLogs.AsyncApexJobId__c = error.AsyncApexJobId;  
     errorLogs.Records__c = error.JobScope;  
     errorLogs.StackTrace__c = error.StackTrace;  
     insertErrorList.add(errorLogs);  
   }  
   insert insertErrorList;  
 }  
NOTE: BEFORE COMPLETING CHALLENGE, MAKE SURE YOU TO RUN THE BatchLeadConvertTest TEST CLASS

Saturday, June 15, 2019

Automate Record Creation

Unit : Automate Record Creation

👉Install the unmanaged package for the schema and stubs for Apex classes and triggers. 
👉Rename cases and products to match the HowWeRoll schema, and assign all profiles to the custom HowWeRoll page layouts for those objects. 
👉Use the included package content to automatically create a Routine Maintenance request every time a maintenance request of type Repair or Routine Maintenance is updated to Closed.
👉Follow the specifications and naming conventions outlined in the business requirements.
#Apex Trigger
 trigger MaintenanceRequest on Case (after update) {  
   MaintenanceRequestHelper.updateWorkOrders();  
 }
#Apex Class
 public class MaintenanceRequestHelper {  
     public static void updateWorkOrders(){  
     Map<Id, Case> mantnceReqToEvaluate = new Map<Id, Case>();  
     for(Case mantnceReq : (List<Case>)Trigger.new){  
       if((mantnceReq.Type.contains('Repair') || mantnceReq.Type.contains('Routine Maintenance')) && mantnceReq.Status == 'Closed'){  
         mantnceReqToEvaluate.put(mantnceReq.Id,mantnceReq);  
       }  
     }  
         Map<Id, decimal> mapOfProdIdWithMaintenanceCycle = getMapOfProdIdWithMaintenanceCycle();  
         List<Case> lstOfMaintenanceRoutines = getListOfMaintenanceRoutineList(mantnceReqToEvaluate, mapOfProdIdWithMaintenanceCycle);  
     System.debug('lstOfMaintenanceRoutines :::::::: '+lstOfMaintenanceRoutines);  
     if(lstOfMaintenanceRoutines != null && lstOfMaintenanceRoutines.size() > 0)  
       INSERT lstOfMaintenanceRoutines;  
   }  
     private static Map<Id, decimal> getMapOfProdIdWithMaintenanceCycle(){  
     Map<Id,decimal> mapOfProdIdWithMaintenanceCycle = new Map<Id, decimal>();  
     for(Product2 prod : [SELECT Id, Maintenance_Cycle__c from Product2]){  
       mapOfProdIdWithMaintenanceCycle.put(prod.Id, prod.Maintenance_Cycle__c);  
     }  
         return mapOfProdIdWithMaintenanceCycle;  
   }  
   private static List<Case> getListOfMaintenanceRoutineList(Map<Id, Case> mantnceReqToEvaluate, Map<Id, decimal> mapOfProdIdWithMaintenanceCycle){  
     List<Case> lstOfMaintenanceRoutines = new List<Case>();  
       for(Case maintenance : mantnceReqToEvaluate.values()){  
       Case maintenanceNewIns = new Case();  
       maintenanceNewIns.Vehicle__c = maintenance.Vehicle__c;  
       maintenanceNewIns.Equipment__c = maintenance.Equipment__c;  
       maintenanceNewIns.Type = 'Routine Maintenance';  
       maintenanceNewIns.Subject = 'Your Routine Maintenance Schedule';  
       maintenanceNewIns.Date_Reported__c = Date.today();  
       maintenanceNewIns.Date_Due__c = getDueDate(maintenance, mapOfProdIdWithMaintenanceCycle);  
       maintenanceNewIns.Status = 'New';  
       maintenanceNewIns.Origin = 'Phone';  
       lstOfMaintenanceRoutines.add(maintenanceNewIns);  
     }  
     return lstOfMaintenanceRoutines;    
   }  
   private static Date getDueDate(Case maintenance, Map<Id, decimal> mapOfProdIdWithMaintenanceCycle){  
     Date dt = null;  
     if (mapOfProdIdWithMaintenanceCycle.get(maintenance.Equipment__c) != null) {  
       dt = Date.today().addDays(Integer.valueOf(mapOfProdIdWithMaintenanceCycle.get(maintenance.Equipment__c)));  
     }  
     return dt;  
   }  
 }  

Monday, April 29, 2019

Platform Developer I Certification Maintenance (Spring '19)

Unit : Platform Developer I Certification Maintenance (Spring '19)

UNIT : Learn What’s New for Platform Developers in Spring ’19:-

1. Which Apex interface can be implemented to allow My Domain users to log in with something other than their username and password?
A. Auth.AuthToken
B. Auth.VerificationMethod
C. Auth.LoginDiscoveryHandler
D. Auth.MyDomainLoginDiscoveryHandler

2. With Spring '19, which method returns a list of OrgLimit instances used to investigate limits and their names, current value, and maximum value?
A. getAll() from the System.OrgLimit Class
B. getAll() from the System.OrgLimits Class
C. getInstances() from the System.OrgLimit Class
D. getInstances() from the System.OrgLimits Class

3. With Spring '19, which properties of an unhandled Apex exception are available in Event Monitoring log files?
A. Static variable state and stack trace
B. Exception type, name, and static variable state
C. Stack trace, user's location, and exception type
D. Exception message, exception type name, and stack trace

4. Which field of the SandboxInfo object is a reference to the ID of the SandboxInfo that served as the source org for a cloned sandbox?
A. SourceId
B. TemplateId
C. SandboxName
D. SandboxInfoId

5. You created a custom metadata type to handle your company's warranty policy. The custom metadata type's label is WarrantyRule. For it, you created a custom field labeled Warranty and a metadata record labeled Gold. What is the correct syntax to reference the value stored in the Gold metadata record?
A. $WarrantyRule.Gold.Warranty__c
B. $WarrantyRule__mdt.Gold.Warranty
C. $CustomMetadata.WarrantyRule.Gold.Warranty
D. $CustomMetadata.WarrantyRule__mdt.Gold.Warranty__c

Get Ready for the Hands-on Challenge:-


In the hands-on challenge below, you’ll have an opportunity to work with these new security settings and use the new WITH SECURITY_ENFORCED clause in SOQL queries run from Apex to simplify your code. But before we get started, a bit of setup is required. 


Our business goal is to ensure that only system administrators have access to sensitive customer information, and that other users cannot invoke our APIs that handle sensitive data. To ensure that our code is generally safe, we need to make runtime checks of field- and object-level security. As developers, we need to specifically ensure our code respects admin-defined security constraints.

Launch the org you’ll use for the hands-on challenge, then do the following.

Create a new custom field on the Contact object to establish a field that contains sensitive information about the secret keys of our customers.
Field Label: Secret Key
Type: Text
Field Name: Secret_Key
 @RestResource(urlMapping='/secureApexRest')  
 global with sharing class SecureApexRest {  
   @HttpGet  
   global static Contact doGet(){  
     Id recordId = RestContext.request.params.get('id');  
     Contact result;  
     List<Contact> results = [SELECT id, Name, Secret_Key__c FROM Contact WHERE Id = :recordId WITH SECURITY_ENFORCED];  
     if (!results.isEmpty()) {  
        result = results[0];  
      }  
      else{  
       throw new QueryException('You don\'t have access to all contact fields required to use this API');  
     }  
     return result;  
   }  
    public class QueryException extends Exception{}  
 }  

Sunday, April 28, 2019

Platform App Builder Certification Maintenance (Spring '19)

Unit : Platform App Builder Certification Maintenance (Spring '19)

UNIT : Learn What's New For App Builders:-

1. Which permission does an app builder need to access the Flow Builder?
A. Flow Manager
B. Author Apex
C. Manage Flow
D. Lightning Experience User

2. Where can an app builder change the layout of a Lightning page?
A. Page Layout
B. Properties
C. Page Navigator
D. App Options

3. An account team is no longer needed. What action can the account owner take to remove the entire team?
A. Create a custom action.
B. Use Transfer Account Team.
C. Remove all members manually.
D. Use Remove All Members.

4. Which language can an app builder use to build Lightning web components?
A. CSS
B. HTML
C. JQuery
D. Visualforce

5. Which relative set of date/time fields can an app builder specify in a macro when it is run?
A. Now, Time, Date
B. Today, DateTime, Date
C. Time, Date, DateTime
D. DateTime, Time, Today

UNIT : Get Hands-on with Customized Home Pages and Components:-

Now you can make your Lightning pages more dynamic by configuring home page components.
You've been given a requirement to make the Sales app home page specific for the Sales team. Build out a custom Lightning home page for the Sales app.
👉Launch a new Trailhead Playground
If you see an error when attempting to launch the playground, wait a few minutes and try again. It could take up to 15 minutes for the Playground to load.
👉Create a new Lightning page:
Page type: Home Page
Label: Sales Home Page
Template: Standard Home Page
👉Add the following components to the page:
Rich Text
Chatter Feed
Assistant
Today's Events
Today's Tasks
👉In the Rich Text component:
Add the text: Welcome!
Set font to: Salesforce Sans
👉On the Rich Text component, add a filter to set component visibility:
Field: Permissions > Standard Permission > Lightning Experience User
Operator: Equal
Value: True
👉Save and activate the page for all users.

👉Assign the page as the org default.

Administrator Certification Maintenance (Spring '19)

Unit : Administrator Certification Maintenance (Spring '19)

UNIT : Learn What's New in Spring '19:-

1. On which set of objects can an administrator customise the Stage Setup Flow?
A. Leads and cases
B. Leads and opportunities
C. Account and contacts
D. Campaigns and campaign members

2. How many blocks are available in joined reports?
A. 2
B. 3
C. 5
D. 8

3. An account team is no longer needed. How can the account owner remove the entire team?
A. Create a custom action
B. Use Transfer Account Team
C. Create a Delete Team process builder
D. Use Remove All Members

4. Which set of actions can an administrator take with subtab options in Console?
A. Refresh, customize, promote
B. Promote, publish, close
C. Promote, refresh, delete
D. Refresh, customize, publish

5. For which object can an administrator grant data sharing rules within workflows?
A. Tasks
B. Opportunities
C. Products
D. Contracts

6. Which relative date/time can an administrator specify in a macro when it is run?
A. Months from now
B. Years from today
C. Hours from now
D. Minutes from today

UNIT : Get Hands-on with Lightning Pages:-
Don’t like the layout of a Lightning page? Did your business needs change? Now with a few clicks, you can swap a Lightning page’s template.
You've been given a requirement to change the Account Record Page Lightning template.
👉Launch a new Trailhead Playground
If you see an error when attempting to launch the playground, wait a few minutes and try again. It could take up to 15 minutes for the Playground to load.
👉Create a new Lightning page:
To create a Lightning Page, Follow below Steps:-
Step 1 : Setup - Quick Findbox - Search for Lightning App Builder
Step 2 : Click on New 
Type: Record Page
Label: Account Management
Object: Account
Template: click Clone Salesforce Default Page, and then select Account Record Page Default
Click Finish

👉Change the Page Template to Header, Subheader, Left Sidebar
Leave template mapping as is and click Done

👉Add the following standard components to your page:-
Topics
Recent Items
👉Save and Activate; assign page as the Org Default