Integration Architect – Evaluate Current System Landscape
Measure Performance for Your Salesforce Org
-
Plan your performance test and identify key personas
- Visualize current and future features
- Calculate the RPS (Requests per Second) – this includes inbound XMLHttpRequest(XHRs) and API calls
- Estimate the size and shape of your data (accounts, users, feeds, groups, and other objects)
- Include complex relationshps between your objects, role hierarchies, and sharing rules
-
Set Up and Run Performance Tests
- Add an EPT (Experienced Page Time) Counter to the header of your app
- Use the Lightning Usage App to view page and browser performance
- Build a custom report using Lightning Usage App objects
- Use the Event Monitoring Analytics App to monitor performance with event types
Inheriting a Mature Org
Collect All The Data
- Assess Sharing Settings
- How many licenses and types are being purchased?
- How much storage is used?
- How many accounts, opportunities, etc are created?
- Assess Public Groups
- Assess Roles
- Assess Queues
- What edition are you on?
- Do you leverage Fiscal Year, Holidays, Business Hours?
- Do you leverage currency management?
- Assess Users
- Assess Permission Sets
- Find any 3rd party users by running a user report for email addresses that do not include the company domain
- Assess record types and page layouts in each object
- Find any 3rd party users by running a user report for email addresses that do not include the company domain
- Assess various record types and page layouts in each object
- Assess objects – how many and correlation
- What customizable user interface themes are being used
- Assess scheduled jobs
- Assess List Views in each tab
- Assess reports and dashboards
- Assess validation rules in each object
- Lightning Apps
- Org wide default settings
- Assess profiles
- Assess 3rd party apps downloaded
- Assess Workflows
Review Installed Apps and Integrations
Prepare for Lightning if Needed
- Check out Lightning Features
- Use the Lightning Experience Migration Assistant
Quick Wins
- Simplicity/Scalability
- Only use needed fields
- Optimize page layouts
- Automation
- Automate manual tasks (like things that use spreadsheets)
- Communication
- Review logins rates
- User adoption
- User feedback
- Check in with Salesforce Advocates
- Public Roadmap
Salesforce Optimizer
Use Salesforce Optimizer to:
– Perform proactive maintenance
– Perform cleanup
– Improve user experience
– Migrate to Lightning Experience
Its primary benefits:
- Maintain customizations
- Decrease business and techinical debt
- Increase productivity
- Drive Salesforce usage
It can be accessed by searching in Salesforce Setup
Salesforce to Salesforce
What can it do?
Connected orgs do not have direct access – they have a record in their org that reflects your record. Changes are synced back and forth.
- Forward records to another salesforce organization
- Accept records forwarded from a connected organization
- Use criteria for automatically accepted related records (if you accept a parent record related or child records are automatically accepted)
Reporting
- Track survey responses
- Track connection activity
- Track connection information for published or subscribed objects
- Custom Report type view records shared with multiple connections
- View shared leads deleted by a connected organization
Fun Facts
- To stop sharing a record select Stop Sharing in the External Sharing related list
- To stop sharing case comments or attachments you must make the records private
- An opportunity product is related to both opportunity and product records and can only be shared as a child record of a shared opportunity
- Case comments can be shared as a child record of a case
- Use connection history to identify errors when accepting a record
- A related record will no longer be a shared with a connection if the related record is edited from an unshared record
- Maximum of 100 tasks per related record can be shared (this includes both open and closed)
- Because updates to shared records are processed asynchronously and retried they don’t appear in the connected org right away
- If you are accepting large amounts enable auto accept
- You can create auto assignments for cases and leads by setting the following
- Received Connection Name contains name of connection
- Created By contains Connection User
Status of Shared Record | Description |
Active (sent) | The record has been forwarded to and accepted by an external organization. |
Active (received) | The record has been sent to you from an external organization, and it has been accepted. |
Pending (sent) | The record was forwarded to but not yet accepted by an external organization. |
Inactive | The record is no longer shared with an external organization. |
Inactive (deleted) | The record was accepted by an external organization, but that organization has deleted the record. |
Inactived (converted) | The record is a lead that was accepted by an external organization and converted into an opportunity by that organization. When a lead is converted, Salesforce to Salesforce inactivates the shared record so that it is no longer updated in the subscribing connection. |
Integration Architecture for the Salesforce Platform
- Integration Architecture Aligns the Business Strategy with Technical Capabilities
- The Integration Architecture supports a Mix of Batch Processing and Real-time Services Middleware
- The Integration Architecture is Based Upon Business Service Level Agreements (SLAs)
- The Integration Architecture Has a Clearly Defined Standard for Applying Different Integration Use Cases
Cloud-to-Ground (Salesforce Platform Originated)
-
- Salesforce originated message is relayed to a DMZ (Demilitarized Zone) service end point. This can be a firewall, a services gateway appliance or a reverse proxy. This is where much of the security authentication occurs (Whitelisted IPs, two-way SSL, and basic HTTP authentication)
- The message is relayed from the DMZ to the On-Premise Infrastructure (Usually destined for a ESB – Enterprise Service Bus)
- ESB may be pushing to the SOA infrastructure. If you do not have have a SOA layer you may need to integrate directly in to the legacy application
- On-Premise database access may be needed. In a Cloud-to-Ground scenario this transaction would be a database READ.
Ground-to-Cloud
-
- Mature Integration Architecture handles real-time calls into Salesforce from the ESB. If you do not have an ESB, this occurs from each separate application
- Recommened to use a centralized integration middleware (You can use oAtuh or user/pw session based authentication to Salesforce)
- Many can be handled in batch design (Recommend a robust ETL solution for all Salesforce environments)
- Off-load Salesforce data into a replicate copy to protect against losing data to user error, bad-code, or run-away processes.
- The ETL is responsible for moving data in and out of our database.
- Mature Integration Architecture handles real-time calls into Salesforce from the ESB. If you do not have an ESB, this occurs from each separate application
Cloud-to-Cloud
-
- Can use Salesforce to Salesforce or RESTful web services
- Avoid using Apex as your primary integration technology and utilize middleware if possible
- Also consider Integration-as-a-Service package
- Cloud service bus can handle service mediation, transformation, routing, error handling
- The cost of resiliant ESBs can be high. If your service levels must go through your on-premise technology you may end of piggy-backing on the same technical infratracture, cost, service levels and release timeline.