- Created by Emiliano Alfaro on Jan 26, 2024
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
Version 1 Current »
Merge script
#include<app/entityLifeCycleManager/libCommonUtils> ME().LogStart(); function customDataForObject(objectType, objectId) { CONTEXT().Set('objectType', objectType); CONTEXT().Set('objectId', objectId); return collect(getCustomFieldNamesByObject(objectType)) .flatMap(function (fieldName) { var r = []; r[fieldName] = getSelectedCustomFieldValuesByObjectTypeAndID(fieldName, CONTEXT().Get('objectType'), CONTEXT().Get('objectId'), true); return r }) .sortKeys() .merge(is_numeric(strpos(objectType, 'person')) ? getPersonBaseDataFromBagOfIds(objectType, [objectId]) : []) .toArray(); } // Set to true to process the records or false to just dump the objects data to prepare for processing var run = false; /** * STEP 1 * * Define your globals */ var sourceObjType = 'person'; var destinationObjType = 'person3'; var sourceObjLicNumber = 'O-000986'; var destinationObjLicNumber = 'GC-0304'; /** * PROCESS - PROCESS - PROCESS - PROCESS - PROCESS - PROCESS - PROCESS - PROCESS - PROCESS */ /** * STEP 2 * * Dump and compare the objects' data */ var sourceObj = findObjectsByCustomFieldValue(sourceObjType, 'License Number', sourceObjLicNumber)[0]; var sourceObjReportIds = getReportIdsForObject(sourceObjType, sourceObj); var destinationObj = findObjectsByCustomFieldValue(destinationObjType, 'License Number', destinationObjLicNumber)[0]; var destinationObjReportIds = getReportIdsForObject(destinationObjType, destinationObj); if (isBlank(sourceObj) || isBlank(destinationObj)) { ME().Log('Not all object ids found: Source [%s] - Destination [%s]', sourceObj, destinationObj); return; } dump(customDataForObject(sourceObjType, sourceObj)) // dump(sourceObjReportIds) dump(customDataForObject(destinationObjType, destinationObj)) // dump(destinationObjReportIds) if (false == run) { ME().Log('Not running'); return; } ME().Log('Running'); /** * STEP 3 * * Manually modify the fields and values on the destination object to the most recent version you want to keep */ SETTINGS().TempChange(ELCM_getReadOnlySettingsKeyByObjectType(destinationObjType), 'FALSE'); var report = loadReportById(getMostRecentReportIdForObject(destinationObjType, destinationObj)) // report.GetChild(destinationObjType)[0].custom_data.GetChild('Address').Set('538 Belcaro Dr'); // report.GetChild(destinationObjType)[0].custom_data.GetChild('City').Set('Kings Mountain'); report.GetChild(destinationObjType)[0].custom_data.GetChild('Department').Set('Key-Gaming Commision'); report.GetChild(destinationObjType)[0].custom_data.GetChild('Distinguish Marks').Set('N/A'); report.GetChild(destinationObjType)[0].custom_data.GetChild('Driver License Expiration').Set('2026-12-18'); report.GetChild(destinationObjType)[0].custom_data.GetChild('Driver License Number').Set('011534579'); report.GetChild(destinationObjType)[0].custom_data.GetChild('Driver License State').Set('South Carolina'); report.GetChild(destinationObjType)[0].custom_data.GetChild('Email').Set('justin.pintoff@catawba.com'); report.GetChild(destinationObjType)[0].custom_data.GetChild('Expiration Date').Set('2026-01-26'); report.GetChild(destinationObjType)[0].custom_data.GetChild('Issuance Date').Set('2024-01-26'); report.GetChild(destinationObjType)[0].custom_data.GetChild('Required Action').Set('Permanent'); report.GetChild(destinationObjType)[0].custom_data.GetChild('Position').Set(null); report.GetChild(destinationObjType)[0].custom_data.GetChild('Workflow Status').Set('Approval Pending'); report.GetChild(destinationObjType)[0].specific_data.GetChild('Middle Name').Set('William'); // report.GetChild(destinationObjType)[0].specific_data.GetChild('Eye Color').Set('Hazel'); // report.GetChild(destinationObjType)[0].specific_data.GetChild('Hair Color').Set('Gray'); // report.GetChild(destinationObjType)[0].specific_data.GetChild('Date of Birth').Set('1956-01-04'); report.GetChild(destinationObjType)[0].specific_data.GetChild('Height').Set('76'); // report.GetChild(destinationObjType)[0].specific_data.GetChild('Weight').Set('186'); /** * STEP 4 * * Copy media from source to destination object */ var oldMedia = getMediaIdsForObject(sourceObjType, sourceObj); for (var x = 0; x < count(oldMedia); x++) { ME().Log('Copying media %d', oldMedia[x]); var mb = createMediaBlockFromString(base64_decode(getMediaAsBase64StringById(oldMedia[x])), getMediaFileNameForMediaById(oldMedia[x])); report.GetChild(destinationObjType)[0].related_media.AddNewMediaObject(mb); } if (report.save()) { ME().Log('Saved destination object'); } else { ME().Log('ERROR destination object: %s', getLastError()); } /** * STEP 6 * * Process each of the source object reports and replace them with the destination object */ ME().Log('Moving reports to destination object'); for (x = 0; x < count(sourceObjReportIds); x++) { var r = loadReportById(sourceObjReportIds[x]); r.removeExistingObjectFromReport(sourceObjType, sourceObj); r.addExistingObjectToReport(destinationObjType, destinationObj); r.core[0].custom_data.GetChild(cfg['fields']['entityName']).Set(ELCM_getEntityNameByObjectType(cfg, destinationObjType)); r.core[0].custom_data.GetChild(cfg['fields']['entityID']).Set(destinationObjLicNumber); if (r.save()) { ME().Log('Moved [%d]', sourceObjReportIds[x]); } else { ME().Log('ERROR [%d]: %s', sourceObjReportIds[x], getLastError()); } } /** * STEP 7 * * Handle ELCM / ESM records */ var entityConfig = collect(cfg['entities']) .firstWhere('config.type', destinationObjType); if (is_null(entityConfig)) { ME().Log('Entity Config not found, skipping ELCM and ESM record creation'); return; } var investigationStartReport = loadReportById( filterBagOfIDsByReportTypes('core', getReportIdsForObject(destinationObjType, destinationObj), entityConfig['reports']['newProcess'])[0] ); // Create ELCM - ESM records createELCMMetadataRecord( investigationStartReport.core[0].object_id.Get(), destinationObjType, investigationStartReport.GetChild(destinationObjType)[0].object_id.Get(), strcat(investigationStartReport.GetChild(destinationObjType)[0].specific_data.GetChild('Last Name').Get(), ', ', investigationStartReport.GetChild(destinationObjType)[0].specific_data.GetChild('First Name').Get()), investigationStartReport.GetChild(destinationObjType)[0].custom_data.GetChild('License Number').Get(), true, '' ); createESMIssuanceRecord( destinationObjType, investigationStartReport.GetChild(destinationObjType)[0].object_id.Get(), investigationStartReport.GetChild(destinationObjType)[0].custom_data.GetChild('Current Status').Get(), investigationStartReport.GetChild(destinationObjType)[0].custom_data.GetChild(cfg['fields']['process']).Get(), investigationStartReport.GetChild(destinationObjType)[0].custom_data.GetChild('Issuance Date').Get(), investigationStartReport.GetChild(destinationObjType)[0].custom_data.GetChild('Expiration Date').Get() ); ME().LogEnd();
- No labels