This document describes the process to execute the Apex script required for the integration setup.
- Go to the Developer Console by clicking on the gear icon.
- Click on Debug > Open Execute Anonymous Window.
- Execute the following script:
// LOAD DEFAULT OBJECT MAPPINGS StaticResource objectMappingsResource = [SELECT Id, Body FROM StaticResource WHERE Name = 'DefaultObjectMappings' LIMIT 1]; String objectMappingsCSV = objectMappingsResource.Body.toString(); String[] rows = objectMappingsCSV.split('\r\n'); String[] fieldNames = rows[0].split(','); String[] fieldTypes = new String[fieldNames.size()]; Map<String, Schema.SObjectType> globalDescription = Schema.getGlobalDescribe(); Schema.sObjectType sObjType = globalDescription.get('ObjectMapping__c'); Schema.DescribeSObjectResult sObjectResult = sObjType.getDescribe(); Map<String , Schema.SObjectField> mapFieldList = sObjectResult.fields.getMap(); for (Integer i = 0; i < fieldNames.size(); i++) { Schema.DescribeFieldResult fieldResult = mapFieldList.get(fieldNames[i]).getDescribe(); fieldTypes[i] = String.valueOf(fieldResult.getType()); } List<ObjectMapping__c> objectMappingsToInsert = new List<ObjectMapping__c>(); for (Integer i = 1; i < rows.size(); i++) { ObjectMapping__c objectMapping = new ObjectMapping__c(); List<String> fieldValues = rows[i].split(','); for (Integer j = 0; j < fieldValues.size(); j++) { System.debug(fieldNames[j] + ' ' + fieldValues[j]); if (fieldTypes[j] == 'BOOLEAN') objectMapping.put(fieldNames[j], Boolean.valueOf(fieldValues[j])); else objectMapping.put(fieldNames[j], fieldValues[j]); } objectMappingsToInsert.add(objectMapping); } insert objectMappingsToInsert; // LOAD DEFAULT FIELD MAPPINGS StaticResource fieldMappingsResource = [SELECT Id, Body FROM StaticResource WHERE Name = 'DefaultFieldMappings' LIMIT 1]; String fieldMappingsCSV = fieldMappingsResource.Body.toString(); rows = fieldMappingsCSV.split('\r\n'); fieldNames = rows[0].split(','); fieldTypes = new String[fieldNames.size()]; globalDescription = Schema.getGlobalDescribe(); sObjType = globalDescription.get('FieldMapping__c'); sObjectResult = sObjType.getDescribe(); mapFieldList = sObjectResult.fields.getMap(); for (Integer i = 1; i < fieldNames.size(); i++) { Schema.DescribeFieldResult fieldResult = mapFieldList.get(fieldNames[i]).getDescribe(); fieldTypes[i] = String.valueOf(fieldResult.getType()); } Map<String, Id> objectMappingNameToIdMap = new Map<String, Id>(); for (ObjectMapping__c objectMapping : [SELECT Id, SFObjectAPIName__c FROM ObjectMapping__c LIMIT 20]) { objectMappingNameToIdMap.put(objectMapping.SFObjectAPIName__c, objectMapping.Id); } List<FieldMapping__c> fieldMappingsToInsert = new List<FieldMapping__c>(); for (Integer i = 1; i < rows.size(); i++) { FieldMapping__c fieldMapping = new FieldMapping__c(); List<String> fieldValues = rows[i].split(','); if (objectMappingNameToIdMap.containsKey(fieldValues[0])) { fieldMapping.ObjectLinkedTo__c = objectMappingNameToIdMap.get(fieldValues[0]); for (Integer j = 1; j < fieldValues.size(); j++) { System.debug(fieldNames[j] + ' ' + fieldValues[j]); if (fieldTypes[j] == 'BOOLEAN') fieldMapping.put(fieldNames[j], Boolean.valueOf(fieldValues[j])); else fieldMapping.put(fieldNames[j], fieldValues[j]); } fieldMappingsToInsert.add(fieldMapping); } } insert fieldMappingsToInsert; // LOAD CHECKLIST ITEMS StaticResource checkListItemsResource = [SELECT Id, Body FROM StaticResource WHERE Name = 'SFPAIntegrationChecklistItems' LIMIT 1]; String checkListItemsCSV = checkListItemsResource.Body.toString(); rows = checkListItemsCSV.split('\r\n'); fieldNames = rows[0].split(','); fieldTypes = new String[fieldNames.size()]; globalDescription = Schema.getGlobalDescribe(); sObjType = globalDescription.get('SF_PA_Integration_Checklist_Item__c'); sObjectResult = sObjType.getDescribe(); mapFieldList = sObjectResult.fields.getMap(); for (Integer i = 0; i < fieldNames.size(); i++) { System.debug(fieldNames[i]); Schema.DescribeFieldResult fieldResult = mapFieldList.get('' + fieldNames[i]).getDescribe(); fieldTypes[i] = String.valueOf(fieldResult.getType()); } List<SF_PA_Integration_Checklist_Item__c> checkListItemsToInsert = new List<SF_PA_Integration_Checklist_Item__c>(); for (Integer i = 1; i < rows.size(); i++) { SF_PA_Integration_Checklist_Item__c checkListItem = new SF_PA_Integration_Checklist_Item__c(); List<String> fieldValues = rows[i].split(','); for (Integer j = 0; j < fieldValues.size(); j++) { System.debug(fieldNames[j] + ' ' + fieldValues[j] + ' ' + fieldTypes[j]); if (fieldTypes[j] == 'BOOLEAN') checkListItem.put(fieldNames[j], Boolean.valueOf(fieldValues[j])); else if (fieldTypes[j] == 'DOUBLE') checkListItem.put(fieldNames[j], Double.valueOf(fieldValues[j])); else checkListItem.put(fieldNames[j], fieldValues[j]); } checkListItemsToInsert.add(checkListItem); } insert checkListItemsToInsert; // COMPANY LEVEL ACTIVATION SETTINGS ActivationSettings__c activationSettings = new ActivationSettings__c(); activationSettings.FlowsActivated__c = true; activationSettings.TriggersActivated__c = true; activationSettings.ValidationRulesActivated__c = true; activationSettings.SetupOwnerId = UserInfo.getOrganizationId(); insert activationSettings; // Apex Jobs System.schedule('PartnerAlignMetrics_SCH', '0 0 5 * * ?', new PartnerAlignMetrics_SCH()); System.schedule('PartnerAlignRecordDeletion_SCH', '0 0 6 * * ?', new PartnerAlignRecordDeletion_SCH()); System.schedule('ExceptionLogDeletion_SCH', '0 0 7 * * ?', new ExceptionLogDeletion_SCH()); System.schedule('PartnerAlignToSalesforceResync_SCH', '0 0 3 * * ?', new PartnerAlignToSalesforceResync_SCH()); System.schedule('SalesforceToPartnerAlignResync_SCH', '0 0 4 * * ?', new SalesforceToPartnerAlignResync_SCH());
// LOAD DEFAULT OBJECT MAPPINGS
StaticResource objectMappingsResource = [SELECT Id, Body FROM StaticResource WHERE Name = 'DefaultObjectMappings' LIMIT 1];
String objectMappingsCSV = objectMappingsResource.Body.toString();
String[] rows = objectMappingsCSV.split('\r\n');
String[] fieldNames = rows[0].split(',');
String[] fieldTypes = new String[fieldNames.size()];
Map<String, Schema.SObjectType> globalDescription = Schema.getGlobalDescribe();
Schema.sObjectType sObjType = globalDescription.get('ObjectMapping__c');
Schema.DescribeSObjectResult sObjectResult = sObjType.getDescribe();
Map<String , Schema.SObjectField> mapFieldList = sObjectResult.fields.getMap();
for (Integer i = 0; i < fieldNames.size(); i++) {
Schema.DescribeFieldResult fieldResult = mapFieldList.get(fieldNames[i]).getDescribe();
fieldTypes[i] = String.valueOf(fieldResult.getType());
}
List<ObjectMapping__c> objectMappingsToInsert = new List<ObjectMapping__c>();
for (Integer i = 1; i < rows.size(); i++) {
ObjectMapping__c objectMapping = new ObjectMapping__c();
List<String> fieldValues = rows[i].split(',');
for (Integer j = 0; j < fieldValues.size(); j++) {
System.debug(fieldNames[j] + ' ' + fieldValues[j]);
if (fieldTypes[j] == 'BOOLEAN') objectMapping.put(fieldNames[j], Boolean.valueOf(fieldValues[j]));
else objectMapping.put(fieldNames[j], fieldValues[j]);
}
objectMappingsToInsert.add(objectMapping);
}
insert objectMappingsToInsert;
// LOAD DEFAULT FIELD MAPPINGS
StaticResource fieldMappingsResource = [SELECT Id, Body FROM StaticResource WHERE Name = 'DefaultFieldMappings' LIMIT 1];
String fieldMappingsCSV = fieldMappingsResource.Body.toString();
rows = fieldMappingsCSV.split('\r\n');
fieldNames = rows[0].split(',');
fieldTypes = new String[fieldNames.size()];
globalDescription = Schema.getGlobalDescribe();
sObjType = globalDescription.get('FieldMapping__c');
sObjectResult = sObjType.getDescribe();
mapFieldList = sObjectResult.fields.getMap();
for (Integer i = 1; i < fieldNames.size(); i++) {
Schema.DescribeFieldResult fieldResult = mapFieldList.get(fieldNames[i]).getDescribe();
fieldTypes[i] = String.valueOf(fieldResult.getType());
}
Map<String, Id> objectMappingNameToIdMap = new Map<String, Id>();
for (ObjectMapping__c objectMapping : [SELECT Id, SFObjectAPIName__c FROM ObjectMapping__c LIMIT 20]) {
objectMappingNameToIdMap.put(objectMapping.SFObjectAPIName__c, objectMapping.Id);
}
List<FieldMapping__c> fieldMappingsToInsert = new List<FieldMapping__c>();
for (Integer i = 1; i < rows.size(); i++) {
FieldMapping__c fieldMapping = new FieldMapping__c();
List<String> fieldValues = rows[i].split(',');
if (objectMappingNameToIdMap.containsKey(fieldValues[0])) {
fieldMapping.ObjectLinkedTo__c = objectMappingNameToIdMap.get(fieldValues[0]);
for (Integer j = 1; j < fieldValues.size(); j++) {
System.debug(fieldNames[j] + ' ' + fieldValues[j]);
if (fieldTypes[j] == 'BOOLEAN') fieldMapping.put(fieldNames[j], Boolean.valueOf(fieldValues[j]));
else fieldMapping.put(fieldNames[j], fieldValues[j]);
}
fieldMappingsToInsert.add(fieldMapping);
}
}
insert fieldMappingsToInsert;
// LOAD CHECKLIST ITEMS
StaticResource checkListItemsResource = [SELECT Id, Body FROM StaticResource WHERE Name = 'SFPAIntegrationChecklistItems' LIMIT 1];
String checkListItemsCSV = checkListItemsResource.Body.toString();
rows = checkListItemsCSV.split('\r\n');
fieldNames = rows[0].split(',');
fieldTypes = new String[fieldNames.size()];
globalDescription = Schema.getGlobalDescribe();
sObjType = globalDescription.get('SF_PA_Integration_Checklist_Item__c');
sObjectResult = sObjType.getDescribe();
mapFieldList = sObjectResult.fields.getMap();
for (Integer i = 0; i < fieldNames.size(); i++) {
System.debug(fieldNames[i]);
Schema.DescribeFieldResult fieldResult = mapFieldList.get('' + fieldNames[i]).getDescribe();
fieldTypes[i] = String.valueOf(fieldResult.getType());
}
List<SF_PA_Integration_Checklist_Item__c> checkListItemsToInsert = new List<SF_PA_Integration_Checklist_Item__c>();
for (Integer i = 1; i < rows.size(); i++) {
SF_PA_Integration_Checklist_Item__c checkListItem = new SF_PA_Integration_Checklist_Item__c();
List<String> fieldValues = rows[i].split(',');
for (Integer j = 0; j < fieldValues.size(); j++) {
System.debug(fieldNames[j] + ' ' + fieldValues[j] + ' ' + fieldTypes[j]);
if (fieldTypes[j] == 'BOOLEAN') checkListItem.put(fieldNames[j], Boolean.valueOf(fieldValues[j]));
else if (fieldTypes[j] == 'DOUBLE') checkListItem.put(fieldNames[j], Double.valueOf(fieldValues[j]));
else checkListItem.put(fieldNames[j], fieldValues[j]);
}
checkListItemsToInsert.add(checkListItem);
}
insert checkListItemsToInsert;
// COMPANY LEVEL ACTIVATION SETTINGS
ActivationSettings__c activationSettings = new ActivationSettings__c();
activationSettings.FlowsActivated__c = true;
activationSettings.TriggersActivated__c = true;
activationSettings.ValidationRulesActivated__c = true;
activationSettings.SetupOwnerId = UserInfo.getOrganizationId();
insert activationSettings;
// Apex Jobs
System.schedule('PartnerAlignMetrics_SCH', '0 0 5 * * ?', new PartnerAlignMetrics_SCH());
System.schedule('PartnerAlignRecordDeletion_SCH', '0 0 6 * * ?', new PartnerAlignRecordDeletion_SCH());
System.schedule('ExceptionLogDeletion_SCH', '0 0 7 * * ?', new ExceptionLogDeletion_SCH());
System.schedule('PartnerAlignToSalesforceResync_SCH', '0 0 3 * * ?', new PartnerAlignToSalesforceResync_SCH());
System.schedule('SalesforceToPartnerAlignResync_SCH', '0 0 4 * * ?', new SalesforceToPartnerAlignResync_SCH());