Skip to content

@memberjunction/integration-actions

MJ Actions for triggering MemberJunction integration syncs. Connects the Integration Engine to the MJ Actions + Scheduling system.

This package is registered as a workspace package. Add it as a dependency and import it so the @RegisterClass decorator fires:

// In your bootstrap or entry point:
import '@memberjunction/integration-actions';

Action Name: Run Integration Sync

Triggers a full sync run for a MJ: Company Integration record.

ParameterDirectionTypeRequiredDescription
CompanyIntegrationIDInputstringYesID of the CompanyIntegration to sync
TriggerTypeInputstringNoManual, Scheduled, or Webhook (default: Manual)
RecordsProcessedOutputnumberTotal records processed
RecordsCreatedOutputnumberRecords created in MJ
RecordsUpdatedOutputnumberRecords updated in MJ
RecordsDeletedOutputnumberRecords deleted in MJ
RecordsErroredOutputnumberRecords that encountered errors
RecordsSkippedOutputnumberRecords that were skipped
ErrorSummaryOutputstringJSON array of first 10 errors (only when errors exist)

Result Codes:

  • SUCCESS — Sync completed without errors
  • SYNC_COMPLETED_WITH_ERRORS — Sync completed but some records failed
  • MISSING_PARAMETER — Required CompanyIntegrationID not provided
  • UNEXPECTED_ERROR — Unhandled exception during sync
  1. Create an MJ: Actions record for Run Integration Sync
  2. Create an MJ: Action Params record for CompanyIntegrationID
  3. Set up a Scheduled Job pointing to this action
  4. The scheduler calls the action on the configured cadence
import '@memberjunction/integration-actions'; // ensure registration
import { ActionEngine } from '@memberjunction/actions';
const engine = ActionEngine.Instance;
const result = await engine.RunAction({
ActionName: 'Run Integration Sync',
ContextUser: currentUser,
Params: [
{ Name: 'CompanyIntegrationID', Type: 'Input', Value: 'your-ci-id' },
{ Name: 'TriggerType', Type: 'Input', Value: 'Scheduled' },
],
});

For server-side code that doesn’t go through the Actions system:

import { IntegrationOrchestrator } from '@memberjunction/integration-engine';
const orchestrator = new IntegrationOrchestrator();
const result = await orchestrator.RunSync(
companyIntegrationID,
contextUser,
'Manual',
(progress) => console.log(`${progress.PercentComplete}%`),
(notification) => console.log(notification.Subject)
);