01
Priority Cloud fair-use throttling
Priority Cloud allows 100 calls a minute per API user and at most 15 requests in flight (10 processing, 5 queued); requests running over 3 minutes are dropped, and throttled calls get HTTP 429. PartnerMCP paces each API user with a token bucket, keeps concurrency at 10 or below and backs off on 429.
02
CUSTNAME vs CUSTDES
A name matcher maps Account.Name to CUSTNAME — but CUSTNAME is the customer number, the key, at most 16 characters. The name is CUSTDES. PartnerMCP maps names to CUSTDES, keeps CUSTNAME and the internal CUST in its link table, and never forces an 18-character Salesforce ID into a 16-character key.
03
TOTPRICE is computed — including VAT
ORDERS.TOTPRICE is the final price after line pricing, the header discount (PERCENT) and tax (VAT); writing it makes Priority back-calculate the discount and sales tax. PartnerMCP never writes it: it sends the lines, lets Priority price them, and reconciles DISPRICE, the total before tax, with the CRM's amount.
04
Israel e-invoice allocation numbers
B2B tax invoices above the Israel Tax Authority's threshold must carry an allocation number, and Priority supports requesting it natively. PartnerMCP checks the customer's VAT number before the order is submitted, so a missing one is caught at the order — not when the invoice is due.
05
Priority assigns the document numbers
ORDNAME and IVNUM come from Priority, so an order can't be upserted by a natural key, and 409 Conflict only fires when a POST repeats an existing key. PartnerMCP stores the source record's ID — in its link table and, if you want, a prefixed custom column — and checks it before every create.
06
$batch has no rollback
A $batch holds at most 100 operations and Priority states it doesn't roll back; a deep insert can save an order while one of its lines fails. PartnerMCP uses dependsOn to pin which line failed and resumes from that line instead of creating the order twice.
07
Silent result caps
MAXAPILINES (default 2,000 from 25.1) truncates responses without a warning, and the MCP server's form_fetch stops at 100 records when no top is given. PartnerMCP pages every read with $top, $skip and a stable $orderby.
08
Invoice numbers change at finalization
An AINVOICES document keeps a temporary T… number until it's finalized — a form Action that REST can't run. PartnerMCP reports an invoice to the CRM only once its permanent IVNUM exists, and uses the Web SDK when you want it to finalize.
09
Forms, never tables
Priority warns that inserting into its tables directly bypasses integrity checks and form triggers. PartnerMCP writes only through forms — REST, form loads or the Web SDK — and runs form loads with -enforcebpm so BPM rules aren't skipped.
10
Customizations and metadata
Tenant columns carry a four-letter prefix and appear in the API only after POST ClearEntityMetadata. PartnerMCP refreshes the metadata during discovery, reads GetMetadataFor (25.0+) for every form it maps, and never assumes another installation's field names.
11
Row-level privileges don't apply to REST
Priority's REST requests aren't subject to the data privileges users see in the UI; field-level permissions are enforced since 22.1. PartnerMCP gives each integration a least-privilege API user and limits every flow to the forms and companies it needs.
12
Hebrew, time zones and metered writes
Hebrew companies return Hebrew text, dates carry the company's time-zone offset, and API writes count against monthly transaction packages — an order with five lines counts as six. PartnerMCP keeps $since cursors in UTC and skips writes that wouldn't change anything.