How provisioning works
Follow an order to a running server: what WHMCS's Create checks and refuses, how the provision task builds and delivers the server, and what happens when setup fails.
Last updated 21 days ago
ImpulseVPS provisions in two stages. WHMCS's Create checks and queues the order without contacting the provider. A scheduled provision task then creates the server, waits for it to start and delivers it.
Stage 1: Create checks and queues the order
WHMCS runs Create when it sets up the order, for example after payment or when you accept it. ImpulseVPS checks the order, queues it and attaches the service to the client's default project in ImpulseCore. WHMCS then shows the service as Active, although the server isn't built yet.
Create refuses the order, and queues nothing, when:
- The license isn't active. Existing servers keep running. Fix the
IVPS-key in ImpulseCore → Modules & Licensing → Licenses. - The product isn't connected to an active server plan, or the plan has no provider account.
- The order has no location, or it asks for a location, size, operating system or application the plan doesn't offer. Hidden configurable options are ignored, and the plan's default applies.
- Something has no provider mapping. This covers a location with no code for the provider, a size with no plan code there, or an operating system with no live image there.
- A paid option can't be delivered. The plan doesn't enable it, the order is over the plan's storage limit, or the provider doesn't support the option. In the last case you also get a critical alert.
- The hostname, SSH key or startup script is invalid. Only OpenSSH public keys are accepted.
A refused order stays Pending, and WHMCS shows the module's reason. Refusals are also listed under Diagnostics → Activity. Fix the cause and run Module Create again.
Running Create twice never queues a second server. Each accepted order records its provider account, location, size and image, so editing the plan later doesn't change what a queued order builds.
Stage 2: the provision task builds the server
ImpulseCore runs the provision task from the WHMCS system cron. A server is usually ready within 5 to 10 minutes of the order being accepted. Each run starts up to five queued orders, oldest first, and never starts the same order twice.
For each order, the task:
- Checks with the provider that the size is sold in the ordered location (on Vultr, Hetzner Cloud and DigitalOcean), then creates the server. If either step fails, setup fails. ImpulseVPS never uses another location or size.
- Sends the first-boot data: the hostname, the SSH keys, SSH hardening and the customer's startup script. It never includes a password or a secret.
- Waits until the server is ready and records its addresses. It tries to set reverse DNS where the provider supports it and turns on backups if the order bought them; neither failure stops delivery (a backups failure raises a warning alert).
- Marks the server active and sends the welcome email. The template is set under Settings → General & Access, and the stock Other Product/Service Welcome Email is sent if you leave it empty. Credentials are never emailed.
Credentials
SSH keys come first: if the order brought keys, or the client has default SSH keys saved, they go on the server and password login is turned off. Without a key, the server gets a one-time root password on Vultr, Hetzner Cloud and Linode, and on DigitalOcean ImpulseVPS generates a key pair. Either is stored encrypted and shown once on the client area's Access tab.
What the customer sees
During setup, the service page shows a setup progress list (Queued, Creating server, Booting, Network ready, Finalizing). It refreshes itself and opens the dashboard when the server is ready.
If setup fails, the page says We hit a snag setting up your server and asks the customer to contact support if it isn't ready soon. The customer never sees the error or the provider's name.
When setup fails
Every failure opens a critical alert on the Dashboard. While Send operator alert emails is on under Settings → Alerts & Notifications, the alert is also emailed to you immediately. The service's page under Customers shows the reason as Last error. Setup usually fails in one of these ways:
- The provider refused the create. No server exists there. The usual cause is a size the provider doesn't sell in that location.
- The provider account isn't set up in ImpulseCore. No server is created; the error points to ImpulseCore → Operations → VPS Providers.
- The server wasn't ready in time. The timeout is 15 minutes by default (Provision timeout (min) on the same settings page). The server isn't deleted and may be billing at the provider. ImpulseVPS keeps checking it for a day after setup started; if it finishes starting, the service is delivered and the alert closes.
- No server ID was recorded before the timeout, or the error is about the root password or one-time credential. ImpulseVPS doesn't check these again, but a server may exist at the provider.
- The provider's answer was lost. The service is held so that a second server isn't made, until you click Resolve unknown create on the service.
To retry a failure that left nothing at the provider, fix the cause and run Module Create again. ImpulseVPS queues the order again and closes the old alert. For what to check at the provider in each case, see Fix: an order fails at Create, or setup fails after the order was accepted.
If an order never starts, check that the WHMCS cron runs every 5 minutes and that Diagnostics → Health Checks → Provisioning preflight passes.
Related
- Fix: an order fails at Create, or setup fails after the order was accepted
- Server plans: how they tie to WHMCS products
- Adding a provider account to ImpulseVPS
- Installing ImpulseVPS — step-by-step
Was this helpful?
More in ImpulseVPS
What is ImpulseVPS, and how does it differ from a provider's own WHMCS module?Understanding ImpulseVPS licensingSecurity hardening for ImpulseVPSServer plans: how they tie to WHMCS productsStill need help? Ask the team