Enterprise Finance & Operations Pipeline

TBO ERP INFRASTRUCTURE

How travel product data reaches Microsoft Dynamics 365 Finance & Operations — architecture, controls, and posting path in one place.

tbo.com
TRAVEL SIMPLIFIED
Microsoft Dynamics 365 F&O

Why This ERP Technical Architecture Exists

Portal bookings become financial events. Dynamics 365 Finance & Operations is the system of record for ledgers, sub-ledgers, journals, and period control. This architecture moves product data safely from Portal → Report Server → Transit, then through validation, CSV intake, staging, and posting inside Dynamics 365 F&O.

Without a controlled path, invoices can miss masters, fail fiscal rules, or post incorrectly. The design below makes handoff visible so Product Tech and ERP teams know where to correct issues before journals are completed.

How Dynamics 365 F&O Helps TBO

  • Single finance backbone across India, Holidays, and Jumbonline entities
  • Standard journals, dimensions, tax, and fiscal-period enforcement
  • Traceable posting from travel products (Air, Hotel, Ancillary, and more)
  • Clear exception handling before and during staging / journal posting
Platform: Microsoft Dynamics 365 Finance & Operations (F&O) — not a generic ERP placeholder. Recurring integrations, staging, and journal posting described on this page refer to this product.
Pipeline: ONLINE & ACTIVE
Batch Lot: 500 Records / Push
API Mode: Bidirectional Sync
Target System: Dynamics 365 F&O

Interactive Architecture — Data Path into Dynamics 365 F&O

Step 0 / 17

Click Play Journey to watch live data packets travel across stages. Blue = write/forward · Amber = read/repush. Data does not skip Report Server.

Band A — Product Tech Control (Source → Transit)
1

Portal

Live Products

Master Code Required No Vendor/Customer code → service cannot be enabled
What Happens Here Bookings for Air, Hotel, Ancillary, etc.
2

Report Server

Store + SQL Jobs

TBO India — Air / Hotel / Ancillary
TBO Holidays — Air / Hotel / Ancillary
TBO Jumbonline — Hotel
Mandatory Tables ERPService_Audit · ERPTransitLogger
Jobs Compressed JSON · 500 records · masters 1–2 hrs earlier
3

API Service

Bidirectional Bridge

Bidirectional Bridge
→ WRITE PushERPData (JSON)
← READ errors / unprocessed → Repush
Owner Product Owner (Product Tech)
Band B — ERP Team Control (Transit → Dynamics 365 F&O Posting)
4

Transit DB

Receive → Log → Handoff

A. Receive LotsProduct tables · Gross / Net by entity
B. Movement LogsSalesErrorFile · RequestAudit · RequestLogger · ERP_Audit
C. Ownership SwitchAfter receipt → ERP Team owns onward
5

Validation & Fixes

Check → Correct → Ready

A. Detailed ValidationROE, closed month, prices, special chars, masters
B. Notify & CorrectFailures go to Technical Product Owner teams
C. Ready for CSVWhen validation passes, data proceeds in the next processing run
6

CSV Generation

File → Share → Schedule

A. Generate CSVOnly after validation is ready
B. Shared FoldersCSV landing for integrations
C. Integrations SchedulerFeeds Dynamics 365 F&O intake
7

Dynamics 365 F&O

Staging → Journals → Completed

A. StagingMapping, masters, duplicates, currency
B. Journal CreateGL, tax, currency, sub-ledger checks
C. Journal PostFiscal period, dimensions, bank currency
D. CompletedBack-stamped when all validations clear
Write / forward Read errors + repush Validation before CSV Highlighted sub-step = current animation focus
Overview
Start

Start Here

Press Play Journey, or use the Previous / Next buttons or scroll directly over this card to explore each stage's detailed technical operations without clicking tiles.

Governance, Ownership & Support

Operational rules and contacts for Dynamics 365 F&O go-lives and data processing (kept here so the top of the page stays focused on architecture).

Production Go-Live Approval (Mandatory) For any new product or existing product modification going live on ERP production (Dynamics 365 F&O), approval is required from Mr. Prabhat Kaushik / Anurag Aggarwal.
Master & Transaction Data Protocol Kindly adhere to the following standard protocols for the preparation of master's and transaction-level data before integrating them into the Transit database. In instances where information is unavailable, default values are provided, and mandatory field mappings are to be followed.
http://tiny.cc/0d1c001
ERP Technical Area Leadership The complete ERP technical area is led by Vikram Singh. This includes all migration, data processing, system control, performance enhancement, and financial reporting and cost management.
Query & Support For any query and support related to ERP data processing & UAT for new product and changes, write to us at erpteam@tbo.com.

