Salesforce Dataloader Development with Python

Job ID: 38568505

Budget: $30 – $250 AUD

I need a Python-based Salesforce Dataloader that can be configured to load sales data from user-defined Excel templates into Salesforce.

Input Flexibility:

The solution must handle multiple input Excel files, which will be passed to the program as input (e.g., file1.xlsx, file2.xlsx).
A configuration file (inputs.xlsx) will define the mapping between columns in the Excel files and fields in Salesforce objects. For instance, column1 in the Excel file maps to the Name field in the Salesforce Account object.
Mapping Configuration:

The configuration file should also define the order of execution for different objects and fields. For example, column1 and column2 map to the Account object, while column3 and column4 map to the Contact object.
The solution must handle dependencies between objects. For example, after loading Contact, the returned Contact ID should be used as a lookup field (ContactId) in the Account object.
Multi-Object and Relationship Handling:

The solution must support one-to-many (1
) and many-to-many (M
) relationships between Salesforce objects.
For example, the Plan object might have fields column5 and column6 that are mapped in a M
relationship with the Account object. The solution should load the Plan ID and Account ID into a junction object.
Operation Configurability:

The tool should support configurable CRUD operations (Insert, Update) for each object.
Insert: Insert data into Salesforce if no matching record is found.
Update: Update the record if a match is found based on a unique identifier, otherwise insert the new record.
The type of operation (Insert or Update) must be configurable for each object in the configuration file.
Functional Flow:
Input Data and Configuration:

The user specifies the input data files and a configuration file (inputs.xlsx).
The configuration file defines:
Column-to-field mappings between Excel data and Salesforce objects.
The execution order of the objects, including dependencies and lookup relationships.
Execution Order and Dependency Management:

Load dependent objects in the correct order based on the configuration.
For example, load Contact first, retrieve the Contact ID, and use it in the Account object as a lookup reference.
Handling of Many-to-Many Relationships:

The solution must support junction objects to manage many-to-many (M
) relationships between Salesforce objects (e.g., linking Account and Plan).
Salesforce API Integration:

Utilize Salesforce-provided APIs (e.g., REST API or Bulk API) to perform Insert, Update, and relationship management operations.
Ensure efficient error handling and logging of operations for troubleshooting.
Suggested Approach:
Python and Libraries:
Use Python with Salesforce libraries such as simple_salesforce or Salesforce Bulk API.
Use pandas to handle Excel data manipulation.
Integrate Salesforce REST API for operations like Insert, Update, and query.
Configuration File:
The configuration file (inputs.xlsx) will define mappings, execution order, relationships, and operations in a tabular format.
Scalability:
Ensure the tool is scalable to handle larger datasets and complex relationships (e.g., junction objects for many-to-many relationships).
Related categories: Python Excel Software Architecture Salesforce.com