Configuration Guide¶
Applies to: All subscriptions
Purpose¶
Let an administrator find any setting, change it deliberately, and predict the consequence — including the blast radius of a wrong value. A setting nobody understands is a setting nobody dares to change, which is how systems end up frozen in a configuration that no longer fits the business.
Audience¶
System administrators. Integration developers, for the ingest and write-back settings.
Prerequisites¶
- Installation Guide complete
- Access to the application host for host-level settings, and an administrator account for in-product settings
Steps¶
Where configuration lives¶
Complifly configuration sits in three distinct places, with different change procedures. Knowing which layer a setting belongs to is the first step in changing it safely.
| Layer | Holds | Changed by | Takes effect |
|---|---|---|---|
| Host environment file | Infrastructure and credentials: database, provider, mail, identity, worker tuning | Editing the file on the application host | On restart |
| Database configuration | Per-GSTIN feature flags, document routing, print settings, policies | Administrators in the application | Immediately, subject to a short cache |
| Build-time front-end configuration | API URL, identity client identifiers | Rebuilding and republishing the front end | On rebuild, not restart |
The most common configuration mistake is changing a host environment setting and expecting it to apply without a restart. The second most common is changing a front-end setting and expecting a restart to be enough — it needs a rebuild.
The pages¶
| Page | Covers |
|---|---|
| Environment Variables | Every host-level setting, grouped by subsystem |
| Domains and URLs | The hostname model and why downloads are a separate origin |
| Feature Flags | Per-GSTIN module and automation switches |
| GSP Configuration | Assigning, credentialing and testing a government provider |
| Email and Notifications | Mail transport and who receives what |
| Document Type Routing | Which document types produce an IRN, an e-Way Bill, or both |
| Print Configuration | Templates, branding and the signed QR code |
Rules that apply to every setting¶
Change one thing at a time, and record it. A configuration change with no record is indistinguishable from a defect the next time something misbehaves.
Never hardcode a hostname anywhere. Every URL the product emits — signed download links, email links, printed references — resolves from the domain configuration. Hardcoding one produces links that work in one environment and silently point at the wrong place in another.
Treat the environment file as a credential store. It holds database and provider credentials. Restrict its permissions, exclude it from source control, and rotate what is in it on a schedule someone owns.
Non-production must never hold production provider credentials. A test document sent with production credentials reaches NIC, consumes a real document number permanently, and cannot be undone. Make the separation structural.
Validation¶
After any configuration change:
| Check | Method |
|---|---|
| The change took effect | Observe the specific behaviour it should alter — not merely that the service restarted |
| The right layer was changed | Host settings need a restart; front-end settings need a rebuild; in-product settings need only a moment for the cache |
| Nothing else changed | Run a short document flow after any change to shared infrastructure |
| It is recorded | Change log updated with what, when, why and by whom |
| It is reflected in every environment that needs it | A fix applied only in production is a fix that disappears at the next deployment from a lower environment |
Troubleshooting¶
| Symptom | Cause | Action |
|---|---|---|
| A setting changed but nothing happened | Host settings require a restart | Restart the API, and the worker if the setting affects background work |
| A front-end setting change had no effect | Front-end settings are compiled in | Rebuild and republish. See Front-end Deployment |
| A per-GSTIN setting appears not to apply | Brief cache, or set against the wrong GSTIN | Wait a minute, then confirm the setting is against the correct registration |
| Links in emails or PDFs point at the wrong environment | A hostname hardcoded somewhere, or domain configuration not set per environment | Set the domain configuration per environment. See Domains and URLs |
| A test document reached the government | Non-production environment holding production credentials | Treat as an incident. The number is permanently consumed |
| Configuration lost after a deployment | The environment file was overwritten or not preserved | Keep it outside the deployed tree, or restore it as part of the deployment procedure |
| Two environments behave differently with identical code | Configuration drift | Compare settings between environments; drift accumulates silently and surfaces at the worst time |
Related Articles¶
- Installation Guide — where configuration is first applied
- Authentication and Security — the security-relevant settings
- Module Configurations — per-module setup
- Upgrade Procedure — preserving configuration across upgrades