OrganizationTransformer#
Transform delimited (CSV/TSV) data into FOLIO Organization (vendor) records with support for contacts, addresses, emails, phone numbers, and notes.
When to Use This Task#
Migrating vendor/supplier records from legacy acquisitions systems
Creating organizations for ERM or acquisitions workflows
Importing contact information with multiple addresses and communication methods
Configuration#
{
"name": "transform_organizations",
"migrationTaskType": "OrganizationTransformer",
"organizationMapPath": "organization_mapping.json",
"organizationTypesMapPath": "org_types.tsv",
"addressCategoriesMapPath": "address_categories.tsv",
"emailCategoriesMapPath": "email_categories.tsv",
"phoneCategoriesMapPath": "phone_categories.tsv",
"files": [
{
"file_name": "vendors.tsv"
}
]
}
Parameters#
Parameter |
Type |
Required |
Description |
|---|---|---|---|
|
string |
Yes |
The name of this task. |
|
string |
Yes |
Must be |
|
string |
Yes |
JSON mapping file for organization fields |
|
string |
No |
TSV file mapping organization types |
|
string |
No |
TSV file mapping address categories |
|
string |
No |
TSV file mapping email categories |
|
string |
No |
TSV file mapping phone categories |
|
array |
Yes |
List of source data files to process |
Source Data Requirements#
Location: Place CSV/TSV files in
iterations/<iteration>/source_data/organizations/Format: Tab-separated (TSV) or comma-separated (CSV) with header row
Organization Mapping File#
Create a JSON mapping file in mapping_files/:
{
"data": [
{
"folio_field": "legacyIdentifier",
"legacy_field": "VENDOR_ID",
"description": "Legacy identifier for deterministic UUID"
},
{
"folio_field": "name",
"legacy_field": "VENDOR_NAME"
},
{
"folio_field": "code",
"legacy_field": "VENDOR_CODE"
},
{
"folio_field": "status",
"legacy_field": "",
"value": "Active"
},
{
"folio_field": "isVendor",
"legacy_field": "",
"value": true
},
{
"folio_field": "addresses[0].addressLine1",
"legacy_field": "ADDRESS_1"
},
{
"folio_field": "addresses[0].city",
"legacy_field": "CITY"
},
{
"folio_field": "addresses[0].stateRegion",
"legacy_field": "STATE"
},
{
"folio_field": "addresses[0].zipCode",
"legacy_field": "ZIP"
},
{
"folio_field": "addresses[0].country",
"legacy_field": "COUNTRY"
},
{
"folio_field": "emails[0].value",
"legacy_field": "EMAIL"
},
{
"folio_field": "phoneNumbers[0].phoneNumber",
"legacy_field": "PHONE"
}
]
}
Reference Data Mapping Files#
Reference data mapping files connect values from your legacy data to FOLIO reference data. See Reference Data Mapping for detailed documentation on how these files work.
Mapping File |
FOLIO Column |
Maps To |
|---|---|---|
|
|
Organization type name |
|
|
Address category value |
|
|
Email category value |
|
|
Phone category value |
|
|
URL category value |
Output Files#
Files are created in iterations/<iteration>/results/:
File |
Description |
|---|---|
|
FOLIO Organization records |
|
Related objects (contacts, interfaces, credentials, notes) |
|
Legacy ID to FOLIO UUID mapping |
Examples#
Basic Organization Transformation#
{
"name": "transform_organizations",
"migrationTaskType": "OrganizationTransformer",
"organizationMapPath": "organization_mapping.json",
"files": [
{
"file_name": "vendors.tsv"
}
]
}
With All Reference Data Mappings#
{
"name": "transform_organizations",
"migrationTaskType": "OrganizationTransformer",
"organizationMapPath": "organization_mapping.json",
"organizationTypesMapPath": "org_types.tsv",
"addressCategoriesMapPath": "address_categories.tsv",
"emailCategoriesMapPath": "email_categories.tsv",
"phoneCategoriesMapPath": "phone_categories.tsv",
"files": [
{
"file_name": "vendors.tsv"
}
]
}
Running the Task#
folio-migration-tools mapping_files/config.json transform_organizations --base_folder ./
Posting Organizations#
After transformation, post organizations using BatchPoster:
{
"name": "post_organizations",
"migrationTaskType": "BatchPoster",
"objectType": "Organizations",
"batchSize": 250,
"files": [
{
"file_name": "folio_organizations_transform_organizations.json"
}
]
}
Then post the extradata file for related objects:
{
"name": "post_organization_extradata",
"migrationTaskType": "BatchPoster",
"objectType": "Extradata",
"batchSize": 1,
"files": [
{
"file_name": "extradata_transform_organizations.extradata"
}
]
}
See Also#
Mapping File Based Mapping - Mapping file syntax
BatchPoster - Posting organizations
OrdersTransformer - Using organizations in orders