1. Story in Plain Language

Product/Sales agree with a vendor or customer and register them to get a Master Code. Without that code, the product cannot go live on the Portal. Portal activity is stored on the Report Server by legal entity and product. The Product Owner (Product Tech) moves data through a bidirectional API: it writes JSON into Transit and reads unprocessed/failed records to correct and repush. After data is in Transit, the ERP team owns detailed validation & fixes, then CSV generation, then staging → journal create → journal post → completed.

01

Master Registration

Product/Sales obtain vendor/customer code. Gatekeeper for any portal commercial activity.

02

Report Buffering

Transactions store in entity-specific DBs (India, Holidays, Jumbo) ahead of transmission.

03

API Sync & Transit

PushERPData sends 500-lot JSON batches. Unprocessed records are read back and repushed.

04

ERP D365 Posting

Strict rules validate ROE, closed periods, and prices before generating CSV & posting GL journals.

Critical: Without Vendor or Customer Master Code, Product Service cannot be enabled on the Portal.

2. Product Onboarding

Follow the 5-step onboarding lifecycle to ensure new product integrations successfully clear commercial, technical, and ERP milestones:

1

Agreement

Product / Sales complete commercial purchasing and setup with vendor or customer.

2

Master Template

Fill Vendor or Customer Master template completely with legal, billing, and tax coordinates.

3

Portal Registration

Provide verified information to the registration owner for entity catalog binding.

4

Share Master Code

Distribute verified code to Technical Team & Technical Product Owner for pipeline linkage.

5

Associate & Enable

Code is linked in implementation; product is safely enabled on Portal with audit trails active.

3. Ownership & Control

Clear division of responsibility between Product Tech, ERP, and Finance teams ensures zero gaps during integration and daily ledger posting.

AreaOwner
Agreement, masters, registration handoffProduct / Sales
Master Code association & Portal enablementTechnical Team + Product Owner
Report ↔ Transit movement (API write/read/repush, jobs, SPs, UAT)Product Owner (Product Tech)
Transit → RIS → Staging → Posting → financial reportingERP Team
Portal GL errors on finance manual 2-side entriesFinance representative → correct on Portal → next-day push
ERP production go-live for new/changed productsApproval: Mr. Prabhat Kaushik / Anurag Aggarwal
Complete ERP technical area (migration, data processing, system control, performance enhancement, financial reporting & cost management)Led by Vikram Singh
ERP data processing & UAT for new product and changeserpteam@tbo.com

4. Prerequisites Before Transit / ERP

Strict structural prerequisites must be verified prior to passing transactions into Transit and Dynamics 365 F&O:

Interactive Go-Live Readiness Verification
Readiness: 0 / 8 Complete

5. End-to-End Pipeline

Step 1 — Portal → Report Server → Transit (API)

SQL jobs on Report/application DBs transform data to compressed JSON in batches of 500. Master data is sent 1–2 hours ahead of transactions. API writes via PushERPData. On failure, API reads unprocessed/errors, data is corrected, then repushed.

Step 2 — Transit Receipt → Validation & Fixes (ERP-Owned)

After ownership switches to the ERP team, detailed validation runs (ROE rules, closed-month halt, special characters/spaces, calculated fields/grouping, sales vs purchase price alignment, masters). Failures notify Technical Product Owners; data is corrected. Only when all set does the flow continue.

Step 3 — CSV Generation → Shared Folders → Scheduler

Validated product data is written to CSV, landed in shared folders, and picked up by the recurring integrations scheduler.

Step 4 — Staging → Journal Create → Journal Post → Completed

Staging checks (mapping, masters, duplicates, currency) → journal create (GL/tax/currency/sub-ledger) → journal post (fiscal period/dimensions) → back-stamp to completed. Azure Synapse analytics is a separate track and is not part of this posting animation.

6. Common Stored Procedures (All Report DBs)

These core stored procedures power batch aggregation, transmission, validation counters, and error notifications across all source report databases:

Stored ProcedurePurpose
usp_ERPServiceStatusERP service active? Returns 0 or 1
usp_ExportERPFileDataFilename-wise raw data; compress; calls push SP; may send error mail
usp_ERPTransitDataProviderWrite Report → Transit via PushERPData JSON
usp_ERPTransitErrorDataProviderRead failed txns via GetERPErrorTransactions (PKId_Name, PKId_Value)
usp_ERPDataValidationDaily Report invoice count vs Transit invoices pushed
usp_SendERPErrorMailNotify if lot failed to push (called from export SP)

