Skip to main content
Each call changes the seat count of one marketplace subscription, the one the agent picked with List License Subscriptions, in one direction: it adds seats or it removes them.
This tool changes the seat count of a subscription the client already holds. To buy the first seat of a product the client does not hold yet, an agent places an order through the Vendor API tool on Pax8, D&H, Ingram Micro, Sherweb, TD SYNNEX ION or TD SYNNEX Stellr. Assigning a license to a user, or unassigning it, is done by the Microsoft 365 tools (Microsoft Graph API), gated by your M365 licensing permissions. An agent without those permissions is told to assign the new seat with the tool it uses for licensing, such as CIPP, or to hand that step to a technician. Unassign users before the agent removes seats.
Removing seats never terminates a subscription. If the agent removes the last seat, the subscription record stays on your marketplace and can keep billing until its term ends. The agent says so and hands the job to a technician. Cancelling the subscription itself is done by hand in the marketplace portal, or on Pax8, D&H, Sherweb and TD SYNNEX Stellr by an agent with writable subscription permissions, and on Ingram Micro with writable order permissions, through the Vendor API tool. This tool never ends a subscription.

What It Does

When enabled, the agent can:
  • Add or remove seats for any license SKU
  • Target a specific subscription when your provider has multiple subscriptions for the same license (e.g., separate Monthly and Annual subscriptions)
  • Auto-detect which marketplace provider to use based on the company’s configuration

Settings

At least one of the two directions must be on. When the agent asks for a change its settings do not allow, the tool changes nothing and the agent tells the technician.

Subscription Targeting

Many MSPs keep multiple subscriptions for the same license (e.g., an 80/20 yearly/monthly split, or separate month-to-month and annual-commitment subscriptions). The agent identifies the exact subscription by calling List License Subscriptions first, which returns the subscription ID, status, billing term, commitment term and seat count for each subscription.

Marketplace Provider Auto-Detection

The marketplace provider is determined from the company’s mappings under Organization Mapping. Among the marketplaces you connected, Neo checks in this order:
  1. A customer a person mapped to the company, in this order: Pax8, D&H, Ingram Micro, Sherweb, TD SYNNEX ION, TD SYNNEX Stellr, OpenText Secure Cloud, ArrowSphere, RoutIT / KPN, ITCloud.ca
  2. A confirmed or exact match of the company, in the same order. When a matched OpenText customer holds no Microsoft 365 service in Secure Cloud and Partner Center credentials are saved, Neo uses Microsoft Partner Center instead
  3. Microsoft Partner Center, as a fallback when Partner Center credentials are saved. Partner Center names a customer by its Microsoft tenant ID; see Microsoft 365 Access for where Neo reads it
  4. Dicker Data, as a fallback when Dicker Data is connected and Partner Center is not. Dicker Data also names a customer by its Microsoft tenant ID
A suggested match does not select a marketplace, but a technician can confirm it from an approval request. One marketplace customer can be mapped to several companies, such as a client’s sites, so each of those companies routes to it.

Confirming a Match on Approval

A company may have no mapped customer and no confirmed match, for example when Neo only suggested a match in Organization Mapping, or found none. The agent can then propose the company’s marketplace customer, usually a suggested match, and ask a technician to approve the seat change together with the match. The approval request opens with a block that Neo writes from its own records, not from the agent’s text:
  • the PSA company’s name and ID, read from your PSA
  • the marketplace customer’s name and ID, as the marketplace sent them in Neo’s last sync
Approve only if the two are the same customer. One approval covers both the match and that seat change. Neo then saves the match as a manual mapping in Organization Mapping, with the approver’s name, and later seat changes for the company use it with no new approval for the match. You can reset it on the Organization Mapping tab. Neo saves nothing, and orders nothing, when:
  • the request is rejected, or approved with a comment, because a comment can say the customer is wrong. The agent reads the comment and asks again.
  • the company got a mapping or a confirmed match of another customer while the request waited. That one wins.
  • the marketplace customer is already mapped or matched to another company.
  • Neo has not seen the customer ID in that marketplace. The agent can propose only a customer that Neo’s sync read.
This works for every marketplace with an Organization Mapping tab. The agent needs the Request Technician Approval tool for it. Without approval, map the company yourself on the Organization Mapping tab. A test run saves no match.

Timing the Change

