Route Optimization Simulator
See how much time, fuel, and cost you're wasting with your current routing — in under 60 seconds.
Free Tool
Build and test OData queries visually. Catch inefficiencies with the built-in linter, fire queries against your own endpoint, and export in 7 formats — Postman, cURL, TypeScript, Python, C#, JS, and Power Automate.
Platform & Entity
Base URL
Leave blank to use Sample mode with mock data.
$select fields
$filter
$expand
$orderby
Pagination & Options
Live URL Preview
✅
No issues found
15 rules checked — all clear
From OData queries to full integration
Dynamics Mobile is built on the same OData APIs you're querying. We've already solved the hard parts — authentication, pagination, error handling, and real-time sync — so your team can focus on building apps, not plumbing.
See how much time, fuel, and cost you're wasting with your current routing — in under 60 seconds.
Simulate a real delivery or field service day and see where cascade delays break your operation.
Enter real addresses, set time windows, upload Excel — and get a constraint-aware optimized route with ETAs.
OData (Open Data Protocol) is a REST-based standard that Dynamics 365 Business Central and Finance & Operations use to expose their data via API. Every integration — Power Automate flows, custom apps, Postman tests — ultimately uses OData URLs. Getting queries right (correct $select, $filter, $expand) is the difference between fast, reliable integrations and slow, error-prone ones.
Use the OData date() function to avoid timezone issues: date(postingDate) eq 2024-01-15. Without date(), BC compares full datetime values against your filter and results vary by timezone. The linter in this tool flags missing date() usage automatically.
Both use OData v4, but with differences: BC uses api/v2.0 endpoints with camelCase field names and supports contains() in $filter. F&O uses /data/ endpoints with PascalCase fields and does not support contains() — use startswith() instead. F&O also has stricter $expand depth limits. This tool's linter detects platform-specific issues automatically.
BC limits some API v2.0 endpoints to 20 columns when $select is omitted, and paginates results at 1000 records. Always add $select to your query, and follow the @odata.nextLink URL in the response to retrieve additional pages. This tool generates pagination-aware code in all 7 export formats automatically.
Use nested $select inside the $expand clause: $expand=salesOrderLines($select=lineNo,itemNo,quantity). Without the nested $select, every field of every related record is returned, which dramatically increases response size and risks timeouts. This tool's linter (rule L007) warns when $expand is missing a nested $select.