---
schema_version: "1"
id: 32ab3af0bed1ce4a382582aaca27e88a44aee72d7b568540e5f90f79c478eaab
title: Design the Dataflow to Load the Data
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/analytics/264-0-0/bi_security_rowlevel_example_teammembership_designdataflow.md
canonical_url: https://help.salesforce.com/s/articleView?id=analytics.bi_security_rowlevel_example_teammembership_designdataflow.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: 3dff79730886c5fcd017241f46dd727ab23bdbd139d74bc5fc668a842b39937e
description: Now it’s time to figure out how the dataflow will extract the Salesforce data and load it into a dataset. You start by creating this high-level design for the dataflow.
products:
  - CRM Analytics
  - Cross Cloud
release: "264"
---
# Design the Dataflow to Load the Data

Now it’s time to figure out how the dataflow will extract the Salesforce data and load it into a dataset. You start by creating this high-level design for the dataflow.

### Required Editions

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small edition"><colgroup><col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available in Salesforce Classic and Lightning Experience.</td></tr><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available with CRM Analytics, which is available for an extra cost in <strong>Enterprise</strong>, <strong>Performance</strong>, and <strong>Unlimited</strong> Editions. Also available in <strong>Developer</strong> Edition.</td></tr></tbody></table>

![The Opportunity and OpportunityTeamMember objects load data into the OppTeamMember dataset.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/bi/images/bi/bi_security_oppteammember_dataflow_design.png)

The dataflow will extract data from the Opportunity and OpportunityTeamMember objects, join the data, and then load it into the OppTeamMember dataset.

Now let’s implement that design in JSON, which is the format of the dataflow definition file. A dataflow definition file contains transformations that extract, transform, and load data into a dataset.

Based on the design, you create the JSON shown below.

```
{    
   "Extract_OpportunityTeamMember": {        
      "action": "sfdcDigest",        
      "parameters": {            
         "object": "OpportunityTeamMember",            
         "fields": [                
            { "name": "Name" },                
            { "name": "OpportunityId" },                
            { "name": "UserId" }            
         ]        
      }    
   },        
   "Extract_Opportunity": {        
      "action": "sfdcDigest",        
      "parameters": {            
         "object": "Opportunity",            
         "fields": [                
            { "name": "Id" },                
            { "name": "Name" },                
            { "name": "Amount" },                
            { "name": "StageName" },                
            { "name": "AccountId" },                
            { "name": "OwnerId" }            
         ]        
      }   
   },    
   "Augment_OpportunityTeamMember_Opportunity": {        
      "action": "augment",        
      "parameters": {            
         "left": "Extract_OpportunityTeamMember",            
         "left_key": [                
            "OpportunityId"            
         ],            
         "relationship": "TeamMember",            
         "right": "Extract_Opportunity",            
         "right_key": [                
            "Id"            
         ],            
         "right_select": [                
            "Name","Amount"            
         ]        
      }    
   },    
   "Register_Dataset": {        
      "action": "sfdcRegister",        
      "parameters": {        
         "alias": "OppTeamMember",        
         "name": "OppTeamMember",        
         "source": "Augment_OpportunityTeamMember_Opportunity",            
         "rowLevelSecurityFilter": ""        
      }    
   }
}
```

If you were to run this dataflow, CRM Analytics would generate a dataset with no row-level security. As a result, any user that has access to the dataset would be able to see the opportunity shared by the opportunity team.

For example, as shown below, Lucy would be able to view the opportunity that belongs to an opportunity team of which she is not a member.

![Lucy can view one opportunity, which is shared by the opportunity team.](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-analytics-bi-264-0-0-production-enus/ec791473-f5b4-4f64-a656-9104f455d966/bi/images/bi/bi_opportunities_lucy_nopredicate_oppteammember.png)

You need to apply row-level security to restrict access to records in this dataset.