7. Tables & Logs

Report Server (Mandatory)

Table NamePurpose
ERPService_AuditJSON log transferring from application DB to ERP Transit DB
ERPTransitLoggerPreviously pushed transaction data to ERP, service-wise, with Status

Transit Database

Table NamePurpose
ERP_SalesErrorFileExceptions raised by ERP application
ERPDataRequestAuditJSON log from DB job to ERP Transit Service
ERPDataRequestLoggerLot ID–wise and transaction-wise update status
ERP_AuditAudit log for ERP Service and CSV file generation

Transit also has a dedicated table per product across legal entities, based on Gross / Net accounting behaviour.

8. IsProcess & Tracking Dates

The IsProcess status flag governs whether a record proceeds into CSV staging, triggers an automated repush, or is placed on hold:

1 Pushed

Successfully generated into CSV & pushed to ERP.

0 Queued

Pending ingestion in next scheduled CSV run.

2 Reprocess

Failed validation; reprocessed from source DB release.

3 Declined

Price mismatch between customer and vendor/customer.

4 On Hold

Held for manual exception review and period verification.

IsProcess CodeOperational Meaning
1Successfully pushed to ERP via CSV generation
0Will push in next CSV run
2Failed — reprocess in next release from source DB
3Declined — price mismatch customer vs Vendor/Customer
4On hold for correction
9 / 10Discarded — incorrect data or on request

TransitDate = first push date · UpdatedDate = last update date

9. ERP Product / Functionality Matrix

TBOI = India · TBOH = Holidays · JUMBO = Jumbonline

25 products
Functionality TBOI TBOH JUMBO
Vendor/Customer MasterEnabledEnabledEnabled
Agency MasterEnabledEnabledEnabled
Employee MasterEnabledEnabledEnabled
Published ROEEnabledEnabledEnabled
HotelEnabledEnabledEnabled
AirEnabledEnabled-
TransferEnabledEnabled-
SightseeingEnabledEnabled-
InsuranceEnabledEnabled-
BusEnabled--
MobileEnabled--
TrainEnabled--
EurorailEnabled--
CarEnabledEnabled-
SMSEnabledEnabled-
MISCEnabled--
JVEnabledEnabledEnabled
GO/GIEnabled--
ADM/ACMEnabled--
Payment / Wallet ReceiptEnabledEnabledEnabled
Direct DebitEnabled--
Deposit IncentiveEnabled--
Invoice AllocationEnabledEnabledEnabled
Vendor/Customer Allocation-EnabledEnabled
Vendor/Customer Invoice Journal--Enabled

10. UAT Sandbox Push (Product Team)

For UAT, Product Team can write to ERP Sandbox using PushERPData:

cURL — PushERPData UAT Test
curl --location 'https://SandboxERP.tboholidays.com/api/Transit/PushERPData?Content-type=application%2Fjson' \
--header 'Content-Type: application/json' \
--data '{
    "CompanyCode": 9999,
    "FileName": "UAT",
    "LotId": 1,
    "ERPDataJSON": "[Data in JsonString]"
}'
HTTP/1.1 200 OK — Simulated Sandbox Response
{
  "Status": 1,
  "LotId": 1,
  "CompanyCode": 9999,
  "FileName": "UAT",
  "Message": "Lot data accepted into Transit DB successfully. Ready for validation.",
  "TransitAuditId": 984210,
  "Timestamp": "2026-10-30T17:25:00Z"
}

ERPDataJSON must be a JSON string inside the request body. Sandbox only — not production.

11. System Glossary

Definitions of mission-critical architecture entities, systems, and protocols:

TermArchitectural Meaning
PortalLive product system; needs Master Code to enable services
Report ServerWhere Portal data is stored by legal entity & product before Transit push
API ServiceBidirectional: write PushERPData; read errors/unprocessed; repush
Transit DBHolding area; ERP ownership starts after receipt
Dynamics 365 F&OMicrosoft Dynamics 365 Finance & Operations — finance system of record
RIS / CSVValidated file generation toward Dynamics 365 F&O integrations
TBOI / TBOH / JUMBOIndia / Holidays / Jumbonline
LotBatch of records in a push
IsProcessStatus of a Transit transaction toward ERP CSV
Action completed