Через импорт создаются неуникальные записи

:speech_balloon: Description
Использование Ignore Mandatory Fields в Transform Map приводит к игнорированию уникальности колонок для Target записи

:heavy_check_mark: Workaround

В качестве обходного решения предлагаем использовать прерывание вставки неуникальной записи через скрипт Transform Script [sys_transform_script] с типом onBefore.

В массиве duplicateConditions должны содержаться условия для поиска дубликатов по всем полям, указанным в записях Field Map, с активным флагом флагом Coalesce! В примере ниже это username и email.

Пример скрипта:

(function runTransformScript(source, map, log, target /*undefined onStart*/) {
  let duplicateConditions = [
    `usernameSTARTSWITH${source.imp_samaccountname}^usernameENDSWITH${source.imp_samaccountname}`,
    `emailSTARTSWITH${source.imp_mail}^emailENDSWITH${source.imp_mail}`
  ]
  if (target.sys_id) {
    duplicateConditions = duplicateConditions.map(node => `(${node}^sys_id!=${target.sys_id})`);
  }

  const TARGET_TABLE_NAME = 'user';
  const duplicate = new SimpleRecord(TARGET_TABLE_NAME);
  duplicate.addEncodedQuery(duplicateConditions.join('^OR'));
  duplicate.selectAttributes(['sys_id']);
  duplicate.setLimit(1);
  duplicate.query();
  if (duplicate.next()) {
    ignore = true; // skip import row
    message = `Duplicate with record: /record/${TARGET_TABLE_NAME}/${duplicate.sys_id}`;
    ss.error(`Transform Script Log:
Record: /record/${TARGET_TABLE_NAME}/${duplicate.sys_id}
Source record attributes: ${JSON.stringify(source.getAttributes(), null, 2)}`);
  }
})(source, map, log, target);