How to Integrate Salesforce and SAP using BRF Integrator.
- Angelo Buss
- Apr 1
- 3 min read
Updated: May 28
Integrating systems can be challenging, especially when dealing with robust platforms like SAP Business One Cloud and Salesforce.com. This article will show you how you can connect these two tools, creating an automated, secure, and scalable workflow using BRF Integrator and Heroku.
Integration Overview
The goal is to allow the SAP data to be consumed in real time from Salesforce, in a secure and stable manner, respecting SAP security restrictions.
To achieve this, dividing the integration into three main layers allows for better organization and maintainability:
Salesforce: responsible for triggering requests.
BRF Integrator and Heroku: responsible for consuming SAP and returning data to Salesforce.
SAP Business One: source system accessed via REST endpoints.
How Integration Works
1. Automation in Salesforce
Every request to SAP begins within Salesforce. To do this, use a combination of native features of the Apex language and the Lightning platform:
Schedulable: interface that allows the creation of scheduled jobs, which define the time and frequency of an automation. In this case, we will use it to schedule our queries to SAP.
Queueable: interface that allows asynchronous processing in a queue, great for chaining and increasing execution limits, ensuring greater performance.
Named Credentials: used to securely store the authentication data needed to communicate with the middleware, and consequently SAP.
HTTP Class: Apex class that allows HTTP calls to be made using the REST architectural standard. In this case, using the JSON format to communicate with SAP.
private HttpResponse sendRequest() {
HttpRequest req = new HttpRequest();
req.setEndpoint('callout:your_named_credential_here/params_here');
req.setMethod('GET');
req.setHeader('Content-Type', 'application/json');
req.setTimeout(10000);
Http http = new Http();
HttpResponse res;
try {
res = http.send(req);
if (res.getStatusCode() == 200) {
return res;
} else {
throw new CalloutException('Error message here');
}
} catch (CalloutException e) {
throw e;
}
}
Your Apex HTTP request might look something like this.
2. Midleware BRF Integrator hosted on Heroku
The proposed Middleware is the BRF Integrator with Python, a great programming language to develop quickly and efficiently. And when it comes to building APIs securely and easily, FastAPI is the key - it’s the framework behind this article.
The implementation of this API aims to:
Receive requests from Salesforce;
Handle session expiration scenarios;
Connect to SAP using a fixed IP;
Make requests to SAP REST endpoints;
Return SAP data to Salesforce in a standardized format;
@router.get("/{id}/", response_model=schemas.ItemsResponseModel)
async def get_product_by_id(
id: str = Path(..., min_length=1),
cookie: str = Header(None),
select: str = Query(None, alias="select")
):
utils.validate_cookies(cookie)
query_params = {}
if select:
query_params["$select"] = select
base_url = f"{settings.sap_endpoint}/Items('{id}')"
full_url = utils.build_url(base_url, query_params)
response = None
try:
response = requests.get(
full_url,
headers=utils.build_headers(cookie),
proxies=proxies,
timeout=30,
verify=settings.verify_ssl
)
if response.status_code == 200:
data = response.json()
return {"objects": [data]}
else:
utils.handle_status_code_error(response)
except Exception as e:
utils.handle_request_exception(e, response)
Sample FastAPI endpoint.
What is the best way to host and maintain logic that requests to SAP? The answer is Heroku.
Heroku is a platform as a service (PaaS) that allows you to host applications quickly and easily, without the need to manage infrastructure.
It offers native integration with Salesforce, automatic scalability, ease of deploying applications in different languages, and access to essential add-ons.

3. Connect to SAP
SAP provides several integration services, one of which is the Service Layer — a RESTful API based on the OData protocol that allows you to interact with SAP data in a standardized and secure way.

Additionally, it requires that all requests come from a whitelisted IP address. To meet this requirement, we use QuotaGuard Shield — a proxy service that offers static IPs and perfectly integrates with Heroku.
QuotaGuard also provides a comprehensive dashboard for traffic monitoring. Through this dashboard, we can track, in real time, the number of requests made and the amount of data transferred, including details such as date, time, and request origin.


Conclusion
BRF Integrator enables Salesforce to ingest data from SAP in an automated, secure, and efficient manner, using a combination of Salesforce resources, the Heroku cloud, and the QuotaGuard Shield service to ensure fixed IP communication. This integration allows Salesforce to query and manipulate SAP data in real time, respecting all security and infrastructure requirements of both systems.
BRF Consulting can help your business continue to grow and be more efficient. Feel free to reach us at contact@brfconsulting.com
About the author: Gabriel Pereira Azevedo is a Salesforce Engineer at BRF Consulting, a Salesforce ISV partner specialized on Application Development and Data Engineering.
Angelo Buss is founder of BRF Consulting and the BRF Integrator.
Comments