Skip to content

Salesforce

Implementation Summary

Fidesops uses the following Salesforce endpoints to retrieve and delete Personally Identifiable Information (PII) when processing a Data Subject Request (DSR). Right to Access and Right to Delete (Right to Forget) support for each endpoint is noted below.

For more information, see the Salesforce sObject API reference.

Endpoint Right to Access Right to Delete
Query Yes No
Contact Yes Yes
Case Yes Yes
Lead Yes Yes
Account Yes Yes
CampaignMember Yes Yes

Connection Settings

Fidesops provides a Postman collection for easily establishing connections to your third party applications. Additional connection instructions may be found in the configuration guide.

Deletion requests are fulfilled by masking PII via UPDATE endpoints. To give fidesops permission to remove PII using DELETE endpoints, ensure the masking_strict variable in your fidesops.toml file is set to false.

Example Salesforce Configuration

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
saas_config:
  fides_key: salesforce_connector_example
  name: Salesforce SaaS Config
  type: salesforce
  description: A sample schema representing the Salesforce connector for Fidesops
  version: 0.0.1

  connector_params:
    - name: domain
    - name: username
    - name: password
    - name: client_id
    - name: client_secret
    - name: access_token

  client_config:
    protocol: https
    host: <domain>
    authentication:
      strategy: bearer
      configuration:
        token: <access_token>

  test_request:
    method: GET
    path: /services/data/v54.0/sobjects

  endpoints:
    - name: contact_list
      requests:
        read:
          method: GET
          path: /services/data/v54.0/query
          query_params:
            - name: q
              value: SELECT Id FROM Contact WHERE Email='<email>'
          param_values:
            - name: email
              identity: email
          data_path: records
    - name: contacts
      requests:
        read:
          method: GET
          path: /services/data/v54.0/sobjects/Contact/<contact_id>
          param_values:
            - name: contact_id
              references:
                - dataset: salesforce_connector_example
                  field: contact_list.Id
                  direction: from
        update:
          method: PATCH
          path: /services/data/v54.0/sobjects/Contact/<contact_id>
          body: |
            {
              <masked_object_fields>
            }
          param_values:
            - name: contact_id
              references:
                - dataset: salesforce_connector_example
                  field: contacts.Id
                  direction: from
    - name: case_list
      requests:
        read:
          method: GET
          path: /services/data/v54.0/query
          query_params:
            - name: q
              value: SELECT Id FROM Case WHERE ContactId='<contact_id>'
          param_values:
            - name: contact_id
              references:
                - dataset: salesforce_connector_example
                  field: contact_list.Id
                  direction: from
          data_path: records
    - name: cases
      requests:
        read:
          method: GET
          path: /services/data/v54.0/sobjects/Case/<case_id>
          param_values:
            - name: case_id
              references:
                - dataset: salesforce_connector_example
                  field: case_list.Id
                  direction: from
        update:
          method: PATCH
          path: /services/data/v54.0/sobjects/Case/<case_id>
          body: |
            {
              <masked_object_fields>
            }
          param_values:
            - name: case_id
              references:
                - dataset: salesforce_connector_example
                  field: cases.Id
                  direction: from
    - name: lead_list
      requests:
        read:
          method: GET
          path: /services/data/v54.0/query
          query_params:
            - name: q
              value: SELECT Id FROM Lead WHERE Email='<email>'
          param_values:
            - name: email
              identity: email
          data_path: records
    - name: leads
      requests:
        read:
          method: GET
          path: /services/data/v54.0/sobjects/Lead/<lead_id>
          param_values:
            - name: lead_id
              references:
                - dataset: salesforce_connector_example
                  field: lead_list.Id
                  direction: from
        update:
          method: PATCH
          path: /services/data/v54.0/sobjects/Lead/<lead_id>
          body: |
            {
              <masked_object_fields>
            }
          param_values:
            - name: lead_id
              references:
                - dataset: salesforce_connector_example
                  field: leads.Id
                  direction: from
    - name: accounts
      requests:
        read:
          method: GET
          path: /services/data/v54.0/sobjects/Account/<account_id>
          param_values:
            - name: account_id
              references:
                - dataset: salesforce_connector_example
                  field: contacts.AccountId
        update:
          method: PATCH
          path: /services/data/v54.0/sobjects/Account/<account_id>
          body: |
            {
              <masked_object_fields>
            }
          param_values:
            - name: account_id
              references:
                - dataset: salesforce_connector_example
                  field: accounts.Id
                  direction: from
    - name: campaign_member_list
      requests:
        read:
          method: GET
          path: /services/data/v54.0/query
          query_params:
            - name: q
              value: SELECT Id FROM CampaignMember WHERE Email='<email>'
          param_values:
            - name: email
              identity: email
          data_path: records
    - name: campaign_members
      requests:
        read:
          method: GET
          path: /services/data/v54.0/sobjects/CampaignMember/<campaign_member_id>
          param_values:
            - name: campaign_member_id
              references:
                - dataset: salesforce_connector_example
                  field: campaign_member_list.Id
                  direction: from
        update:
          method: PATCH
          path: /services/data/v54.0/sobjects/CampaignMember/<campaign_member_id>
          body: |
            {
              <masked_object_fields>
            }
          param_values:
            - name: campaign_member_id
              references:
                - dataset: salesforce_connector_example
                  field: campaign_members.Id
                  direction: from
Back to top