@memberjunction/integration-engine 5.10.1 → 5.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"IntegrationEngine.d.ts","sourceRoot":"","sources":["../src/IntegrationEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IntegrationEngine.d.ts","sourceRoot":"","sources":["../src/IntegrationEngine.ts"],"names":[],"mappings":"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"}
@@ -43,14 +43,14 @@ export class IntegrationEngine extends BaseSingleton {
43
43
  * @param onNotification - Optional callback invoked with a notification when the sync completes or fails
44
44
  * @returns Aggregate sync result with record counts and errors
45
45
  */
46
- async RunSync(companyIntegrationID, contextUser, triggerType = 'Manual', onProgress, onNotification) {
46
+ async RunSync(companyIntegrationID, contextUser, triggerType = 'Manual', onProgress, onNotification, options) {
47
47
  const lockKey = companyIntegrationID.toLowerCase();
48
48
  const existing = IntegrationEngine.activeSyncs.get(lockKey);
49
49
  if (existing) {
50
50
  console.warn(`[IntegrationEngine] Sync already running for ${lockKey}, waiting...`);
51
51
  return existing;
52
52
  }
53
- const syncPromise = this.executeSyncInternal(companyIntegrationID, contextUser, triggerType, onProgress, onNotification);
53
+ const syncPromise = this.executeSyncInternal(companyIntegrationID, contextUser, triggerType, onProgress, onNotification, options);
54
54
  IntegrationEngine.activeSyncs.set(lockKey, syncPromise);
55
55
  try {
56
56
  return await syncPromise;
@@ -62,11 +62,17 @@ export class IntegrationEngine extends BaseSingleton {
62
62
  /**
63
63
  * Internal sync execution method. Contains the full orchestration logic.
64
64
  */
65
- async executeSyncInternal(companyIntegrationID, contextUser, triggerType, onProgress, onNotification) {
66
- const config = await this.LoadRunConfiguration(companyIntegrationID, contextUser);
67
- const run = await this.CreateRunRecord(config.companyIntegration, triggerType, contextUser);
65
+ async executeSyncInternal(companyIntegrationID, contextUser, triggerType, onProgress, onNotification, options) {
66
+ const startTime = Date.now();
67
+ const config = await this.LoadRunConfiguration(companyIntegrationID, contextUser, options);
68
+ const run = await this.CreateRunRecord(config.companyIntegration, triggerType, contextUser, options?.ScheduledJobRunID);
68
69
  try {
69
70
  const result = await this.ExecuteEntityMaps(config, run, contextUser, onProgress);
71
+ result.RunID = run.Get('ID');
72
+ result.Duration = Date.now() - startTime;
73
+ if (result.RecordsErrored > 0) {
74
+ result.ErrorMessage = `Sync completed with ${result.RecordsErrored} error(s)`;
75
+ }
70
76
  await this.FinalizeRun(run, result, contextUser, onNotification);
71
77
  return result;
72
78
  }
@@ -78,7 +84,7 @@ export class IntegrationEngine extends BaseSingleton {
78
84
  /**
79
85
  * Loads all configuration needed for a sync run.
80
86
  */
81
- async LoadRunConfiguration(companyIntegrationID, contextUser) {
87
+ async LoadRunConfiguration(companyIntegrationID, contextUser, options) {
82
88
  const rv = new RunView();
83
89
  const [ciResult, entityMapsResult, integrationsResult] = await rv.RunViews([
84
90
  {
@@ -109,17 +115,24 @@ export class IntegrationEngine extends BaseSingleton {
109
115
  throw new Error(`Integration not found for CompanyIntegration: ${companyIntegrationID}`);
110
116
  }
111
117
  const connector = ConnectorFactory.Resolve(integration);
118
+ let entityMaps = entityMapsResult.Results;
119
+ // Filter to specific entity maps if requested
120
+ if (options?.EntityMapIDs && options.EntityMapIDs.length > 0) {
121
+ const requestedIDs = new Set(options.EntityMapIDs.map(id => id.toLowerCase()));
122
+ entityMaps = entityMaps.filter(m => requestedIDs.has(m.Get('ID').toLowerCase()));
123
+ }
112
124
  return {
113
125
  companyIntegration,
114
- entityMaps: entityMapsResult.Results,
126
+ entityMaps,
115
127
  integration,
116
128
  connector,
129
+ fullSync: options?.FullSync ?? false,
117
130
  };
118
131
  }
119
132
  /**
120
133
  * Creates a new CompanyIntegrationRun record to track this sync.
121
134
  */
122
- async CreateRunRecord(companyIntegration, triggerType, contextUser) {
135
+ async CreateRunRecord(companyIntegration, triggerType, contextUser, scheduledJobRunID) {
123
136
  const md = new Metadata();
124
137
  const run = await md.GetEntityObject('MJ: Company Integration Runs', contextUser);
125
138
  run.NewRecord();
@@ -129,6 +142,12 @@ export class IntegrationEngine extends BaseSingleton {
129
142
  run.Status = 'In Progress';
130
143
  run.TotalRecords = 0;
131
144
  run.ConfigData = JSON.stringify({ triggerType });
145
+ // Link to scheduled job run if triggered by the scheduler.
146
+ // Use Set() because the ScheduledJobRunID column won't exist on the
147
+ // generated entity type until CodeGen runs after the migration.
148
+ if (scheduledJobRunID) {
149
+ run.Set('ScheduledJobRunID', scheduledJobRunID);
150
+ }
132
151
  const saved = await run.Save();
133
152
  if (!saved) {
134
153
  throw new Error('Failed to create CompanyIntegrationRun record');
@@ -148,13 +167,16 @@ export class IntegrationEngine extends BaseSingleton {
148
167
  RecordsErrored: 0,
149
168
  RecordsSkipped: 0,
150
169
  Errors: [],
170
+ EntityMapResults: [],
151
171
  };
152
172
  const totalMaps = config.entityMaps.length;
153
173
  for (let i = 0; i < totalMaps; i++) {
154
174
  const entityMap = config.entityMaps[i];
175
+ const mapStartTime = Date.now();
155
176
  try {
156
177
  const mapResult = await this.ProcessSingleEntityMap(config, entityMap, run, contextUser, i, totalMaps, onProgress);
157
178
  this.MergeResult(aggregate, mapResult);
179
+ aggregate.EntityMapResults.push(this.buildEntityMapResult(entityMap, mapResult, Date.now() - mapStartTime));
158
180
  }
159
181
  catch (err) {
160
182
  const objName = entityMap.ExternalObjectName ?? String(entityMap.Get('ID'));
@@ -169,6 +191,19 @@ export class IntegrationEngine extends BaseSingleton {
169
191
  Severity: 'Critical',
170
192
  ExternalRecord: { ExternalID: objName, ObjectType: objName, Fields: {} },
171
193
  });
194
+ aggregate.EntityMapResults.push({
195
+ EntityMapID: entityMap.Get('ID'),
196
+ ExternalObjectName: objName,
197
+ EntityName: entityMap.Entity ?? '',
198
+ Success: false,
199
+ RecordsProcessed: 0,
200
+ RecordsCreated: 0,
201
+ RecordsUpdated: 0,
202
+ RecordsDeleted: 0,
203
+ RecordsErrored: 1,
204
+ RecordsSkipped: 0,
205
+ Duration: Date.now() - mapStartTime,
206
+ });
172
207
  }
173
208
  }
174
209
  return aggregate;
@@ -180,8 +215,8 @@ export class IntegrationEngine extends BaseSingleton {
180
215
  const entityMapID = entityMap.Get('ID');
181
216
  const fieldMaps = await this.LoadFieldMaps(entityMapID, contextUser);
182
217
  const watermark = await this.watermarkService.Load(entityMapID, contextUser);
183
- // A6: Validate watermark before using it
184
- let initialWatermark = watermark?.WatermarkValue ?? null;
218
+ // A6: Validate watermark before using it — skip entirely when FullSync requested
219
+ let initialWatermark = config.fullSync ? null : (watermark?.WatermarkValue ?? null);
185
220
  if (initialWatermark && watermark) {
186
221
  const watermarkType = (watermark.WatermarkType ?? 'Timestamp');
187
222
  if (!this.watermarkService.ValidateWatermark(initialWatermark, watermarkType)) {
@@ -202,25 +237,64 @@ export class IntegrationEngine extends BaseSingleton {
202
237
  let hasMore = true;
203
238
  let currentWatermark = initialWatermark;
204
239
  let recordsInMap = 0;
240
+ let currentPage;
241
+ let currentOffset;
242
+ let currentCursor;
243
+ let batchCount = 0;
244
+ let previousBatchFingerprint;
245
+ const MAX_BATCHES_PER_MAP = 5000;
205
246
  while (hasMore) {
247
+ batchCount++;
248
+ if (batchCount > MAX_BATCHES_PER_MAP) {
249
+ console.error(`[IntegrationEngine] Safety limit reached: ${MAX_BATCHES_PER_MAP} batches for ` +
250
+ `${entityMap.ExternalObjectName}. Stopping to prevent infinite loop.`);
251
+ break;
252
+ }
206
253
  const ctx = {
207
254
  CompanyIntegration: config.companyIntegration,
208
255
  ObjectName: entityMap.ExternalObjectName,
209
256
  WatermarkValue: currentWatermark,
210
257
  BatchSize: this.MaxBatchSize,
211
258
  ContextUser: contextUser,
259
+ CurrentPage: currentPage,
260
+ CurrentOffset: currentOffset,
261
+ CurrentCursor: currentCursor,
212
262
  };
213
263
  const batch = await config.connector.FetchChanges(ctx);
214
- // A7: Batch size enforcement — truncate if connector returns more than MaxBatchSize
215
- let batchRecords = batch.Records;
216
- if (batchRecords.length > this.MaxBatchSize) {
217
- console.warn(`[IntegrationEngine] Connector returned ${batchRecords.length} records, exceeding MaxBatchSize of ${this.MaxBatchSize}. Truncating.`);
218
- batchRecords = batchRecords.slice(0, this.MaxBatchSize);
264
+ // Enforce MaxBatchSize — connectors are asked to respect it but may overshoot
265
+ if (batch.Records.length > this.MaxBatchSize) {
266
+ console.warn(`[IntegrationEngine] ${entityMap.ExternalObjectName}: connector returned ` +
267
+ `${batch.Records.length} records, exceeding MaxBatchSize of ${this.MaxBatchSize}. ` +
268
+ `Truncating to ${this.MaxBatchSize}.`);
269
+ batch.Records = batch.Records.slice(0, this.MaxBatchSize);
270
+ }
271
+ if (batch.Records.length > 0) {
272
+ const fingerprint = batch.Records.map(r => r.ExternalID).join(',');
273
+ if (fingerprint === previousBatchFingerprint) {
274
+ console.warn(`[IntegrationEngine] Duplicate batch detected for ${entityMap.ExternalObjectName} — ` +
275
+ `connector returned same records twice. Stopping to prevent infinite loop.`);
276
+ break;
277
+ }
278
+ previousBatchFingerprint = fingerprint;
219
279
  }
220
- const mapped = this.fieldMappingEngine.Apply(batchRecords, fieldMaps, entityMap.Entity);
280
+ const mapped = this.fieldMappingEngine.Apply(batch.Records, fieldMaps, entityMap.Entity);
221
281
  const resolved = await this.matchEngine.Resolve(mapped, entityMap, fieldMaps, contextUser);
282
+ const beforeApply = result.RecordsCreated + result.RecordsUpdated + result.RecordsSkipped + result.RecordsErrored;
222
283
  await this.ApplyRecords(resolved, config.companyIntegration, entityMap, result, contextUser);
223
- recordsInMap += batchRecords.length;
284
+ const afterApply = result.RecordsCreated + result.RecordsUpdated + result.RecordsSkipped + result.RecordsErrored;
285
+ if (batch.Records.length > 0) {
286
+ const written = afterApply - beforeApply;
287
+ const offsetInfo = currentOffset != null ? ` (offset ${currentOffset})` : '';
288
+ console.log(`[IntegrationEngine] ${entityMap.ExternalObjectName}: wrote ${written} records to DB` +
289
+ `${offsetInfo} — running totals: ${result.RecordsCreated} created, ${result.RecordsUpdated} updated, ` +
290
+ `${result.RecordsSkipped} skipped, ${result.RecordsErrored} errored` +
291
+ (batch.HasMore ? ` | more batches pending` : ` | batch complete`));
292
+ // Update progress on the watermark record so the DB reflects live sync state
293
+ if (batch.HasMore) {
294
+ await this.watermarkService.UpdateProgress(entityMapID, afterApply, contextUser);
295
+ }
296
+ }
297
+ recordsInMap += batch.Records.length;
224
298
  // A8: Progress tracking
225
299
  if (onProgress) {
226
300
  this.emitProgress(onProgress, entityMapIndex, totalEntityMaps, recordsInMap, recordsInMap);
@@ -228,7 +302,10 @@ export class IntegrationEngine extends BaseSingleton {
228
302
  if (batch.NewWatermarkValue) {
229
303
  currentWatermark = batch.NewWatermarkValue;
230
304
  }
231
- hasMore = batch.HasMore;
305
+ currentPage = batch.NextPage;
306
+ currentOffset = batch.NextOffset;
307
+ currentCursor = batch.NextCursor;
308
+ hasMore = batch.HasMore === true; // Explicit boolean check — prevents truthy undefined from looping
232
309
  }
233
310
  if (currentWatermark) {
234
311
  await this.watermarkService.Update(entityMapID, currentWatermark, contextUser);
@@ -338,10 +415,9 @@ export class IntegrationEngine extends BaseSingleton {
338
415
  }
339
416
  const md = new Metadata();
340
417
  const entity = await md.GetEntityObject(record.MJEntityName, contextUser);
341
- // Use the entity's actual PK field (SourceRecordID for integration tables, ID for __mj targets)
342
418
  const entityInfo = md.Entities.find(e => e.Name === record.MJEntityName);
343
- const pkFieldName = entityInfo?.FirstPrimaryKey?.Name ?? 'ID';
344
- const loaded = await entity.InnerLoad(this.BuildCompositeKey(record.MatchedMJRecordID, pkFieldName));
419
+ const pkFields = entityInfo?.PrimaryKeys ?? (entityInfo?.FirstPrimaryKey ? [entityInfo.FirstPrimaryKey] : []);
420
+ const loaded = await entity.InnerLoad(this.BuildEntityPrimaryKey(record.MatchedMJRecordID, pkFields));
345
421
  if (!loaded) {
346
422
  throw new Error(`Failed to load ${record.MJEntityName} record ${record.MatchedMJRecordID}`);
347
423
  }
@@ -379,8 +455,8 @@ export class IntegrationEngine extends BaseSingleton {
379
455
  const md = new Metadata();
380
456
  const entity = await md.GetEntityObject(record.MJEntityName, contextUser);
381
457
  const entityInfo = md.Entities.find(e => e.Name === record.MJEntityName);
382
- const pkFieldName = entityInfo?.FirstPrimaryKey?.Name ?? 'ID';
383
- const loaded = await entity.InnerLoad(this.BuildCompositeKey(record.MatchedMJRecordID, pkFieldName));
458
+ const pkFields = entityInfo?.PrimaryKeys ?? (entityInfo?.FirstPrimaryKey ? [entityInfo.FirstPrimaryKey] : []);
459
+ const loaded = await entity.InnerLoad(this.BuildEntityPrimaryKey(record.MatchedMJRecordID, pkFields));
384
460
  if (!loaded) {
385
461
  throw new Error(`Failed to load ${record.MJEntityName} for deletion: ${record.MatchedMJRecordID}`);
386
462
  }
@@ -390,12 +466,22 @@ export class IntegrationEngine extends BaseSingleton {
390
466
  }
391
467
  }
392
468
  /**
393
- * Builds a CompositeKey for a record lookup.
394
- * Integration tables use the natural PK field from the source system.
469
+ * Builds a CompositeKey for a record lookup using the entity's PK field definitions.
470
+ * Supports both single-PK and composite-PK entities. For composite PKs the recordID
471
+ * is expected to be a '|'-delimited string of values in PK-field sequence order —
472
+ * the same format written by BaseRESTIntegrationConnector.ToExternalRecord.
395
473
  */
396
- BuildCompositeKey(id, fieldName = 'ID') {
474
+ BuildEntityPrimaryKey(recordID, pkFields) {
397
475
  const key = new CompositeKey();
398
- key.KeyValuePairs.push({ FieldName: fieldName, Value: id });
476
+ if (pkFields.length <= 1) {
477
+ key.KeyValuePairs.push({ FieldName: pkFields[0]?.Name ?? 'ID', Value: recordID });
478
+ }
479
+ else {
480
+ const parts = recordID.split('|');
481
+ for (let i = 0; i < pkFields.length; i++) {
482
+ key.KeyValuePairs.push({ FieldName: pkFields[i].Name, Value: parts[i] ?? '' });
483
+ }
484
+ }
399
485
  return key;
400
486
  }
401
487
  /**
@@ -465,6 +551,24 @@ export class IntegrationEngine extends BaseSingleton {
465
551
  aggregate.Success = false;
466
552
  }
467
553
  }
554
+ /**
555
+ * Builds a per-entity-map result summary from the entity map and its sync result.
556
+ */
557
+ buildEntityMapResult(entityMap, mapResult, duration) {
558
+ return {
559
+ EntityMapID: entityMap.Get('ID'),
560
+ ExternalObjectName: entityMap.ExternalObjectName ?? '',
561
+ EntityName: entityMap.Entity ?? '',
562
+ Success: mapResult.RecordsErrored === 0,
563
+ RecordsProcessed: mapResult.RecordsProcessed,
564
+ RecordsCreated: mapResult.RecordsCreated,
565
+ RecordsUpdated: mapResult.RecordsUpdated,
566
+ RecordsDeleted: mapResult.RecordsDeleted,
567
+ RecordsErrored: mapResult.RecordsErrored,
568
+ RecordsSkipped: mapResult.RecordsSkipped,
569
+ Duration: duration,
570
+ };
571
+ }
468
572
  /**
469
573
  * Finalizes a successful run with aggregate totals and emits a completion notification.
470
574
  */
@@ -1 +1 @@
1
- {"version":3,"file":"IntegrationEngine.js","sourceRoot":"","sources":["../src/IntegrationEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IntegrationEngine.js","sourceRoot":"","sources":["../src/IntegrationEngine.ts"],"names":[],"mappings":"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"}
@@ -32,11 +32,22 @@ export declare class MatchEngine {
32
32
  /**
33
33
  * Attempts to find an existing MJ record by key field matching, then falls back
34
34
  * to the CompanyIntegrationRecordMap.
35
+ *
36
+ * For composite-PK entities (no auto-generated ID), key-field matching is always
37
+ * attempted (even when no key fields are configured) so that PK fields themselves
38
+ * serve as the unique match criteria. This handles entities like InsightTopics
39
+ * where (person_id, topic) together form the natural key.
35
40
  */
36
41
  private FindExistingRecord;
37
42
  /**
38
43
  * Searches for an existing MJ record using key field values.
39
- * Returns the value of the entity's primary key field (natural PK from source system).
44
+ *
45
+ * For composite-PK entities, all PK fields are added to the WHERE filter to
46
+ * guarantee a unique match, and the returned ID is a '|'-delimited composite
47
+ * of all PK field values (matching the ExternalID format used by connectors).
48
+ *
49
+ * For single-PK entities, behaviour is unchanged: filter by configured key fields,
50
+ * return the single PK value as a plain string.
40
51
  */
41
52
  private FindByKeyFields;
42
53
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"MatchEngine.d.ts","sourceRoot":"","sources":["../src/MatchEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;AAEnE;;;GAGG;AACH,qBAAa,WAAW;IACpB;;;;;;;;;OASG;IACU,OAAO,CAChB,OAAO,EAAE,YAAY,EAAE,EACvB,SAAS,EAAE,4BAA4B,EACvC,SAAS,EAAE,2BAA2B,EAAE,EACxC,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,YAAY,EAAE,CAAC;IAkB1B;;OAEG;YACW,mBAAmB;IAsBjC;;OAEG;YACW,oBAAoB;IAmBlC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;;OAGG;YACW,kBAAkB;IAmBhC;;;OAGG;YACW,eAAe;IA0B7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;OAEG;YACW,kBAAkB;CAsBnC"}
1
+ {"version":3,"file":"MatchEngine.d.ts","sourceRoot":"","sources":["../src/MatchEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACnG,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;AAEnE;;;GAGG;AACH,qBAAa,WAAW;IACpB;;;;;;;;;OASG;IACU,OAAO,CAChB,OAAO,EAAE,YAAY,EAAE,EACvB,SAAS,EAAE,4BAA4B,EACvC,SAAS,EAAE,2BAA2B,EAAE,EACxC,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,YAAY,EAAE,CAAC;IAkB1B;;OAEG;YACW,mBAAmB;IAsBjC;;OAEG;YACW,oBAAoB;IAmBlC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;;;;;;;OAQG;YACW,kBAAkB;IAuBhC;;;;;;;;;OASG;YACW,eAAe;IAiD7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;OAEG;YACW,kBAAkB;CAsBnC"}
@@ -59,9 +59,17 @@ export class MatchEngine {
59
59
  /**
60
60
  * Attempts to find an existing MJ record by key field matching, then falls back
61
61
  * to the CompanyIntegrationRecordMap.
62
+ *
63
+ * For composite-PK entities (no auto-generated ID), key-field matching is always
64
+ * attempted (even when no key fields are configured) so that PK fields themselves
65
+ * serve as the unique match criteria. This handles entities like InsightTopics
66
+ * where (person_id, topic) together form the natural key.
62
67
  */
63
68
  async FindExistingRecord(record, entityMap, keyFields, contextUser) {
64
- if (keyFields.length > 0) {
69
+ const md = new Metadata();
70
+ const entityInfo = md.Entities.find(e => e.Name === record.MJEntityName);
71
+ const isCompositePK = (entityInfo?.PrimaryKeys?.length ?? 0) > 1;
72
+ if (keyFields.length > 0 || isCompositePK) {
65
73
  const idByKeys = await this.FindByKeyFields(record, keyFields, contextUser);
66
74
  if (idByKeys)
67
75
  return idByKeys;
@@ -70,27 +78,54 @@ export class MatchEngine {
70
78
  }
71
79
  /**
72
80
  * Searches for an existing MJ record using key field values.
73
- * Returns the value of the entity's primary key field (natural PK from source system).
81
+ *
82
+ * For composite-PK entities, all PK fields are added to the WHERE filter to
83
+ * guarantee a unique match, and the returned ID is a '|'-delimited composite
84
+ * of all PK field values (matching the ExternalID format used by connectors).
85
+ *
86
+ * For single-PK entities, behaviour is unchanged: filter by configured key fields,
87
+ * return the single PK value as a plain string.
74
88
  */
75
89
  async FindByKeyFields(record, keyFields, contextUser) {
90
+ const md = new Metadata();
91
+ const entityInfo = md.Entities.find(e => e.Name === record.MJEntityName);
92
+ const pkFields = entityInfo?.PrimaryKeys ?? (entityInfo?.FirstPrimaryKey ? [entityInfo.FirstPrimaryKey] : []);
93
+ if (pkFields.length === 0)
94
+ return null;
95
+ // Start with the configured key-field filter clauses
76
96
  const filterClauses = this.BuildKeyFieldFilter(record, keyFields);
97
+ // For composite-PK entities, augment the filter with all PK field values
98
+ // taken directly from the mapped record. This ensures uniqueness even when
99
+ // no key fields are configured and prevents matching the wrong row when
100
+ // the configured key fields alone are not unique (e.g. person_id matches
101
+ // all topics for a given person).
102
+ if (pkFields.length > 1) {
103
+ for (const pkField of pkFields) {
104
+ const value = record.MappedFields[pkField.Name];
105
+ if (value == null)
106
+ continue;
107
+ const escaped = String(value).replace(/'/g, "''");
108
+ const clause = `[${pkField.Name}] = '${escaped}'`;
109
+ if (!filterClauses.includes(clause)) {
110
+ filterClauses.push(clause);
111
+ }
112
+ }
113
+ }
77
114
  if (filterClauses.length === 0)
78
115
  return null;
79
- // Look up the entity's PK field name from metadata
80
- const md = new Metadata();
81
- const entityInfo = md.Entities.find(e => e.Name === record.MJEntityName);
82
- const pkFieldName = entityInfo?.FirstPrimaryKey?.Name ?? 'ID';
83
116
  const rv = new RunView();
84
117
  const result = await rv.RunView({
85
118
  EntityName: record.MJEntityName,
86
119
  ExtraFilter: filterClauses.join(' AND '),
87
- Fields: [pkFieldName],
120
+ Fields: pkFields.map(f => f.Name),
88
121
  MaxRows: 1,
89
122
  ResultType: 'simple',
90
123
  }, contextUser);
91
124
  if (!result.Success || result.Results.length === 0)
92
125
  return null;
93
- return result.Results[0][pkFieldName];
126
+ // Return all PK values joined with '|' — matches the ExternalID format
127
+ // written by BaseRESTIntegrationConnector.ToExternalRecord for composite PKs.
128
+ return pkFields.map(f => result.Results[0][f.Name] ?? '').join('|');
94
129
  }
95
130
  /**
96
131
  * Builds a SQL filter clause from key field values on a mapped record.
@@ -1 +1 @@
1
- {"version":3,"file":"MatchEngine.js","sourceRoot":"","sources":["../src/MatchEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAiB,MAAM,sBAAsB,CAAC;AAIxE;;;GAGG;AACH,MAAM,OAAO,WAAW;IACpB;;;;;;;;;OASG;IACI,KAAK,CAAC,OAAO,CAChB,OAAuB,EACvB,SAAuC,EACvC,SAAwC,EACxC,WAAqB;QAErB,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAClF,MAAM,kBAAkB,GAAG,SAAS,CAAC,kBAAwC,CAAC;QAE9E,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAC3C,MAAM,EACN,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,WAAW,CACd,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,mBAAmB,CAC7B,MAAoB,EACpB,SAAuC,EACvC,SAAwC,EACxC,kBAAsC,EACtC,WAAqB;QAErB,IAAI,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC5C,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,CAC5C,CAAC;QAEF,IAAI,UAAU,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IAC/C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAC9B,MAAoB,EACpB,SAAuC,EACvC,WAAqB;QAErB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC5C,SAAS,CAAC,oBAAoB,EAC9B,MAAM,CAAC,cAAc,CAAC,UAAU,EAChC,SAAS,CAAC,QAAQ,EAClB,WAAW,CACd,CAAC;QAEF,IAAI,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;QAC9E,CAAC;QAED,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAC7C,CAAC;IAED;;OAEG;IACK,qBAAqB,CACzB,MAAoB,EACpB,UAAkB,EAClB,kBAAsC;QAEtC,IAAI,kBAAkB,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;QAC5E,CAAC;QACD,OAAO,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC;IAC9E,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,kBAAkB,CAC5B,MAAoB,EACpB,SAAuC,EACvC,SAAwC,EACxC,WAAqB;QAErB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAC5E,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,CAC1B,SAAS,CAAC,oBAAoB,EAC9B,MAAM,CAAC,cAAc,CAAC,UAAU,EAChC,SAAS,CAAC,QAAQ,EAClB,WAAW,CACd,CAAC;IACN,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,eAAe,CACzB,MAAoB,EACpB,SAAwC,EACxC,WAAqB;QAErB,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAClE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAE5C,mDAAmD;QACnD,MAAM,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,YAAY,CAAC,CAAC;QACzE,MAAM,WAAW,GAAG,UAAU,EAAE,eAAe,EAAE,IAAI,IAAI,IAAI,CAAC;QAE9D,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAyB;YACpD,UAAU,EAAE,MAAM,CAAC,YAAY;YAC/B,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;YACxC,MAAM,EAAE,CAAC,WAAW,CAAC;YACrB,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,QAAQ;SACvB,EAAE,WAAW,CAAC,CAAC;QAEhB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAChE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACK,mBAAmB,CACvB,MAAoB,EACpB,SAAwC;QAExC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC;YAC3D,IAAI,KAAK,IAAI,IAAI;gBAAE,SAAS;YAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,oBAAoB,QAAQ,OAAO,GAAG,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAC5B,oBAA4B,EAC5B,UAAkB,EAClB,QAAgB,EAChB,WAAqB;QAErB,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAA6B;YACxD,UAAU,EAAE,qCAAqC;YACjD,WAAW,EACP,yBAAyB,oBAAoB,IAAI;gBACjD,+BAA+B,iBAAiB,IAAI;gBACpD,iBAAiB,QAAQ,GAAG;YAChC,MAAM,EAAE,CAAC,gBAAgB,CAAC;YAC1B,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,QAAQ;SACvB,EAAE,WAAW,CAAC,CAAC;QAEhB,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAChE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;IAC5C,CAAC;CACJ"}
1
+ {"version":3,"file":"MatchEngine.js","sourceRoot":"","sources":["../src/MatchEngine.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,17 @@ export declare class WatermarkService {
24
24
  * @param contextUser - User context for data access
25
25
  */
26
26
  Update(entityMapID: string, newValue: string, contextUser: UserInfo): Promise<void>;
27
+ /**
28
+ * Updates the progress fields on an existing watermark mid-sync without changing
29
+ * the WatermarkValue. Updates RecordsSynced to the cumulative total written so far
30
+ * and refreshes LastSyncAt so the DB reflects live progress between batches.
31
+ * Silently skips if no watermark record exists yet.
32
+ *
33
+ * @param entityMapID - The entity map being synced
34
+ * @param totalWritten - Cumulative number of records written to DB so far
35
+ * @param contextUser - User context for data access
36
+ */
37
+ UpdateProgress(entityMapID: string, totalWritten: number, contextUser: UserInfo): Promise<void>;
27
38
  /**
28
39
  * Validates a watermark value against its expected type.
29
40
  *
@@ -1 +1 @@
1
- {"version":3,"file":"WatermarkService.d.ts","sourceRoot":"","sources":["../src/WatermarkService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,qBAAa,gBAAgB;IACzB;;;;;;OAMG;IACU,IAAI,CACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC;IAanD;;;;;;;;OAQG;IACU,MAAM,CACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;OAMG;IACI,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO;IAkBvF;;OAEG;YACW,uBAAuB;IAYrC;;OAEG;YACW,kBAAkB;CAuBnC"}
1
+ {"version":3,"file":"WatermarkService.d.ts","sourceRoot":"","sources":["../src/WatermarkService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,qBAAa,gBAAgB;IACzB;;;;;;OAMG;IACU,IAAI,CACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC;IAcnD;;;;;;;;OAQG;IACU,MAAM,CACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;;;;OASG;IACU,cAAc,CACvB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;OAMG;IACI,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO;IAkBvF;;OAEG;YACW,uBAAuB;IAYrC;;OAEG;YACW,kBAAkB;CAuBnC"}
@@ -16,6 +16,7 @@ export class WatermarkService {
16
16
  const result = await rv.RunView({
17
17
  EntityName: 'MJ: Company Integration Sync Watermarks',
18
18
  ExtraFilter: `EntityMapID='${entityMapID}'`,
19
+ OrderBy: 'LastSyncAt DESC',
19
20
  MaxRows: 1,
20
21
  ResultType: 'entity_object',
21
22
  }, contextUser);
@@ -41,6 +42,24 @@ export class WatermarkService {
41
42
  await this.CreateNewWatermark(entityMapID, newValue, contextUser);
42
43
  }
43
44
  }
45
+ /**
46
+ * Updates the progress fields on an existing watermark mid-sync without changing
47
+ * the WatermarkValue. Updates RecordsSynced to the cumulative total written so far
48
+ * and refreshes LastSyncAt so the DB reflects live progress between batches.
49
+ * Silently skips if no watermark record exists yet.
50
+ *
51
+ * @param entityMapID - The entity map being synced
52
+ * @param totalWritten - Cumulative number of records written to DB so far
53
+ * @param contextUser - User context for data access
54
+ */
55
+ async UpdateProgress(entityMapID, totalWritten, contextUser) {
56
+ const existing = await this.Load(entityMapID, contextUser);
57
+ if (!existing)
58
+ return;
59
+ existing.RecordsSynced = totalWritten;
60
+ existing.LastSyncAt = new Date();
61
+ await existing.Save();
62
+ }
44
63
  /**
45
64
  * Validates a watermark value against its expected type.
46
65
  *