Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

200 lines
7.2 KiB
Markdown
Raw Permalink Normal View History

2024-06-18 15:53:06 +02:00
---
title: Run the Salesforce Connector Externally
slug: /connectors/database/salesforce/yaml
---
{% connectorDetailsHeader
name="Salesforce"
stage="PROD"
platform="OpenMetadata"
availableFeatures=["Metadata"]
unavailableFeatures=["Query Usage", "Data Profiler", "Data Quality", "dbt", "Lineage", "Column-level Lineage", "Stored Procedures", "Owners", "Tags", "Sample Data"]
2024-06-18 15:53:06 +02:00
/ %}
In this section, we provide guides and references to use the Salesforce connector.
Configure and schedule Salesforce metadata and profiler workflows from the OpenMetadata UI:
- [Requirements](#requirements)
- [Metadata Ingestion](#metadata-ingestion)
- [Enable Security](#securing-salesforce-connection-with-ssl-in-openmetadata)
2024-06-18 15:53:06 +02:00
{% partial file="/v1.6/connectors/external-ingestion-deployment.md" /%}
2024-06-18 15:53:06 +02:00
## Requirements
Following are the permissions you will require to fetch the metadata from Salesforce.
**API Access**: You must have the API Enabled permission in your Salesforce organization.
**Object Permissions**: You must have read access to the Salesforce objects that you want to ingest.
### Python Requirements
{% partial file="/v1.6/connectors/python-requirements.md" /%}
2024-06-18 15:53:06 +02:00
To run the Salesforce ingestion, you will need to install:
```bash
pip3 install "openmetadata-ingestion[salesforce]"
```
## Metadata Ingestion
All connectors are defined as JSON Schemas.
[Here](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-spec/src/main/resources/json/schema/entity/services/connections/database/salesforceConnection.json)
you can find the structure to create a connection to Salesforce.
In order to create and run a Metadata Ingestion workflow, we will follow
the steps to create a YAML configuration able to connect to the source,
process the Entities if needed, and reach the OpenMetadata server.
The workflow is modeled around the following
[JSON Schema](https://github.com/open-metadata/OpenMetadata/blob/main/openmetadata-spec/src/main/resources/json/schema/metadataIngestion/workflow.json)
### 1. Define the YAML Config
This is a sample config for Salesforce:
{% codePreview %}
{% codeInfoContainer %}
#### Source Configuration - Service Connection
{% codeInfo srNumber=1 %}
**username**: Username to connect to the Salesforce. This user should have the access as defined in requirements.
{% /codeInfo %}
{% codeInfo srNumber=2 %}
**password**: Password to connect to Salesforce.
{% /codeInfo %}
{% codeInfo srNumber=4 %}
**securityToken**: Salesforce Security Token is required to access the metadata through APIs. You can checkout [this doc](https://help.salesforce.com/s/articleView?id=sf.user_security_token.htm&type=5) on how to get the security token.
{% /codeInfo %}
{% codeInfo srNumber=5 %}
**Organization ID**: Salesforce Organization ID is the unique identifier for your Salesforce identity. You can check out [this doc](https://help.salesforce.com/s/articleView?id=000385215&type=1) on how to get the your Salesforce Organization ID.
{% note %}
**Note**: You need to provide `15` digit organization id in this section. for e.g. `00DIB000004nDEq`, which you can find by following the steps mentioned in above doc (`Salesforce dashboard->Setup->Company Profile->Company Information->Salesforce.com Organization Id`).
{% /note %}
{% note %}
**Note**: If you want to access salesforce metadata without token(only by using organization id), you will need to setup your ip in trusted ip ranges. You can go (`Salesforce dashboard->Setup->Security->Network Access->Trusted IP Ranges`) to configure this. You can check [here](https://help.salesforce.com/s/articleView?id=sf.security_networkaccess.htm&type=5) to configure your ip in trusted ip ranges.
{% /note %}
{% /codeInfo %}
{% codeInfo srNumber=6 %}
2024-06-18 15:53:06 +02:00
**sobjectName**: Specify the Salesforce Object Name in case you want to ingest a specific object. If left blank, we will ingest all the Objects.
{% /codeInfo %}
{% codeInfo srNumber=7 %}
2024-06-18 15:53:06 +02:00
**salesforceApiVersion**: Follow the steps mentioned [here](https://help.salesforce.com/s/articleView?id=000386929&type=1) to get the API version. Enter the numerical value in the field, For example `42.0`.
{% /codeInfo %}
{% codeInfo srNumber=8 %}
2024-06-18 15:53:06 +02:00
**salesforceDomain**: When connecting to Salesforce, you can specify the domain to use for accessing the platform. The common domains include `login` and `test`, and you can also utilize Salesforce My Domain.
By default, the domain `login` is used for accessing Salesforce.
{% /codeInfo %}
{% partial file="/v1.6/connectors/yaml/database/source-config-def.md" /%}
2024-06-18 15:53:06 +02:00
{% partial file="/v1.6/connectors/yaml/ingestion-sink-def.md" /%}
2024-06-18 15:53:06 +02:00
{% partial file="/v1.6/connectors/yaml/workflow-config-def.md" /%}
2024-06-18 15:53:06 +02:00
#### Advanced Configuration
{% codeInfo srNumber=9 %}
2024-06-18 15:53:06 +02:00
**Connection Options (Optional)**: Enter the details for any additional connection options that can be sent to database during the connection. These details must be added as Key-Value pairs.
2024-06-18 15:53:06 +02:00
{% /codeInfo %}
{% codeInfo srNumber=10 %}
2024-06-18 15:53:06 +02:00
**Connection Arguments (Optional)**: Enter the details for any additional connection arguments such as security or protocol configs that can be sent to database during the connection. These details must be added as Key-Value pairs.
2024-06-18 15:53:06 +02:00
- In case you are using Single-Sign-On (SSO) for authentication, add the `authenticator` details in the Connection Arguments as a Key-Value pair as follows: `"authenticator" : "sso_login_url"`
{% /codeInfo %}
{% /codeInfoContainer %}
{% codeBlock fileName="filename.yaml" %}
```yaml {% isCodeBlock=true %}
source:
type: salesforce
serviceName: local_salesforce
serviceConnection:
config:
type: Salesforce
```
```yaml {% srNumber=1 %}
username: username
```
```yaml {% srNumber=2 %}
password: password
```
```yaml {% srNumber=4 %}
securityToken: securityToken
```
```yaml {% srNumber=5 %}
organizationId: organizationId
2024-06-18 15:53:06 +02:00
```
```yaml {% srNumber=6 %}
sobjectName: sobjectName
2024-06-18 15:53:06 +02:00
```
```yaml {% srNumber=7 %}
salesforceApiVersion: "42.0"
2024-06-18 15:53:06 +02:00
```
```yaml {% srNumber=8 %}
salesforceDomain: login
```
```yaml {% srNumber=9 %}
2024-06-18 15:53:06 +02:00
# connectionOptions:
# key: value
```
```yaml {% srNumber=10 %}
2024-06-18 15:53:06 +02:00
# connectionArguments:
# key: value
```
{% partial file="/v1.6/connectors/yaml/database/source-config.md" /%}
2024-06-18 15:53:06 +02:00
{% partial file="/v1.6/connectors/yaml/ingestion-sink.md" /%}
2024-06-18 15:53:06 +02:00
{% partial file="/v1.6/connectors/yaml/workflow-config.md" /%}
2024-06-18 15:53:06 +02:00
{% /codeBlock %}
{% /codePreview %}
{% partial file="/v1.6/connectors/yaml/ingestion-cli.md" /%}
## Securing Salesforce Connection with SSL in OpenMetadata
To establish secure connections between OpenMetadata and Salesforce, navigate to the Advanced Config section. Here, you can provide the CA certificate used for SSL validation by specifying the `caCertificate`. Alternatively, if both client and server require mutual authentication, you'll need to use all three parameters: `ssl_key`, `ssl_cert`, and `ssl_ca`. In this case, `ssl_cert` is used for the clients SSL certificate, `ssl_key` for the private key associated with the SSL certificate, and `ssl_ca` for the CA certificate to validate the servers certificate.
```yaml
sslConfig:
caCertificate: "/path/to/ca_certificate"
sslCertificate: "/path/to/your/ssl_cert"
sslKey: "/path/to/your/ssl_key"
```