The agent applies a change either immediately or at the next renewal date. Use custom instructions to direct it:
  • Immediately (default) — an addition applies now and bills for the prorated remainder of the current period. Microsoft NCE allows an immediate removal only within the first 7 days of a term, so an immediate removal can fail on an older subscription. If the marketplace rejects it on NCE policy grounds, the agent is told to retry at the next renewal.
  • Next renewal — the change is queued for the subscription’s renewal date. It suits additions you want aligned with billing anniversaries, and removals after the 7-day window.
Scheduled-at-renewal is supported via API on Ingram Micro, Microsoft Partner Center, ArrowSphere and Dicker Data. On Dicker Data, Neo sets the seat count the next term starts with; a second change for the same renewal starts from the count already scheduled, so two leavers take two seats off. On ArrowSphere, Neo creates a scheduled task that sets the new seat count on the licence’s renewal date; a second change for the same renewal updates that task, so two leavers take two seats off. For Pax8, D&H and Sherweb, the API doesn’t expose it. For TD SYNNEX ION, TD SYNNEX Stellr, OpenText Secure Cloud and RoutIT / KPN, Neo does not schedule a change at renewal yet. ITCloud.ca’s API changes seats now only. In both cases an agent that may schedule itself is told to run again on the renewal day, or on Pax8 24 hours after it, and any other agent tells the technician. The agent can also align the renewal date to the end of the calendar month or to the subscription’s existing anniversary when the change applies (Ingram Micro only).

Adding Seats: Waiting for the New Seat

Marketplaces accept the order asynchronously. Microsoft Graph usually shows the new seat within ~60–90 seconds, but rare cases take longer. For an immediate order on a company whose Microsoft 365 tenant Neo can read (see Microsoft 365 Access), the tool waits for the new seat to become visible in Microsoft before it returns, so the agent can usually assign the license straight away. The wait is up to 5 minutes in an automation and 20 seconds in a chat conversation, where someone is waiting for the agent’s reply. If the seat is still not visible when that wait ends, the tool returns successfully and tells the agent to wait a few more minutes and check again before assigning, or to hand off to a technician if the seat still doesn’t appear. A next-renewal order returns immediately, and the seat appears on the renewal date.

Microsoft 365 Access

A seat change goes to your marketplace, so it does not need Neo’s access to the company’s Microsoft 365 tenant. This suits an MSP that manages Microsoft 365 through CIPP or another tool. Neo can read a tenant when the company has a Microsoft tenant ID and you granted Neo access to that tenant, under Companies → Grant access or through GDAP. Without access, the agent is told that Neo could not confirm the new seat in Microsoft 365. It assigns the seat only with another tool that reads the tenant’s licenses, such as CIPP, and otherwise hands that step to a technician.

Confirming the Marketplace Applied the Change

Whether Microsoft can assign a seat is a separate question from whether the marketplace record changed. One customer had the Microsoft side fulfil correctly while the Pax8 subscription disappeared from their portal. On Pax8, the agent reads the subscription back after the change and reports the seat count Pax8 holds. The read-back window is 90 seconds, and 30 seconds in a chat conversation. The read-back ends in one of two states:
  • Confirmed — Pax8 reports the seat count the agent asked for.
  • Unconfirmed — the read-back did not show that seat count in the time available. The agent is told not to claim the change applied, and to ask a technician to check the portal rather than send the change again, because a repeat that does apply would change the seats twice.
