Salesforce Certified Integration Architecture Designer
- August 7, 2020August 12, 2020
- by Yuval Vardi
Summary and notes of the entire study guide for this exam. This post has extracted some texts and links from the web to centralise the material into one page.
About the Exam
- Content: 60 multiple-choice/multiple-select questions
- Time allotted to complete the exam: 105 minutes
- Passing score: 67%
- Exam Guide
Exam Outline
Category | Counts | Trailhead Links |
Salesforce Integration Capabilities | 28% | |
Salesforce Integration Patterns | 17% | |
Enterprise Integration Architecture Concepts | 15% | |
Salesforce Integration Testing | 10% | |
Integrating with Salesforce Security | 15% | |
Tools | 10% | |
Monitoring | 5% |
Finally
Glossary
-
REST –
Re
presentationalS
tateT
ransfer is a style of software architecture for distributed hypermedia systems.- TLS –
T
ransportL
ayerS
ecurity – Cryptographic protocol that provides end-to-end security of data sent between applications over the Internet. It is an updated, more secure, version of SSL. - SSL –
S
ecureS
ocketsL
ayer – Securing the data in transit. It ensures that user communication cannot be intercepted by malicious third party on the network, by authenticating the server to the client and vice-versa.
- TLS –
-
SOAP –
S
impleO
bjectA
ccessP
rotocol, an application layer protocol used to exchange structured information between systems.-
TCP –
T
ransmissionC
ontrolP
rotocol, a connection-oriented protocol -
UDP –
U
serD
atagramP
rotocol, connectionless Internet protocol. -
WSDL –
W
ebS
ervicesD
escriptionL
anguage, an XML format for describing network services as set of endpoints operating on messages containing either document-oriented or procedure-oriented information.
-
TCP –
-
HTTP –
H
yperT
extT
ransferP
rotocol – It is the foundation protocol of any data exchange on the Web and it is a client-server protocol, which means requests are initiated by the recipient, usually the Web browser. Allowing fetching of resources, such as HTML documents. -
HTTPS –
H
yperT
extT
ransferP
rotocolS
ecure – appears in the URL when a website is secured by an SSL certificate. -
JSON –
J
avaS
criptO
bjectN
otation :- Is a lightweight and text-based format.
- Supports with UTF-8 and date-time information in ISO8601 format.
- JSON is built on two structures: objects and arrays.
-
JSON objects are unordered collection of name-value pairs enclosed in
{ }
. -
A JSON array is a list of JSON values enclosed in
[ ]
.
-
XML – e
X
tensibleM
arkupL
anguage – Was designed to store and transport data in a standardised format. - Job– An Object through which a set of records is processed.
- Batch– A Set of records sent to the server in an HTTP POST request.
- Rest Explorer / Workbench – Utility that helps to perform all supported restful actions such as Get, Post, Patch.
Salesforce Integration Capabilities : 28%
Exam Summary
- In a given scenario, recommend when to use API-based integrations, such as SOAP, REST, Bulk, Streaming, Canvas, Workflow outbound, APEX (Callouts, @ future, etc.), and Lightning Connect to achieve business requirements.
- Compare and contrast the advantages and drawbacks (design trade-offs) of using API-based integrations such as SOAP, REST, Bulk, Streaming, Canvas, Workflow outbound, APEX (Callouts, @future, etc.), and Lightning Connect.
We can start by looking on the Salesforce Capabilities Map below:
- The categories above match up to the Model-View-Controller pattern.
- In the shaded areas, you see examples of how Salesforce features fit into this pattern depending on whether they are part of the declarative or programmatic framework.
- APIs – Provide Programmatic access to Salesforce data and business processes.
- Built-in Declarative tools – Provide point and click integration mechanism.
- Tools and toolkits – Enhance integration with other systems using built-in tools and frameworks.
Integration Characteristics
Point to Point
Each System is connected to every other system through a direct integration.
-
- Easy to implement with only a few systems
- Difficult to scale
Hub and Spoke
Every System connects to the hub.
- All data transfer is done through the hub.
- Easy to Design and implement
- Architectures are proprietary in nature.
- Single point of failure
- Inability to support large transactions volumes
Enterprise Service Bus (ESB)
Distributed services architecture
-
- Employs distributed adapters
- Highly scalable
Explore the Salesforce API’s
SOAP API
Salesforce provides programmatic access to your org’s information using simple, powerful, and secure application programming interfaces.
- Uses XML message format and relies on another transfer protocol (like HTTP) for transmission.
Use the API for:
- Data Loading and Integration
- Data Replication – The API supports data replication, which allows you to store and maintain an external, separate copy of your organization’s pertinent Salesforce data for specialized uses, such as data warehousing, data mining, custom reporting, analytics, and integration with other applications.
When integrating using the SOAP API there are two different options for setting the Salesforce Schema and available methods using the WSDL.
-
Enterprise WSDL
- Strongly typed.
- Tied (bound) to a specific configuration of Salesforce (ie. a specific organization’s Salesforce configuration).
- Will display changes if custom fields or objects are added to an organization’s Salesforce configuration.
For the reasons outlined above, the Enterprise WSDL is intended primarily for Customers.
-
Partner WSDL
- Loosely typed.
- Useful to reflect against/interrogate any configuration of Salesforce (ie. any organization’s Salesforce configuration).
- Static, and hence does not change if modifications are made to an organization’s Salesforce configuration.
Metadata API
Where the SOAP API is oriented around accessing data and manipulating records, the Metadata API’s focus – as its name implies – is metadata. So it gives you an API to manipulate layouts, Visualforce pages, Apex triggers and classes – pretty much everything you can do to your org from the browser interface you can also do from the Metadata API.
Salesforce REST based APIs:
REST API
- REST API provides a powerful, convenient, and simple Web services API for interacting with Lightning Platform.
- Provides access to Salesforce data and business logic.
- It’s lightweight making it ideal for integration with mobile devices.
- Uses REST, HTTP, JSON, and also supports XML (optionally)
- REST API requires the TLS protocol.
Chatter API
- Enables integration with Salesforce Chatter to mobile apps, intranet sites, and third-party web applications. Using Connect REST API. Responses are localized, structured for presentation, and can be filtered to contain only what the app needs.
- Provides programmatic access to chatter feeds, files, recommendations, topics, notifications and social data.
-
Use Chatter API to build:
- Social applications for mobile devices
- Highly interactive websites.
- An integrations from Salesforce Chatter into other applications.
Streaming API
Expose a near real-time stream of data from the force.com platform.
Notifications can be sent to :
- Pages in Salesforce Applications
- Applications servers outside of Salesforce
- External Clients
Best to use for:
- Applications that need to poll against Salesforce data frequently.
- Long Polling – The process thats emulates an information push from server to a keep the connection active.
Can be achieved using:
- Bayeux Protocol – Transports messages asynchronously over HTTP
- CometD – a scalable HTTP-based event routing bus, that uses Comet to implement the Bayeux protocol.
Tools and Mechanism:
- Platform Events
- Change Data Capture
-
PushTopic – is a Record that triggered by event (create,
update, delete, undelete):
- Defines a channel
- Determines what events will cause notification
- Describe the data the notification contains.
-
Api Channel name will always be
topic/topicName
(case sensitive).
PushTopic pushTopic = new PushTopic(); pushTopic.Name = 'InvoiceStatementUpdates'; pushTopic.Query = 'SELECT Id, Name, Status__c, Description__c FROM Invoice_Statement__c'; pushTopic.ApiVersion = 49.0; pushTopic.NotifyForOperationCreate = true; pushTopic.NotifyForOperationUpdate = true; pushTopic.NotifyForOperationUndelete = true; pushTopic.NotifyForOperationDelete = true; pushTopic.NotifyForFields = 'Referenced'; insert pushTopic;
-
-
Code breakdown:
- Construct a new PushTopic object
- Specify a name for the PushTopic
- Specify a SOQL query
- Optionally specify values for the PushTopic fields
- Insert a PushTopic in database
Notes :
-
NotifyForOperation
– defines the type of event that may generate notifications. - The query defines the type of record that can generate the event.
- Updates performed by the Bulk API won’t generate notifications, since updates could flood a channel.
-
NotifyForFields
– specify the fields that should be checked.-
All
– Notifications are generated for all record fields changes, provided the evaluated records match the criteria specified in the WHERE clause. – Avoid setting to this option unless it is necessary. -
Referenced
(default) – will use both theSELECT
clause and theWHERE
clause to generate a notification – all and only referenced fields in query will be evaluated and tracked. -
Select
– Only changes to the referenced fields in the'SELECT'
clause are evaluated to generate notifications. -
Where
– Only once a record meet the criteria in the'WHERE'
part of the query – notifications will be generated.
-
Special Permissions :
- Read Access to the Object
-
Field Level Security for each of the referenced fields in the
WHERE
clause. - Access based on sharing rules to the modified record.
Unsupported notes:
- Queries without Id specified in the Select clause.
- Queries with relationships / join fields.
-
Code breakdown:
Bulk API
Bulk API is based on REST principles and is an Asynchronous API to work with high volumes of data.
- Use the Bulk API for more the 50,000 records or for time-sensitive loads that can take advantage of very large batches.
- Increases stability, monitoring, and control of high-volume data loads.
- You can use the Bulk API to process jobs either in serial mode or in parallel mode. Processing batches serially means running them one after another (Slower but safer for lock contention), and processing batches in parallel means running multiple batches at the same time. (Much faster)
-
When you create a bulk job, By default it will be marked to retry to run Unfinished batches in this job. the Batch Retry request header
Sforce-Disable-Batch-Retry
lets you disable retries for unfinished batches included in the job. Use this header to limit the batch processing time for batches that consistently time out.
Avoid Lock Contention – A Situation in which once
process tries to acquire a loc help by another process.
- Organizing data in batches
- Can be caused when creating new Users, changing ownership of records. updating roles or territories.
Tooling API
Use Tooling API to build custom development tools or apps for Lightning Platform applications. Tooling API’s SOQL capabilities for many metadata types allow you to retrieve smaller pieces of metadata. Smaller retrieves improve performance, which makes Tooling API a better fit for developing interactive applications.Tooling API provides SOAP and REST interfaces.
Built-in Declarative tools for integration in Salesforce
Salesforce Change Data Capture
Receive near-real-time changes of Salesforce records, and synchronize corresponding records in an external data store.
Use CDC to :
- Receive notifications of Salesforce record changes, including create, update, delete, and undelete operations.
- Capture all field changes for all records.
- Get information about the change in the event header, such as the origin of the change, so you can ignore changes that your client generates.
- Subscribe to mass changes in a scalable way.
With External Change Data Capture, you can track changes to data that is stored outside your Salesforce org when using the Odata 4.0 adapter. You can then build automation in response to the changes to increase productivity or provide a better customer experience.
Salesforce Connect
- Salesforce Connect provides seamless integration of data across system boundaries by letting your users view, search, and modify data that’s stored outside your Salesforce org.
- Salesforce Connect maps Salesforce external objects to data tables in external systems.
- Instead of copying the data into your org, Salesforce Connect accesses the data on demand and in real time.
When to Use :
- When you have a large amount of data that you don’t want to copy into your Salesforce org.
- You need small amounts of data at any one time.
- You want real-time access to the latest data.
- Archiving Salesforce Data and still need acces to it
- Search against external data
Cross-Org Adapter for Salesforce Connect
- Connecting the data across your Salesforce orgs and display as External Objects.
- Create interactions between the orgs using a REST API call.
Salesforce to Salesforce
Salesforce to Salesforce makes it easy for businesses using Salesforce to share records and get updated data on shared records across customer orgs.
- You can see all of your sharing activity, manage your entire pipeline, share data across multi-tiered partnerships, and integrate your business processes with updates received from your partners using workflow and assignment rules.
External Services
Enhanced External Services allows you to invoke an externally hosted REST service in a declarative manner (no code required).
Point and Click based integration from Lightning Flow
This feature is best used when the following conditions are met:
- The externally hosted service is a RESTful service and the definitions are available in an OpenAPI 2.0 JSON schema format.
- The request and response definitions contain primitive data types such as boolean, datetime, double, integer, string, or an array of primitive data types. Nested object types, and send parameters such as headers within the HTTP requests are supported.
- The transaction can be invoked from a Lightning Flow.
- The integration transaction doesn’t risk exceeding the synchronous Apex governor limits.
Process-driven platform events
Platform events are event messages (or notifications) that your apps send and receive to take further action. Platform events simplify the process of communicating changes and responding to them without writing complex logic. One or more subscribers can listen to the same event and carry out actions.
- Allow Guaranteed order of execution – Events are published in the Same order they occured
- Allow automatic retry.
Workflow-driven outbound messaging
Salesforce provides a workflow-driven outbound messaging capability that allows sending SOAP messages to remote systems triggered by an insert or update operation in Salesforce. These messages are sent asynchronously and are independent of the Salesforce user interface.
- Outbound messaging is a declarative mechanism that can be configured to send asynchronous notifications which are fired based on workflow rules and approval processes.
- Allows you to specify that changes to fields within Salesforce can cause messages with field values to be sent to designated external servers.
-
It uses the
notifications()
call to send SOAP messages over HTTP(S) to a designated endpoint when triggered by a workflow rule. - A Single SOAP message can include up to 100 notifications.
- Messages are queued until they are sent – so they may be delivered out of order.
- Audit trails cannot be created using outbound messages.
- Use 2-way TLS for verification of outbound messaging integrations.
-
Special Permissions :
-
User access – The User that is specified on the “User
to send as” field should have :
- Read field level access
- In case you wish to include encrypted fields, the user would also need the “View Encrypted Data” checked (true).
- Send Outbound Messages – To stop callback from sending another outbound message, make sure the user you specify on the “User to send as” has the permission unchecked (false).
-
User access – The User that is specified on the “User
to send as” field should have :
Salesforce Tools and toolkits
APEX Toolkit to perform Callouts
An Apex callout enables you to tightly integrate your Apex with an external service by making a call to an external Web service or sending a HTTP request from Apex code and then receiving the response. Apex provides integration with Web services that utilize SOAP and WSDL, or HTTP services (RESTful services).
To perform callout in Salesforce we would use one of the following to “white list” the endpoints we will interact with:
-
Remote Site Settings:
- Before any Apex callout can call an external site, that site must be registered in the Remote Site Settings page, or the callout fails. Salesforce prevents calls to unauthorized network addresses.
-
Named Credentials
- Named Credentials are a safe, secure and maintainable way of storing authentication data for external services called from your apex code such as authentication tokens.
- They allow an easy control for the Identity Type of access to the external system Anonymous, Named Pricipal, Per User .
- Users with customize application permission can view named credentials.
Custom Apex Controller
A Custom Controller is an Apex class that uses the default, no-argument constructor for the outer, top-level class.
-
Can be used if for example a button on a visualforce page initiates an Apex HTTP callout in a synchronous manner.
Asynchronous Apex
Apex Annotations-
A future method runs in the background, asynchronously. You can call a future method for executing long-running operations, such as callouts to external Web services or any operation you’d like to run in its own thread, on its own time.
When and how to use:
-
To allow callouts in a future method, specify
(
callout=true
). The default is (callout=false
), which prevents a method from making callouts. - Use when you have a long running method and need to prevent delaying Apex transaction
- When you make callouts to external Web services
- To segregate DML operations and bypass the mixed save DML error
Notes- Future Methods does not necessarily execute in the same order they called.
- Cannot be used in Visualforce controllers in either
getMethodName
orsetMethodName
methods, nor in the constructor. - A method that uses @future cannot call another method that has the future annotation.
- Cannot call a trigger from an annotated method that calls another annotated method.
-
To allow callouts in a future method, specify
(
-
When to use:
- To Start a long-running operation and get a Job ID for it
- To pass complex types to a job
- To chain jobs
Notes
- Governor limits are higher than Apex
-
- Invocable methods are called with REST API and used to invoke a single Apex method from process builders or Lightning flows.
- Invocable methods have dynamic input and output values and support describe calls.
- The invocable method must be static and public or global, and its class must be an outer class.
-
Use case
- Visualforce page might get warranty information for a certain product from a Web service. This page can be used by thousands of agents in the organization. Consequently, a hundred of those agents might click the same button to process warranty information for products at the same time. These hundred simultaneous actions exceed the limit of concurrent long-running requests of 10, but by using asynchronous callouts, the requests aren’t subjected to this limit and can be executed.
- Use when a Custom Visualforce page continues to hit the Apex Concurrent limit. Due to heavy usage and slow response time of the external web service.
- Use the Continuation class to make callouts asynchronously to a SOAP or REST Web service.
- The timeout maximum is 120 seconds.
Asynchronous callouts that are made from a Visualforce page don’t count towards the APEX limit of 10 synch requests that last longer than 5 seconds
Apex triggers
Used primarily for invocation of remote processes using Apex callouts from DML-initiated events.
- Typically, invoked from Salesforce data changes performs an Apex SOAP or HTTP callout in a synchronous manner.
- An Apex proxy class can be executed as the result of a DML operation by using an Apex trigger. However, all calls made from within the trigger context must execute asynchronously from the initiating event.
Apex batch jobs
- Large data volumes are broken into chunks and processed in queues based on available resources
-
Can be implemented through Bulk API, SOAP API and REST API to perform an
Apex SOAP or HTTP callout in a synchronous manner.
Often associated with a scheduled process - You can make calls to a remote system from a batch job. This solution allows batch remote process execution and processing of the response from the remote system in Salesforce. However, a given batch has limits to the number of calls.
When to use:
- For long-running jobs with large data volumes that need to be performed in batches, such as database maintainance jobs.
- For Jobs that need larger query results than regular transactions allow
Scheduled Apex
Allow scheduling an Apex class to run on a specific schedule
Apex SOAP Web services
Apex class methods can be exposed as custom SOAP Web service calls.
This allows an external application to invoke an Apex Web service to perform an action in Salesforce.
- Not applicable for platform events
Apex REST services
An Apex class can be exposed as REST resources mapped to specific URIs with an HTTP verb defined against it (for example, POST or GET).
- Not applicable for platform events
Apex Email Service
You can use email services to process the contents, headers, and attachments of inbound email.
Apex can be used to send emails out of Salesforce to both internal and external email addresses.
- An email servic e only processes messages it receives at one of its addresses.
- No more than 5000 emails an be sent to external email address per day.
- Salesforce calculates the limit by multiplying the number of user licenses by 1,000; maximum 1,000,000.
- Email services reject email messages and notify the sender if the email (combined body text, body HTML, and attachments) exceeds approximately 25 MB (varies depending on language and character set).
Mashups and Composite Applications
A mashup is a Web page or application that combines data or functionality from two or more sources to create a new service.
- One approach to reducing the amount of data in Salesforce is to maintain large data sets in a different application, and then make that application available to Salesforce as needed. Salesforce refers to such an arrangement as a mashup because it provides a quick, loosely coupled integration of the two applications.
- Mashups use Salesforce presentation to display Salesforce-hosted data and externally hosted data.
Examples
- Link to an external site
- Embedded page
- No passing of data to Salesforce
- No Reporting in Salesforce
Connected App
- A connected app is a framework that enables an external application to integrate with Salesforce using APIs and standard protocols, such as Security Assertion Markup Language (SAML), OAuth, and OpenID Connect.
- Connected apps use these protocols to authorize, authenticate, and provide single sign-on (SSO) for external apps.
- Admins can set security policies to control what data the third-party app can access from your org or who can use the third-party app.
Canvas
Canvas enables you to easily integrate a third-party web application in Salesforce.
It’s a Platform service to allow external applications to be easily and securely integrated into Salesforce from their native environment with little re-design.
- Canvas is a set of tools and JavaScript APIs that you can use to expose an application as a canvas app.
- Provides an Ajax based Javascript SDK – for UI integration and solves the problem of “Same origin” policy.
- Canvas app is defined within connected app framework and allows administrator to determine who can access the application.
-
Can be placed and used within:
- Chatter tab
- Visualforce Page
- Publisher action
- Salesforce Console
- Page layout (Custom or Standard Objects)
- Mobile app navigation item (aka. Salesforce1 )
- Open CTI call control tool
What is Same Origin Policy ?
- Web Standard
- Permits applications from the same domain to interact and exchange data
- Does not allow application from different domains to interact and exchange data
- Practiced to protect end user’s data
Salesforce Lightning Component/ Custom Visualforce page
Lightning component or page may initiates an Apex SOAP or REST callout in a synchronous manner.
-
- Use continuation class to avoid hitting synchronous Apex transaction governor limits.
- Salesforce enables you to consume a WSDL and generate a resulting proxy Apex class. This class provides the necessary logic to call the remote service.
- Salesforce also enables you to invoke HTTP (REST) services using standard GET, POST, PUT, and DELETE methods.
Tools
Data Loader
Data Loader is a client application for the bulk import or export of data. Use it to insert, update, delete, or export Salesforce records.
- Free app for bulk import or export of data, multiple interfaces – Wizard, batch and cli, loads CSV and JDBC sources.
MIDDLEWARE (ETL TOOLS)
- Always prefer utilizing middleware if you want to integrate salesforce with multiple system.
- When there is a need to extract and transform data from salesforce and then to send it to external system, then middleware is best option.
- Middleware helps in Orchestration, Error handling and logging.
Salesforce Integration Patterns : 17%
Exam Summary
- Provided an integration scenario, describe requirements and issues that the Architect must consider to select the right pattern (Layer, Timing, Direction, and Volume).
- In a customer scenario containing business requirements, summarize which implementation pattern will achieve those goals.
- Compare and contrast the advantages and drawbacks (design trade-offs) of using various patterns, such as Remote Process Invocation—Request and Reply, Remote Process Invocation—Fire and Forget, Batch Data Synchronization, Remote Call-In, and UI Update Based on Data Changes.
How to Choose the Right Integration Approach ?
Analyse The Source and Target Systems
- Which system is initiating the Integration and which System(s) are Integrated with the Source?
- Does the System guarantee delivery? What if it’s down?
- Does the external system require or follow a Salesforce contract / WSDL ?
Level or Type of Integration
- Is the Integration at the Presentation, Business Process, or Data Layer?
Data Volume / Message Size
- What is the Projected Amount of Data / Transactions Across the Systems?
Timing - Synchronous Vs. Asynchronous
Do you need to perform anything immediately with a given response ?
- Synchronous – Is the Source waiting for a (near Real-time) Response?
- Asynchronous – Does the Source initiate the request and then continue processing? (The result(s) are sent or retrieved at a later time.)
Declarative vs. Customization
Writing code always leads into maintainance, hence Declarative option will always be preferred.
Integration Patterns
Remote Process Invocation—Request and Reply
Context
Org is using Sales cloud and after the order details are captured in Salesforce, the order is created in the remote system, which manages the order to conclusion.
Salesforce makes a call to a remote system, passes in required information and waits for successful completion of the call
Salesforce will perform additional processing based on the response from the remote system (e.g. update an external Id)
When to apply this pattern
- Salesforce is required to wait for a response before continuing processing
- The processing of the response is part of the same transaction as the remote call
- Relatively small message sizes (Max 3MB)
- Triggered as part of a business process (e.g. button click) rather than a data event
Solutions
- External Services – Best – no code required
- Custom Component / Button on a Page – Best – A user-initiated action on a Visualforce page or Lightning page then calls an Apex controller action that then executes this proxy Apex class to perform the remote call.
- A trigger – Suboptimal – calls made from within the trigger context must execute asynchronously from the initiating event. Therefore, this solution isn’t recommended for this integration problem.
- A batch Apex job – Suboptimal – batch has limits to the number of calls.
Remote Process Invocation—Fire and Forget
Context
After the order details are captured in Salesforce, an order must be created in the remote system, which manages the order through to its conclusion.
When you implement this pattern, Salesforce calls the remote system to create the order, but doesn’t wait for the call’s successful completion. The remote system can optionally update Salesforce with the new order number and status in a separate transaction.
When to apply this pattern
- Salesforce is not required to wait for a response before continuing processing
- Relatively small message sizes
- Triggered as part of a data event (e.g. insert or update)
Solutions
- Process-driven platform events – Best
- Workflow-driven outbound messaging – Good
- Customization-driven platform events – Good
- Outbound messaging and callbacks – Good
- Custom Lightning component or Visualforce page that initiates an Apex SOAP or HTTP asynchronous callout – Suboptimal
- Trigger that’s invoked from Salesforce data changes performs an Apex SOAP or HTTP asynchronous callout – Suboptimal
- Batch Apex job that performs an Apex SOAP or HTTP asynchronous callout – Suboptimal
No customization in Salesforce will always be prefered.
Batch Data Synchronization
Context
You’re moving your CRM implementation to Salesforce. Migrating Large data volume of records.
When to apply this pattern
- Synchronization is not process or event driven but is usually scheduled
- The data needs to be stored in Salesforce or remote system (e.g. for reporting)
- The data supports primary business purposes (e.g. accounts, contacts)
How do you import data into Salesforce and export data out of Salesforce, taking into consideration that these imports and exports can interfere with end-user operations during business hours, and involve large amounts of data?
Solutions
- Salesforce Change Data Capture – Best
- Replication via third-party ETL tool Using the BULK API – Best
- Replication via third-party ETL tool Using SOAP API – Good
- Remote call-in – Suboptimal
- Remote process invocation – Suboptimal
Remote Call-In to Salesforce
Context
You use Sales cloud, But Orders are managed by an external (remote) system. That remote system needs to update the order status in Salesforce as the order passes through its processing stages.
When to apply this pattern
- Does the remote system need to wait for a response before continuing processing? (i.e. request-reply)
- The format of the message is SOAP or REST, both over HTTP
- Transaction processing required.
How does a remote system connect and authenticate with Salesforce to notify Salesforce about external events, create records, and update existing records?
Solutions
- SOAP API – Best
- REST API – Best
- Bulk API – Optimal for bulk operations
- Apex SOAP Web services – Suboptimal
- Apex REST services – Suboptimal
UI Update Based on Data Changes
Context
You use Salesforce to manage customer cases. A customer service rep is on the phone with a customer working on a case. The customer makes a payment, and the customer service rep needs to see a real-time update in Salesforce from the payment processing application, indicating that the customer has successfully paid the order’s outstanding amount.
When to apply this pattern
- The requirement is to have Real time UI updates when data changes
When an event occurs in Salesforce, how can the user be notified in the Salesforce user interface without having to refresh their screen and potentially losing work?
Solutions
- Streaming API – Best
Data Virtualization / Mash-Ups
Context
Orders are managed by an external (remote) system. But sales reps want to view and update real-time order information in Salesforce without having to learn or use the external system.
We want Data from a remote system to be displayed in Salesforce along side data stored in Salesforce without having to copy the data over.
When to apply this pattern
- Does the data from the remote system need to displayed in Salesforce but not copied over?
- The amount of data being displayed is small in size and contextual in nature e.g. Order Details for an Account
- The requirement is to integrate already built web applications, developed in other technologies and hosted in other locations, directly into the Salesforce user interface.
In Salesforce, how do you view, search, and modify data that’s stored outside of Salesforce, without moving the data from the external system into Salesforce?
Solutions
- Salesforce Connect – Best
- Request and Reply – Suboptimal
- Force.com Canvas – Suboptimal
Enterprise Integration Architecture Concepts : 15%
Exam Summary
- Given a customer scenario containing business requirements for integrating Salesforce with other enterprise back-office systems, recommend the appropriate integration architecture.
- Analyze and determine when and where to use data cleaning, standardization, deduplication, and data transformation as part of data integration.
- Analyze and determine the various considerations while performing data migration (including but not limited to: platform handle bulk data load vs. SOAP data load, monitoring the data loads, and error handling).
Salesforce Integration Testing : 10%
Exam Summary
- Given a software development lifecycle scenario, determine the timing, type, and sequence of testing activities that are needed for successful implementation.
- Given an integration scenario, determine the appropriate platform capability needed to meet the testing requirements.
Integration Testing Notes
- WebServiceMock : This interface enables sending a fake response when testing web service callouts of a class auto-generated from WSDL.
-
HttpCalloutMock : This interface enables you to specify the response that’s sent in the
respond
method. Your test class instructs the Apex runtime to send this fake response by callingTest.setMock
again. - REST request : To simulate a REST request, create a RestRequest in the test method, and then set properties on the request.
Best Practices
- By default, callouts aren’t allowed after DML operations in the same transaction because DML operations result in pending uncommitted work that prevents callouts from executing.
- Sometimes, you might want to insert test data in your test method using DML before making a callout.
-
The
Test.startTest
statement must appear before theTest.setMock
statement. -
DML operations must not be part of the
Test.startTest
/Test.stopTest
block.
Integrating with Salesforce Security : 15%
Exam Summary
- Given a scenario, determine the appropriate security strategy to meet the customer requirements.
Tools : 10%
Exam Summary
- Given a scenario, determine the appropriate tools to meet the customer requirements.
- Given a scenario, analyze and recommend the appropriate tools by comparing the pros and cons to meet the business requirements.
Monitoring: 5%
Exam Summary
- Given a scenario, identify, isolate, and recommend approaches for integration challenges.
Sample Questions
Salesforce Certified Integration Architecture Designer Dump
Question were collected from the following resources: