Wednesday, December 30, 2020

Platform Developer I Certification Maintenance (Winter '21)





Platform Developer I Certification Maintenance (Winter '21)




→ Learn What’s New in Apex for Platform Developers

1. How can a suspended event be resumed where it left off, to avoid missing any events that were published during the suspension?
A. Refresh the event.
B. Resume the event.
C. Resume the event from New.
D. Resume the event from Tip.

2. Which statement is true regarding events configured with the Publish Immediately behavior?
A. Publish Immediately events count toward the Apex DML statement limit.
B. EventBus.publish() returns how many platform events are configured to Publish Immediately.
C. The events are published and do not depend on the successful completion of the transaction.
D. Events published immediately prevent Apex callouts from being performed after publishing.

3. What is the minimum code coverage requirement in order to promote and release an unlocked package?
A. 70%
B. 75%
C. 85%
D. 90%

4. When using WITH SECURITY_ENFORCED in a SELECT clause, what happens if a field referenced in the clause is inaccessible to the user?
A. The query succeeds, but no data is returned.
B. The query succeeds, and a null data set is returned.
C. The query fails with an error indicating no access allowed.
D. The query throws an exception indicating insufficient permissions and no data is returned.

5. A developer wants to send a custom notification when an important event occurs. What can the developer use?
A. Messaging.CustomNotification class
B. Messaging.PushNotification class
C. Messaging.NotificationAction class
D. Messaging.SendNotification class

→ Learn What’s New in Lightning Web Components and Visualforce

1. A developer wants to check whether a user has a standard permission. Where should the developer import Salesforce permissions from in order to check this?
A. @salesforce/hasPermission
B. @salesforce/customPermission
C. @salesforce/userPermission
D. @salesforce/customPermission/namespace

2. When does Salesforce plan to enforce the removal of instance names from all Visualforce URLs?
A. Spring ’18
B. Summer ’21
C. Spring ’22
D. Summer ’22

3. What is a current use case for incorporating the @track decorator in a field of a Lightning web component?
A. To make a field reactive
B. To display the updated field value if it changes
C. To observe changes when the field contains an array
D. To re-render a component when a field’s value changes

4. What is the default behavior of the Lightning message service scope parameter?
A. Active area only
B. Entire application
C. Publisher message channel
D. Active area and all hidden tabs

→ Get Hands-on With Field- and Object-Level Security and Safe Navigation Operator


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 and confidential data.
  ○ Field Label: Top Secret
  ○ Type: Text
  ○ Field Name: Top_Secret
  ○ Length: 255

• Uncheck the Visible box for the Standard User profile when defining field-level security.

That’s it for setup. You’ll use the code block below for an Apex class to complete the hands-on challenge.

ApexSecurityRest code block:
@RestResource(urlMapping='/apexSecurityRest')
global with sharing class ApexSecurityRest {
    @HttpGet
    global static Contact doGet(){
        Id recordId = RestContext.request.params.get('id');
        Contact result;
        if (recordId == null){
            throw new FunctionalException('Id parameter is required');
        }
        List<Contact> results = [SELECT id, Name, Title, Top_Secret__c, Account.Name FROM Contact WHERE Id = :recordId];
       SObjectAccessDecision securityDecision = Security.stripInaccessible(AccessType.READABLE ,results);             
       if (!results.isEmpty()) {
       result = results[0];
            if(Schema.sObjectType.Contact.fields.Description.isUpdateable()){
                 result.Description = result.Account?.Name;
            }
	}
    return result;
    }
    public class FunctionalException extends Exception{}
    public class SecurityException extends Exception{}
}

19 comments:

  1. This is one of best site to learn Salesforce platform scratch 👍..

    ReplyDelete
  2. This comment has been removed by a blog administrator.

    ReplyDelete
  3. Wow this blog is very nice, it is very helpful to me.

    Thank you

    ReplyDelete
  4. Thank you so much for your help

    ReplyDelete
  5. Very interesting, good job and thanks for sharing such a good information. 😊

    ReplyDelete
  6. Thank you for saving my butt on this

    ReplyDelete
  7. There is a logical bug in your solution.

    On line 11, 'Security.stripInaccessible(AccessType.READABLE ,results)' does NOT mutate the input list 'results.

    To correct this, replace line 13 with 'result = (Contact) securityDecision.getRecords()[0];'.

    ReplyDelete
  8. Than you for the guidance

    ReplyDelete
  9. Great work!! thanks for sharing!

    ReplyDelete
  10. Error: Compile Error: Unexpected token 'Contact'.
    global static Contact doGet()

    ReplyDelete
  11. I was really tired today because of work and its also the last date of my certificate maintenance. I didn't expect of getting all the correct answers here. Thank You so much for posting this. :)

    ReplyDelete
  12. Lay bhari Nikhil bhau

    ReplyDelete
  13. Your Apex code must contain Security.stripInaccessible with the correct access type in the results processing. Please review the original code beginning on line 14 and recheck the results processing logic in your code.
    I got this message. Can somebody help on this

    ReplyDelete