Universal Containers (UC) is a large printing company that sells advertisement banners. The company works with third-party agents on banner initial design concepts. The design files are stored in an on-premise file store that can be accessed by UC internal users and the third party agencies. UC would like to collaborate with the 3rd part agencies on the design files and allow them to be able to view the design files in the community. The conceptual design files size is 2.5 GB. Which solution should an integration architect recommend?
Northern Trail Outfitters needs to present shipping costs and estimated delivery times to their customers. Shipping services used vary by region, and have similar but distinct service request parameters. Which integration component capability should be used?
Correct Answer: A
Explanation Using an Enterprise Service Bus (ESB) to determine which shipping service to use, and transform requests to the necessary format is a good solution because it can provide routing, transformation, mediation, and orchestration capabilities for integrating different services. An ESB can also abstract the complexity and heterogeneity of the services from the client application, which simplifies the integration. Using Outbound Messaging to request costs and delivery times from Shipper delivery services with automated error retry is not a good solution because Outbound Messaging is a Salesforce-specific feature that uses SOAP web services, which may not be compatible with all shipping services. Using APEX REST Service to implement routing logic to the various shipping service is also not a good solution because it can introduce performance and scalability issues, as well as increase the maintenance cost and complexity of the code. Using Enterprise Service Bus user interface to collect shipper-specific form data is not a valid option because an ESB does not have a user interface component. Reference: Salesforce Integration Architecture Designer Resource Guide, page 16-17
Question 38
Northern Trail Outfitters (NTO) leverages Sales Cloud for tracking and managing leads, accounts, contacts, and opportunities- Orders and order fulfillment is taken care of by an Order Management System (OMS) in the back-office. When an opportunity has changed it's status to "Closed/Won" and there are products attached, the details should be passed to the OMS for fulfillment operations. The callout from Salesforce to the OMS should be synchronous. What should an Integration Architect do to satisfy these requirements?
Correct Answer: A
Explanation A trigger is a programmatic way of executing some logic when a record is inserted, updated, deleted, or undeleted in Salesforce. A trigger can invoke an Apex class that contains the code to perform a REST callout to an external system. A REST callout is a way of sending an HTTP request to a service endpoint and receiving a response. A REST callout can be synchronous or asynchronous, depending on whether the Apex code waits for the response before continuing the execution. A synchronous callout is suitable for scenarios where the response is needed immediately, such as order fulfillment1. An Apex proxy class is a class that is generated from a WSDL (Web Service Description Language) document of an external SOAP web service. An Apex proxy class can be used to make a SOAP callout to the external web service, but not a REST callout. A SOAP callout is another way of sending an HTTP request to a service endpoint and receiving a response, but it uses a different format and protocol than REST2. Process Builder is a declarative tool that allows you to automate business processes by defining criteria and actions. Process Builder can invoke an Apex class that implements the Process.Plugin interface, which allows you to extend the functionality of Process Builder with custom logic. However, Process Builder does not support synchronous callouts, because it runs in the background and does not wait for the response from the external system. Process Builder only supports asynchronous callouts, which are executed after the transaction is committed3. Batch Apex is a way of processing large volumes of data asynchronously by breaking them into smaller batches of records. Batch Apex can be used to perform complex or long-running operations on data, such as data cleansing, archiving, or integration. Batch Apex can make callouts to external systems by implementing the Database.AllowsCallouts interface in the batch class. However, Batch Apex is not suitable for scenarios where the callout needs to be synchronous, because it runs in the background and does not wait for the response from the external system. Batch Apex also has some limitations, such as the maximum number of batches in the queue, the maximum number of records per batch, and the maximum number of callouts per batch4. A Lightning Component is a reusable unit of user interface that can be used to build modern web apps with Salesforce. A Lightning Component can make a callout to an external system by using JavaScript code or by invoking an Apex controller class that contains the logic for the callout. A Lightning Component can make a synchronous or asynchronous callout, depending on whether the JavaScript code or Apex code waits for the response before continuing the execution. However, a Lightning Component is not a good choice for scenarios where the callout needs to be triggered by a record change, such as when an opportunity is closed/won. A Lightning Component requires user interaction, such as clicking a button or loading a page, to initiate the callout5. Therefore, the correct answer is A, because writing a trigger that invokes an Apex class to make a REST callout to the Order Management System is the only option that satisfies the requirements of making a synchronous callout when an opportunity is closed/won. References: 1: Callouts From Triggers | Apex Developer Guide | Salesforce Developers 2: Generate an Apex Class from a WSDL | Apex Developer Guide | Salesforce Developers 3: Invoking Apex from Process Builder | Process Automation Developer Guide | Salesforce Developers 4: Using Batch Apex | Apex Developer Guide | Salesforce Developers 5: Make HTTP Requests from JavaScript Code in Lightning Components | Lightning Aura Components Developer Guide | Salesforce Developers
Question 39
Sales representatives at Universal Containers (UC) use Salesforce Sales Cloud as their primary CRM. UC owns a legacy homegrown application that stores a copy of customer dataas well. Sales representatives may edit or update Contact records in Salesforce if there is a change. Both Salesforce and the homegrown application should be kept synchronized for consistency. UC has these requirements: 1. When a Contact record in Salesforce is updated, the external homegrown application should be 2. The synchronization should be event driven. 3. The integration should be asynchronous. Which option should an architect recommend to satisfy the requirements?
Correct Answer: B
Explanation Leverage Change Data Capture to track changes to the Contact object and write a CometD subscriber on the homegrown application. This solution meets the requirements of keeping Salesforce and the homegrown application synchronized for consistency, using event-driven and asynchronous integration. Change Data Capture is a feature that allows you to receive near real-time notifications of changes to Salesforce records, such as inserts, updates, deletes, and undeletes. You can use Change Data Capture to track changes to the Contact object, and publish them as events to an event bus. CometD is a protocol that allows you to subscribe to events from the event bus using a streaming API. You can write a CometD subscriber on the homegrown application, and use it to receive the events and update the customer data accordingly. References: Certification - Integration Architect - Trailhead, [Change Data Capture Developer Guide], [Streaming API Developer Guide]
Question 40
A new Salesforce program has the following high-level abstract requirement: Business processes executed on Salesforce require data updates between their Internal systems and Salesforce. Which relevant detail should an integration architect seek to specifically solve for integration architecture needs of the program?
Correct Answer: C
Explanation Timing aspects, real-time/near real-time (synchronous or asynchronous), batch and update frequency are relevant details that an integration architect should seek to specifically solve for integration architecture needs of the program. These details help to determine the appropriate integration pattern, technology, and solution for the business requirements. Core functional and non-functional requirements for User Experience design, Encryption needs, Community and license choices are important for the overall program design, but not specific to the integration architecture needs. Integration skills, SME availability, and Program Governance details are also important for the program execution, but not specific to the integration architecture needs.