First to Site
Ordering Portal

Ordering Portal Overview

Self-service ordering portal for placing and managing service orders

Ordering Portal Overview

The Ordering Portal is the primary self-service interface for external customers (builders, developers) to manage their projects and orders. It is replacing the legacy Customer Portal and provides a streamlined workflow for placing orders, uploading documents, communicating with FTS staff, and tracking order progress.

Who Uses It

  • Builders and developers who need building permit services
  • Customer contacts managing projects on behalf of companies
  • Users authenticated via Auth0 SSO

Key Capabilities

FeatureDescription
Project SearchFind existing projects by address, SPI, or job number
Project CreationCreate new projects with address geocoding and map confirmation
Order Wizard4-step guided flow to place single or multiple service orders
Document ManagementUpload, categorise, assign, and version documents across orders
Order Tracking9 filtered views by status with search and pagination
Notes & CommunicationChat-style notes on orders with file attachments
PaymentFree submission, account billing, or Stripe credit card
Order ActionsCancel, resubmit, and manage order lifecycle

Architecture

The portal is built on:

  • Backend: Symfony controllers rendering Twig templates
  • API: v3 REST API with JSON-LD/Hydra format
  • Frontend: jQuery UI, Uppy (file uploads), Bootstrap 5, inline JavaScript
  • Auth: Auth0 SSO with Bearer token propagation to API

The main controller (OrderController.php) handles 50+ routes. A V3OrderingApiClient service proxies all data operations to the v3 API.

The portal uses a collapsible sidebar (280px, collapses to 80px) with state saved to localStorage. Badge counts are loaded asynchronously via /ordering/api/sidebar-counts.

Menu ItemBadgeDescription
DashboardProject search and landing page
Projectstotal countBrowse all customer projects
Orderstotal ordersExpandable submenu (see below)
New OrderStart the order creation wizard
LogoutSign out

Orders Submenu

ViewBadgeStatus Filter
All Orderspending, ordered, unprocessed, submitted, on-hold, received
In Progresscountpending
Submittedsubmitted
On Holdcounton-hold
Resubmittedresubmitted
Orderedordered
Completedcompleted

Order Status Lifecycle

unprocessed → pending → submitted → ordered → allocated → received → complete
                  ↓                     ↓
               on-hold ← rejected    cancelled

             resubmitted → (re-enters queue)

Guide Pages

PageWhat You'll Learn
Dashboard & SearchProject search, autocomplete, navigation
Creating ProjectsNew project flow with address geocoding
Order Creation WizardThe 4-step order placement flow
Order List Views9 filtered order pages, search, pagination
Order DetailsSingle order view, status, delivery performance
Documents & UploadsUpload, assign, categorise, version documents
Notes & CommunicationOrder notes with attachments
Payment & SubmissionFree, account, and Stripe payment flows
Order ActionsCancel, resubmit, status transitions