Operations

Purge GP-synced accounts

DESTRUCTIVE — staging and production. Removes BigCommerce company, customer, order, and invoice data that CrossStitch created from Great Plains for the selected account(s), then clears the GP↔BC link. Hand-built BC accounts with no GP link are untouched. Claimed orgs that still have a GP link will be purged. Prefer Dry run first.
Storewide wipe disabled (PurgeExecuteEnabled=false). Dry-run always works. Single-account purge (exactly one account number) still works with arm token + PURGE. Storewide (blank account number) is refused until a PR enables the kill switch.

Prefer Dry run before Run purge. Arm token required for both (PurgeAuthorizationToken). Run purge also requires typing PURGE. Enter one organization / customer account number for a single account, or leave blank for storewide (storewide needs the kill switch enabled above). Nothing is deleted on Dry run.

Who

Ops secret — typed here, not stored on the page. Sent as X-Purge-Token.
Dynamics GP customer number (same # used to claim an org on GPH). Churches, districts, and other orgs use this field. Exactly one account, or leave empty for storewide.
With an account number filled in, leave as both unless you know the row is only one type.

Action

Dry run previews only. Run purge enqueues the Hangfire job after you type PURGE.
Each level includes everything above it. Start at 1 and move down only after the previous report looks good. 1 checks arm token + kill-switch status (no GP/BC calls). 2 adds how many org/individual writebacks are in scope. 3 adds BC company/customer id lookup for a small sample (first 3 of each). 4 adds the full would-purge walk for that sample (invoices, payments, orders — still no deletes). 5 same walk for every account in scope (slow). Ignored when you Run purge — does not change what the job deletes.
Required to enqueue. Case-sensitive.

Full customer sync (ignore watermark)

Runs the same SyncCustomersToBigCommerce job as nightly, but loads every GP customer with email + country (no DateModified filter). Use after a purge so individuals without writebacks are recreated. Unclaimed orgs still skip company create. Does not import order history and does not enqueue per-customer history jobs (unlike nightly creates) — run Individual order history backfill after FULLSYNC completes. Heavy / slow. Same arm token as purge.

Same PurgeAuthorizationToken as purge.

Individual order history backfill

Imports personal-tagged GP→BC order history (office + legacy WEB; not WEB_BC) for individuals (CustomerClass == 00) that already have a BC customer writeback. Orgs stay on claim. Same arm token as purge. Target one GP account # to test a single account, or leave blank for the fleet. Enqueue validates writeback targets then starts Hangfire immediately (avoids Cloudflare HTTP timeouts). Dry-run still walks claim-history per account for order counts — use a single GP # for dry-run on prod, or skip dry-run and enqueue.

Same PurgeAuthorizationToken as purge.
Same # as purge targeting. Exactly one individual GP account, or leave empty for every individual with a writeback.
Default 84 (~7 years, same as claim history). Range 1–120. Caps how far we ask GP to look — history still only goes back as far as GP actually has for that account.

Discount group reconcile

Sets or clears BigCommerce customer groups from GP price-book membership. Books come from _AG_Webstore_ItemCustomerPrice_Sync. Who is on those books comes from SOP10205. Diff-only writes. Company users (Owner/Admin/Buyer) are never given a personal book — Independent Companies owns that login. After they leave a company, the next run can assign something like MIN-AG if that book is in the list. No arm token. Prefer Dry run first; fleet execute requires typing RECONCILE. Nightly Hangfire runs Fleet · All at 04:15 (after price lists at 04:00). This card is for dry run, one GP #, or replay after a view change.

Synced price books
Loading books…
If the book you want is not listed, ask whoever administers Dynamics GP / the webstore ETL views to add it to _AG_Webstore_ItemCustomerPrice_Sync. This screen cannot invent a book.
Exactly one GP # to time/fix a single account, or blank for the fleet.
Dry run loads GP + BC and counts diffs (no writes). Can be slow on a full store — watch the spinner. Run enqueues Hangfire.
Required for fleet (blank GP #). Single-account execute does not need the phrase.

Delete product custom fields

Removes matching custom fields from every BigCommerce product (this store). Names are case-sensitive and must match the custom-field name (not the value). Put one name per line. Prefer Dry run first — it scans the catalog and shows counts plus sample SKUs, with no deletes. Does not change GP. Also rewrites productAttributes on the matching Payload products immediately, so you do not need to wait for the nightly Sync Products To Payload reconciliation. Storefront filters still show the old values until the commerce search sync reindexes Typesense. Same arm token as purge.

Same PurgeAuthorizationToken as purge. Sent as X-Purge-Token.
One custom-field name per line.
Dry run walks every product on this request (can take a few minutes; a timeout is not a zero-match). Run delete enqueues Hangfire after you type DELETE.