Configurable maximum batch size. Connector batches exceeding this are truncated.
ReadonlyMaxEffective per-table column limit — read from MJ_INTEGRATION_MAX_COLUMNS_PER_TABLE at startup and clamped to [1, MAX_COLUMNS_CEILING] (defaults to the ceiling when unset). Objects whose column count exceeds this are auto-disabled at apply time (reversible) instead of failing CREATE TABLE.
Static ReadonlyMAX_SQL Server's hard per-table column limit is 1024; the framework reserves headroom for its own sync/system columns (the _mj_integration* set + ID + timestamps), so the effective ceiling is 1000. MJ_INTEGRATION_MAX_COLUMNS_PER_TABLE can only LOWER this, never raise it past 1000.
ProtectedBaseProtectedProviderReturns the active provider — explicit override if set, otherwise the global default.
StaticInstanceConfigures the engine by loading all integration metadata. Delegates to IntegrationEngineBase.Config().
OptionalforceRefresh: booleanOptionalcontextUser: UserInfoOptionalprovider: IMetadataProviderThe Global Object Store is a place to store global objects that need to be shared across the application. Depending on the execution environment, this could be the window object in a browser, or the global object in a node environment, or something else in other contexts. The key here is that in some cases static variables are not truly shared because it is possible that a given class might have copies of its code in multiple paths in a deployed application. This approach ensures that no matter how many code copies might exist, there is only one instance of the object in question by using the Global Object Store.
Resumes any syncs that were orphaned by a process restart. Finds all CompanyIntegrationRun records with Status='In Progress', determines which entity maps already completed (have run details), and resumes from the remaining entity maps using existing watermarks.
Call this once during MJAPI startup after metadata is loaded.
Optionalprovider: IMetadataProviderExecutes a full sync run for a company integration. If a sync is already running for the same integration, waits for it to finish and returns the existing result (concurrency lock).
ID of the CompanyIntegration to sync
User context for all data operations
What triggered this sync (defaults to 'Manual')
OptionalonProgress: OnProgressCallbackOptional callback invoked with progress updates during sync
OptionalonNotification: OnNotificationCallbackOptional callback invoked with a notification when the sync completes or fails
Optionaloptions: IntegrationSyncOptionsOptionalprovider: IMetadataProviderAggregate sync result with record counts and errors
Registers (or clears, with undefined) the post-sync custom-column promotion hook.
StaticAcquireAcquires the maintenance lock for a CompanyIntegration. Returns false (does NOT wait) when
a data sync is currently running or another maintenance operation already holds the lock —
the caller decides whether to wait for GetSyncProgress to clear or surface the conflict.
StaticCancelCancel a running sync for a connector. Returns true if a sync was found and signalled.
StaticGetGet all active sync progress entries
Protected StaticgetReturns the singleton instance of the class. If the instance does not exist, it is created and stored in the Global Object Store. If className is provided it will be used as part of the key in the Global Object Store, otherwise the actual class name will be used. NOTE: the class name used by default is the lowest level of the object hierarchy, so if you have a class that extends another class, the lowest level class name will be used.
OptionalclassName: stringStaticGetCurrent maintenance lock for a CompanyIntegration, or undefined when none is held.
StaticGetRead current sync progress for a connector. Returns undefined if no sync is running.
StaticRatchetU3 — pure, MONOTONIC progress fold: applies one per-map progress event to the live snapshot as a high-water mark. Under syncConcurrency > 1 events arrive out of order, so counters only ever ratchet UP — a progress bar must never go backwards. Totals are assigned (they're authoritative per event); completed/processed take max().
StaticReleaseReleases the maintenance lock (idempotent — safe in a finally).
Generic, abstract base class for any scenario where we want to use a Singleton pattern. This base class abstracts away the complexity of ensuring a truly global singleton instance across multiple code paths in a deployed application. It uses a Global Object Store to ensure that only one instance of the class exists in the application even if the class has code imported into multiple execution paths (which is not optimal, of course, but can occur in some situations).