@@ -640,44 +640,31 @@ export class OmniScriptMigrationTool extends BaseMigrationTool implements Migrat
640640 continue ;
641641 }
642642
643+ const originalType : string = nameMapping . oldType ;
644+ const originalSubtype : string = nameMapping . oldSubtype ;
645+ const originalLanguage : string = nameMapping . oldLanguage ;
646+
643647 let value : OmniScriptStorage = {
644648 type : nameMapping . newType ,
645649 subtype : nameMapping . newSubType ,
646650 language : nameMapping . newLanguage ,
647651 isDuplicate : false ,
652+ originalType : originalType ,
653+ originalSubtype : originalSubtype ,
654+ originalLanguage : originalLanguage ,
648655 } ;
649656
650- if ( currentOsRecordInfo . errors && currentOsRecordInfo . errors . length > 0 ) {
651- value . error = currentOsRecordInfo . errors ;
657+ if (
658+ ( currentOsRecordInfo . errors && currentOsRecordInfo . errors . length > 0 ) ||
659+ currentOsRecordInfo . migrationStatus === 'Needs Manual Intervention'
660+ ) {
661+ value . error = [ ...( currentOsRecordInfo . errors || [ ] ) , ...( currentOsRecordInfo . warnings || [ ] ) ] ;
652662 value . migrationSuccess = false ;
653663 } else {
654664 value . migrationSuccess = true ;
655665 }
656666
657- let finalKey = `${ nameMapping . oldType } ${ nameMapping . oldSubtype } ${ this . cleanLanguageName (
658- nameMapping . oldLanguage
659- ) } `;
660-
661- if ( this . IS_STANDARD_DATA_MODEL ) {
662- // Create object key for new storage format
663- const keyObject : OmniScriptStandardKey = {
664- type : nameMapping . oldType ,
665- subtype : nameMapping . oldSubtype ,
666- language : nameMapping . oldLanguage ,
667- } ;
668- StorageUtil . addStandardOmniScriptToStorage ( storage , keyObject , value ) ;
669- }
670-
671- finalKey = finalKey . toLowerCase ( ) ;
672- if ( storage . osStorage . has ( finalKey ) ) {
673- // Key already exists - handle accordingly
674- Logger . logVerbose ( this . messages . getMessage ( 'keyAlreadyInStorage' , [ 'Omniscript' , finalKey ] ) ) ;
675- value . isDuplicate = true ;
676- storage . osStorage . set ( finalKey , value ) ;
677- } else {
678- // Key doesn't exist - safe to set
679- storage . osStorage . set ( finalKey , value ) ;
680- }
667+ this . addKeyToStorage ( originalType , originalSubtype , originalLanguage , storage , value ) ;
681668 } catch ( error ) {
682669 Logger . error ( error ) ;
683670 }
@@ -686,6 +673,57 @@ export class OmniScriptMigrationTool extends BaseMigrationTool implements Migrat
686673 StorageUtil . printAssessmentStorage ( ) ;
687674 }
688675
676+ private addKeyToStorage (
677+ originalType : string ,
678+ originalSubtype : string ,
679+ originalLanguage : string ,
680+ storage : MigrationStorage ,
681+ value : OmniScriptStorage
682+ ) : void {
683+ if ( this . IS_STANDARD_DATA_MODEL ) {
684+ // Create object key for new storage format
685+ const keyObject : OmniScriptStandardKey = {
686+ type : originalType ,
687+ subtype : originalSubtype ,
688+ language : originalLanguage ,
689+ } ;
690+ StorageUtil . addStandardOmniScriptToStorage ( storage , keyObject , value ) ;
691+ }
692+
693+ let finalKey = `${ originalType } ${ originalSubtype } ${ this . cleanLanguageName ( originalLanguage ) } ` ;
694+ finalKey = finalKey . toLowerCase ( ) ;
695+ if ( storage . osStorage . has ( finalKey ) ) {
696+ if ( this . allVersions ) {
697+ const storedValue = storage . osStorage . get ( finalKey ) ;
698+ if ( this . isDifferentOmniscript ( storedValue , originalType , originalSubtype , originalLanguage ) ) {
699+ this . markDuplicateKeyInStorage ( value , finalKey , storage ) ;
700+ }
701+ } else {
702+ this . markDuplicateKeyInStorage ( value , finalKey , storage ) ;
703+ }
704+ } else {
705+ // Key doesn't exist - safe to set
706+ storage . osStorage . set ( finalKey , value ) ;
707+ }
708+ }
709+
710+ private markDuplicateKeyInStorage ( value : OmniScriptStorage , finalKey : string , storage : MigrationStorage ) {
711+ Logger . logVerbose ( this . messages . getMessage ( 'keyAlreadyInStorage' , [ 'Omniscript' , finalKey ] ) ) ;
712+ value . isDuplicate = true ;
713+ storage . osStorage . set ( finalKey , value ) ;
714+ }
715+
716+ private isDifferentOmniscript ( storedValue , type , subtype , language ) {
717+ if (
718+ storedValue . originalType === type &&
719+ storedValue . originalSubtype === subtype &&
720+ storedValue . originalLanguage === language
721+ ) {
722+ return false ;
723+ }
724+ return true ;
725+ }
726+
689727 private cleanLanguageName ( language : string ) : string {
690728 // replace -, ( and ) and space with ''
691729 return language . replace ( / [ - ( ) ] / g, '' ) ;
@@ -1168,47 +1206,33 @@ export class OmniScriptMigrationTool extends BaseMigrationTool implements Migrat
11681206 subtype : newrecord [ 'subtype' ] ,
11691207 language : newrecord [ 'language' ] ,
11701208 isDuplicate : false ,
1209+ originalType : oldrecord [ this . getFieldKey ( 'Type__c' ) ] ,
1210+ originalSubtype : oldrecord [ this . getFieldKey ( 'SubType__c' ) ] ,
1211+ originalLanguage : oldrecord [ this . getFieldKey ( 'Language__c' ) ] ,
11711212 } ;
11721213
11731214 // New record can be undefined
11741215 if ( newrecord === undefined ) {
11751216 value . migrationSuccess = false ;
11761217 } else {
1177- if ( newrecord . hasErrors ) {
1178- value . error = newrecord . errors ;
1218+ if ( newrecord . hasErrors || newrecord . success === false ) {
1219+ value . error = [ ... ( newrecord . errors || [ ] ) , ... ( newrecord . warnings || [ ] ) ] ;
11791220 value . migrationSuccess = false ;
11801221 } else {
11811222 value . migrationSuccess = true ;
11821223 }
11831224 }
11841225
1185- let finalKey = `${ oldrecord [ this . getFieldKey ( 'Type__c' ) ] } ${
1186- oldrecord [ this . getFieldKey ( 'SubType__c' ) ]
1187- } ${ this . cleanLanguageName ( oldrecord [ this . getFieldKey ( 'Language__c' ) ] ) } `;
1188-
1189- if ( this . IS_STANDARD_DATA_MODEL ) {
1190- // Create object key for new storage format
1191- const keyObject : OmniScriptStandardKey = {
1192- type : oldrecord [ this . getFieldKey ( 'Type__c' ) ] ,
1193- subtype : oldrecord [ this . getFieldKey ( 'SubType__c' ) ] ,
1194- language : oldrecord [ this . getFieldKey ( 'Language__c' ) ] ,
1195- } ;
1196- StorageUtil . addStandardOmniScriptToStorage ( storage , keyObject , value ) ;
1197- }
1198-
1199- finalKey = finalKey . toLowerCase ( ) ;
1200- if ( storage . osStorage . has ( finalKey ) ) {
1201- // Key already exists - handle accordingly
1202- Logger . logVerbose ( this . messages . getMessage ( 'keyAlreadyInStorage' , [ 'Omniscript' , finalKey ] ) ) ;
1203- value . isDuplicate = true ;
1204- storage . osStorage . set ( finalKey , value ) ;
1205- } else {
1206- // Key doesn't exist - safe to set
1207- storage . osStorage . set ( finalKey , value ) ;
1208- }
1226+ this . addKeyToStorage (
1227+ oldrecord [ this . getFieldKey ( 'Type__c' ) ] ,
1228+ oldrecord [ this . getFieldKey ( 'SubType__c' ) ] ,
1229+ oldrecord [ this . getFieldKey ( 'Language__c' ) ] ,
1230+ storage ,
1231+ value
1232+ ) ;
12091233 }
12101234 } catch ( error ) {
1211- Logger . logVerbose ( error ) ;
1235+ Logger . error ( error ) ;
12121236 }
12131237 }
12141238 StorageUtil . printMigrationStorage ( ) ;
0 commit comments