For a removal, the state decides whether the tool reports success. A reduction to zero seats that stays unconfirmed reports failure, because Pax8 ends a subscription through cancellation and not through a seat change of zero; an offboarding agent then does not write a completed licence removal for seats that are still on the subscription. Every other unconfirmed reduction reports success with the unconfirmed wording, since Pax8 settles a quantity change over several minutes. On TD SYNNEX ION, the agent waits for the order to finish and reads the subscription back the same way. On TD SYNNEX Stellr, it waits for the provisioning operation to finish and reads the subscription back; a Stellr subscription keeps at least one seat, so removing the last one means cancelling it. On ArrowSphere, the agent reads the licence back until it shows the new seat count. Neo changes seats only on an active licence, keeps at least one seat, and refuses a removal larger than the decrease ArrowSphere allows now (maxDecrease), with a pointer to the next renewal. When a seat change is already scheduled for the renewal, an immediate change moves it by the same number of seats first, so the renewal does not undo a new hire’s seat. On Dicker Data, the agent reads the subscription back until it shows the new seat count, and a change for the renewal until the renewal shows it; when it never shows, the agent is told the outcome is unknown and to read the subscriptions before trying again. Neo changes seats only on an active subscription and keeps at least one seat. An immediate change uses the quantity action Dicker Data offers on that subscription, and sends nothing when it offers none or several. When the renewal already holds a different seat count, Neo refuses an immediate change, because Dicker Data drops a scheduled change when the subscription changes mid-term; the agent changes the renewal’s count instead, or hands both changes to a technician. On RoutIT / KPN, Neo sends the order’s new quantity, and RoutIT or KPN applies it after accepting it. On an active order they end it and make a replacement order with the new quantity, so the agent reads the order and its replacement back until one shows the new seat count. A change RoutIT or KPN declines later (an order another change is still processing, a decrease Microsoft no longer allows) keeps the old count, and the agent reports it as unconfirmed. Neo changes seats only on an order that is not ended or being changed, and keeps at least one seat. On ITCloud.ca, Neo sets the service’s new quantity and reads the service back until it shows it. Neo changes seats only on an active Microsoft service and keeps at least one seat. When ITCloud.ca queues a decrease for its own review instead of applying it, or one is already waiting, the agent says nothing changed and tells the technician. On OpenText Secure Cloud, Secure Cloud accepts the change for processing, and the agent reads the subscription back until it shows the new seat count. Neo changes seats only on an active Microsoft 365 subscription, keeps at least one seat, and refuses a removal after the subscription’s last day for a decrease (CanCancelUntilDate), when Microsoft bills the seat to the end of the term. When the read-back cannot confirm a change, Neo keeps other changes off that subscription for up to about 20 minutes, so a second change cannot start from the old count. D&H, Ingram Micro, Sherweb and Microsoft Partner Center are not read back yet. There the agent reports the change as unconfirmed, never as failed, because nothing was checked either way.

When Ingram Micro Refuses a Change

Both refusals apply to adding and removing seats, change nothing, and the agent is told not to retry at once:
  • An order is already pending — Ingram allows one pending change order per subscription. Wait for it to finish, or cancel it in the Ingram Micro Marketplace. An agent with Ingram Micro permissions can read the subscription’s orders through the Vendor API tool.
  • The subscription is not in Running service status — The subscription can still list as active in List License Subscriptions. Check its service status in the Ingram Micro Marketplace.

When the Marketplace Refuses a Removal

  • Pax8 committed minimum — Pax8 will not lower a subscription below the seat count committed for the current term, and it names that count only when it refuses. Pax8’s API documentation says a decrease on a Microsoft NCE license is accepted only after the subscription has renewed, so expect this late in a term. The tool returns the refusal as a result with success: false, not as a tool error. The agent is told how many seats, if any, can come off before the term ends, and not to retry. Often the answer is none until the renewal date. An agent that may schedule itself with Trigger or Schedule Workflow is told to run again 24 hours after the term ends, as Pax8 advises. Any other agent tells the technician when the change can be made.
  • Sherweb at zero seats — when Sherweb refuses to take a subscription to zero seats, the agent relays Sherweb’s error and tells the technician to cancel the subscription in the Sherweb portal.

Busy Subscriptions

When Pax8 is still provisioning a prior change, it returns HTTP 500 — Subscription being modified has executing provisioning actions. In an automation, Neo retries this error with backoff (60 / 90 / 120 seconds, up to ~4.5 minutes) before it gives up. Concurrent calls against the same Pax8 subscription are serialized at the Neo layer, so parallel onboarding workflows do not race. A chat conversation does not wait any of that out. The two ways of giving up early read differently to the agent, because they leave the marketplace in different states:
  • Another Neo run holds the subscription. Nothing was sent, so the agent is told the subscription is unchanged and that it can run the change again later. An automation waits up to 6 minutes for the other run; a chat conversation waits 10 seconds.
  • Pax8 reports the subscription as still provisioning. The change did reach Pax8, and a provisioning rejection is not proof that Pax8 ignored it. The agent is told to read the seat count with List License Subscriptions before sending the change again.
In the rare case where the whole marketplace call passes 50 seconds in a chat, the agent is told that Neo does not know whether the change was submitted, and to read the seat count before sending it again.

Tool Dependencies

When you enable this tool, the following are automatically enabled:
  • List License Subscriptions — so the agent can find the subscription ID before it changes seats
  • Request Technician Approval — when approval is enabled in settings

How to Use

Guide subscription selection with custom instructions: