Onboarding Checklist
Use this checklist to verify that all configuration is complete before go-live.
This checklist is written from the Swedish baseline — see Sweden for the Swedish values. Several items differ for a Norwegian company: the net revenue model changes the VAT posting groups and AIR Product Posting Setup accounts, only Diners is used, and the unit of measure is STK. Read Norway alongside this checklist.
Master Data
- Country/Region — AIR Region set on all relevant countries (use "Setup AIR Regions" action or verify manually)
- Items — All travel product items created with:
- Invoice Text field populated where custom invoice descriptions are needed
- FirstCard Article Code set (if customer uses FirstCard)
- Diners Article Code set (if customer uses Diners)
- Vendors — All travel suppliers created with:
- Vendor Type set (Hotel, Car Rental, Airline or Ground Transport)
- IATA Carrier Code set on airline vendors (SK, DY, WF …) — only needed when the invoice specifies supplier VAT
- Registration Number (org.nr) set on domestic suppliers when AIR Setup uses Supplier VAT Specification = Name and Org. No. (enforced when the vendor is saved)
- Hotel Chain Code set (for hotel vendors, e.g., QI, BW, SH)
- Car Rental Company Code set (for car rental vendors, e.g., EP, SX, ZI)
- Voucher Email set (for vendors that receive vouchers)
- Hotel Property Code set (for specific hotel properties)
- Is Subcontractor flag set where applicable
- Customers — All customers configured with:
- Required field flags set (Department, Project Number, Cost Place, Employee Number, Requisition No, Requester)
- Credit Card Provider selected (None/FirstCard/Diners)
- Credit Card No. entered (if credit card provider is set)
- Hotel Voucher Option set (Manual/Yes/No)
- Car Rental Voucher Option set (Manual/Yes/No)
- Specify Service Fees flag set
- Excl. Currency Rate Markup flag set where applicable
- General Posting Setup — Sales Credit Memo Account filled in on every row the extension can post to, i.e. every Gen. Bus. Posting Group combined with the AIR product group. Base BC resolves and tests this account before the extension gets to override it from AIR Product Posting Setup, so a blank one stops the first credit memo with "Sales Credit Memo Account is missing in General Posting Setup…" even though the extension would have supplied its own account. Setting it to the same account as Sales Account on that row is the usual answer. Do all business groups at once — otherwise the next foreign credit memo raises the same error for the next group
- Sales & Receivables Setup — number series filled in for every document type
the company will use, including credit memos:
Credit Memo Nos.andPosted Credit Memo Nos.. A missing series surfaces as "You cannot get a No. Series Line with empty No. Series Code" the first time someone credits an invoice — refunds are the one document type that is easy to forget, because nothing needs it until the first refund - Report Selection – Sales — usages Invoice and Credit Memo point at the extension's Sales Invoice report (51800). Without this the customer keeps getting the standard BC invoice: printing, Print/Send and the automatic email all resolve the layout through Report Selection. Only the extension's own Preview Invoice action on the order bypasses it, which makes the gap easy to miss — the preview looks right while every real document is the standard one
- General Ledger Setup — Inv. Rounding Precision (LCY) has a value (it is read for every document in local currency). A blank or zero value stops posting with "Invoice Rounding Precision must have a value in Currency: Code=." Set the precision the company wants — 0.01 to keep øre/öre, 1.00 to round to whole currency units — or switch Invoice Rounding off in Sales & Receivables Setup if no rounding line is wanted at all
- Customer Posting Groups — Invoice Rounding Account filled in when Invoice Rounding is on, otherwise the rounding line has nowhere to post
- Salesperson/Purchaser — Old Code mapped if migrating from legacy system
- Currencies — a Currency record exists for every currency that can appear in the customer's AIR files, then Update Exchange Rates run on the Currencies page (see Currency Rate Update):
- No currency is left marked Rate Update Failed (no rate source covers it — enter the exchange rate manually and enable Accept Manual Rate, otherwise AIR processing in that currency is blocked)
- The auto-created nightly Job Queue Entry for codeunit "Auto Update Currency Rate" exists and has Status = Ready (set it to Ready if it was left On Hold)
Setup Tables
- AIR Destination — ~16,000 destination codes imported with country mappings
- AIR Commission Code — All commission codes created with correct percentages and G/L accounts
- AIR Setup — Configured with:
- Voucher No. Series assigned
- Supplier VAT Specification set (None for gross-model companies; Name and Org. No. where the invoice must identify who charged the VAT inside a disbursement line)
- Show Disbursement VAT Note decided (explanatory line under the VAT summary)
- Invoice Payment Info set (Bankgiro for OCR-based Swedish payment, IBAN where the company has no giro/structured-reference agreement — IBAN mode requires IBAN and SWIFT Code in Company Information)
- NDC Markup % Domestic / Foreign set
- BSP Card Fee % set
- Currency Rate Markup % set (defaults to 5% — verify it is what the customer expects)
- Item Default Unit of Measure (field 60) set to a Unit of Measure that exists in the company
- Item Default Gen. Prod. Posting Group (field 61) set
- Item Default VAT Prod. Posting Group (field 62) set
- FirstCard Receivables Account set (if using FirstCard)
- Diners Receivables Account set (if using Diners)
- Test Mode settings configured (optional, for initial testing)
- AIR Product Posting Setup — One row per complete 3-key combination (posting group × product type × booking type) that can occur. There is no wildcard or fallback matching — a missing row makes posting fail. Create rows for:
- Each Gen. Bus. Posting Group the customer's AIR lines can carry
- Flight × BSP / Ghost / UCCCF (UCCCF only occurs for card customers)
- Hotel, CarRental × Voucher / Confirmation
- GroundTransport × Standard / UCCCF (UCCCF = flight taxi with card FoP; everything else is Standard)
- Train × Standard
- Sales Account on every row; Markup Account on BSP/UCCCF/Ghost/Voucher/Standard rows; Purchase Account on Confirmation rows and all UCCCF rows (Flight and GroundTransport); Service Fee Account on the booking rows (service fee lines borrow the parent booking line's row)
- AIR Order Item Mapping — Mappings created for all combinations of:
- Product Type + Region + Service Type + Is From Web + Plus Voucher → Booking Item + Service Fee Item
Document Email
See Document Email — nothing here is created automatically, and posted invoices are not emailed until every step is done. Skip the section only when an external distribution service owns outbound distribution (leave the master switch off).
- Email account exists (Settings → Email Accounts) with the Default scenario assigned
- Report Selection - Sales — report 51800 set for both Invoice (
S.Invoice) and Credit Memo (S.Cr.Memo) - Document Sending Profiles created and assigned per customer:
-
EMAILwith E-Mail = Yes (Use Default Settings) — never "Prompt for Settings", a job queue session cannot answer the dialog - A safe Default profile for unclassified customers (normally one that sends nothing)
-
- The auto-created Job Queue Entry for codeunit 51722 (Auto Email Job Queue) exists and has Status = Ready (set it to Ready if it was left On Hold)
- AIR Setup → Auto Email Invoices Enabled turned on last, when the four steps above are verified
- Verified end to end: a posted invoice for an
EMAILcustomer goes Pending → Sent with the PDF delivered, and a customer on the e-invoice profile is stamped E-Invoice without an email
Extension Deployment
See Extension Deployment — required before the pipeline can install the extension in the environment.
- Deployment application registered in the environment (Microsoft Entra Applications: client ID, State = Enabled) with both permission sets on the application user:
- EXTEN. MGT. - ADMIN
- D365 AUTOMATION — the automation API returns 403 without it
- First deploy run green, and Extension Management shows Travel Business Connector (publisher TBC) installed with scope Tenant
Integration Endpoint
See Integration Endpoint for details — both steps are per environment and nothing provisions them automatically except the web services.
- Entra application registered in the environment (Microsoft Entra Applications: client ID, State = Enabled) with both permission sets on the application user:
- D365 FULL ACCESS
- TBC (51300) — D365 FULL ACCESS alone is not enough for the extension's own tables
- Web services published — automatic via
webservices.xmlon install; on older app versions publish the 18 services manually (exact case-sensitive names in the linked page) - Verified:
GET {environment}/ODataV4/lists theAir*/TravelCard*services, and aGET .../ODataV4/Companywith the integration app's credentials succeeds
Verification
Run verification with Test Mode disabled (AIR Setup field 10). Test Mode substitutes default items, customer, and salesperson when real data is missing and bypasses validations — a company can look fully configured in Test Mode and still fail on the first real import. Test Mode is for early smoke tests before the master data is in place, never for final verification.
- Process a test AIR booking file (Test Mode off) to verify:
- Correct item is selected per product type and region
- Correct G/L accounts are used for posting
- Customer required fields generate the expected warnings at order creation — and block posting until they are filled in
- Voucher decisions work as configured
- Vendor matching resolves correctly for hotels/car rentals
- Post a test invoice (not only import it — the AIR Product Posting Setup lookup only runs at posting) and verify:
- Posting completes without an "AIR Product Posting Setup not found" error
- Travel details appear on the invoice report
- Service fees are itemized (if customer has Specify Service Fees = Yes)
- If using credit cards, verify settlement file generation works