Member Junction
    Preparing search index...

    Scheduled geocoding maintenance action that handles three tasks:

    1. Missing records — Finds records in geo-enabled entities that have non-null geo fields but no RecordGeoCode row, and geocodes them.
    2. Failed retries — Retries RecordGeoCode rows with Status='failed' up to a configurable max retry count.
    3. Orphan cleanup — Removes RecordGeoCode rows whose source entity record no longer exists.
    • BatchSize (default 10) — Number of records to geocode concurrently in each parallel batch. Controls API rate pressure. Google Geocoding API allows 50 QPS, so 10 is conservative and leaves headroom.
    • MaxTotalRecords (default 50,000) — Safety cap on the total number of records processed in a single run. Prevents unbounded memory growth in extreme cases. Override via scheduled job parameters. Logs a warning when the limit is reached so operators know remaining records exist for the next run. Also acts as a coarse per-run quota guard for free-tier API plans (e.g. set to 2400 to stay under Geocod.io's daily 2,500 free cap).
    • MaxRetries (default 5) — Maximum retry count for failed geocoding attempts before a record is considered permanently failed.
    • GeocodingProvider (optional) — Name of the geocoding provider to use for this run: 'google', 'geocodio', or 'here'. Overrides the apiIntegrations.geocoding.defaultProvider config setting. When omitted, falls back to config; when neither is set, the first configured provider is chosen in priority order: geocodio → here → google.

    After geocoding each record, the action loads the parent entity record and fires a synthetic BaseEntity 'save' event so that any cached RunView results containing stale lat/lng (from the RecordGeoCode JOIN) are invalidated. This ensures the server cache stays consistent.

    Designed to run on a schedule (every few hours) as a safety net for records that bypass BaseEntity.Save() (bulk SQL imports, direct DB operations).

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    Methods

    Constructors

    Properties

    AuthorizesCaller: boolean

    True when the action authorizes its caller itself, so a public entry point such as the RunAction mutation may run it for an authenticated user without an MJ: Action Authorizations link. Set it only on an action that either checks an authorization the caller must hold, or reads and writes only with the caller's own permissions. Leave it false for an action that acts with more authority than its caller, or that reaches data or sends messages the caller chooses but could not otherwise reach.

    The engine reads the marker only from the class that runs, never from its parent classes. A subclass that overrides a marked action must declare the marker again.

    Methods