This functionality is part of the core and allows importing of multi-value custom data.
1. Add menu item for 'Import Multi-value Custom Data' with link 'civicrm/import/custom?reset=1'
Create a Importer for Custom Fields for multi-value fields
2. Upload Data
Add a field drop-down (mandatory) with listings of all the custom groups with is.multiple = 1
Also, facilitate passing of the group_id from url, so that we can have menu items for different muti-value custom groups
- Import Immigration 'civicrm/import/custom?reset=1&id=x'
- Import Career History 'civicrm/import/custom?reset=1&id=y'
where x and y are custom_group.id corresponding to Immigration and Career History resp.
> Suppress the custom group drop down in that case
- Map field drop-down select values are the custom fields based of on the chosen group name in earlier step
- Mapping for Contact ID is required - throw validation error on Continue if no column is mapped as a Contact ID.
- Mappings may be saved/retrieved.
Add new option value for 'Import Custom Data' to option group with name = 'mapping_type'
Use the option_value.value to set civicrm_mapping.mapping_type_id for this mapping.
- Import file validation should check that contact_id column values are not null and are integers. Add rows to Preview error array which do not meet these requirements.
- Import processing should validate field types (e.g. issue_date is valid date, etc.).
Fix api's to add new custom data rows instead of updating the same one