Skip to main content

Configuring and using FNP pricing

FNP availability depends on the supplier's network terms, the vehicle manufacturer and franchise, and the provider data attached to the enquiry. OEC pricing also depends on the enquiry's FNP band and fleet level. A customer integration switch alone does not establish all of these conditions.

Choose the correct network terms first

The enquiry's rateCardType determines which supplier record the eligibility check reads. Changing the other network's FNP settings will not enable this enquiry.

Enquiry rate cardTerms used for the supplier eligibility check
VISN_WITH_DI_NETWORKSupplier service unit's diNetworkTerms
VISN_NETWORK_OFFERING_SAVISupplier service unit's diNetworkTerms
COST_TYPE_HYBRID_VISN with terms: DI_NETWORK_TERMSSupplier service unit's diNetworkTerms
COST_TYPE_HYBRID_VISN with terms: LEASE_TERMS, or no terms valueCustomer's supplier service unit terms
Other rate cards, including the default VISNCustomer's supplier service unit terms

The records to inspect are:

ScopeFirestore recordFNP fields
DI networkaccounts/{accountId}/serviceUnits/{serviceUnitId}diNetworkTerms.fnp.isEnabled, diNetworkTerms.fnp.fnpBand, diNetworkTerms.franchises
Customer networkleasecompany/{leaseCompanyId}/suppliers/{accountId}/serviceUnits/{serviceUnitId}fnp.isEnabled, fnp.fnpBand, franchises
Customer configurationleasecompany/{leaseCompanyId}config.integrations, fleetLevel
Enquiry pricing inputsThe relevant enquiry document's enquiry objectenquiry.fnp, enquiry.fleetLevel, vehicle data in enquiry.car

Source: network selection in the supplier service and DI network rate card predicate.

Enable FNP on DI network terms

  1. In Admin, open Supplier Search and select the supplier service unit.
  2. Select the DI Network Terms tab on Supplier Details.
  3. Choose Edit, or Add if terms have not yet been recorded. The supplier group must belong to the DI network; the details page displays a message when it does not.
  4. In Fleet National Pricing (FNP), turn on the switch.
  5. Choose the agreed FNP Band.
  6. Confirm the manufacturer is included in the franchise/labour rates section. Use Add Franchise where needed and enter the applicable commercial rates.
  7. Save the DI network terms and reopen the details to verify the FNP indicator and FNP Band Name.

The DI network edit action requires the Admin permission pair SUPPLIER / EDIT_DI_NETWORK_TERMS. Ordinary supplier editing uses SUPPLIER / EDITOR; it is a different permission. The editor route is /supplier/edit-di-network-terms.

The FNP controls bind to fnp.isEnabled and fnp.fnpBand in the form; saving writes them beneath diNetworkTerms. The band is required by this form even when the FNP switch is off. Select NONE when an explicit no-band value is intended. The form also validates other supplier terms, including the nominated dealer manager, so an unrelated validation failure can prevent the FNP change from being saved.

Franchise rows without any labour rate or parts discount are removed by the save transformation. Merely adding a manufacturer label and leaving all its commercial values blank may therefore fail to retain the franchise.

Sources: tab, action and permissions, FNP controls and allowed bands, and validation and save transformation.

Enable FNP on customer network terms

For customer network terms, use the established Supplier Import to set the supplier's has FNP and FNP Band columns, together with its manufacturer/franchise rates. The import's has FNP value is Y or N; it becomes the boolean fnp.isEnabled in the customer supplier service unit record. Use the DI Network Import when updating the DI network in bulk.

The customer web application displays Fleet National Pricing (FNP) and FNP Band in the supplier details products/services summary. This card is a display of the selected network record, not an FNP editor. The summary chooses customer terms for a customer-network record and diNetworkTerms otherwise.

Do not assume that enabling the DI network supplier also enables the same service unit for every customer's own network. Verify the record selected by the enquiry's rate card.

Source: supplier summary terms selection and FNP display.

FNP bands and customer fleet level

The current Admin band dropdown contains:

FamilyValues
LA1Band 1 LA1, Band 2 LA1, Band 3 LA1, Band 5 (M25) LA1
LA2Band 1 LA2, Band 2 LA2, Band 3 LA2, Band 5 (M25) LA2
LA3Band 1 LA3, Band 2 LA3, Band 3 LA3, Band 5 (M25) LA3
FordFord Region 22, Ford Region 23
No bandNONE

In Admin, open Customer Search → Customer Details → Edit and set Fleet Level in the customer details form. Customer editing requires CUSTOMER / EDITOR. The form stores a top-level fleetLevel object with a type and label.

Fleet Level labelStored fleetLevel.type
Service4FleetSERVICE_4_FLEET
Platinum Service4FleetPLATINUM_SERVICE_4_FLEET
Lex AutoLEX_AUTO

For OEC descriptions, the backend filters saved menu prices using the fleet level and band supplied from the enquiry. NONE produces no band-matched OEC descriptions; legacy numeric bands are treated as an empty band. MODULUS and OEM do not use this same OEC band-filtering branch. See FNP Bands for price-group and band mappings, including Ford's separate region handling.

Sources: Fleet Level field, fleet level values, and enquiry description filtering.

Customer integration configuration

The Admin customer edit form includes an Integrations section:

  1. Open Customer Search → Customer Details → Edit → Integrations.
  2. Edit an existing integration, or choose Add Integration.
  3. Choose Type label from the environment's lookup list. The form derives Type, Source, and Source label; these derived fields are disabled for direct editing.
  4. Set Enabled and save the drawer.
  5. Save the enclosing customer form. Saving the drawer only changes the parent form's integration array.
  6. Verify the persisted config.integrations entry, including its source and enabled value.

The lookup list is read from configuration data rather than being a complete hard-coded list of currently supported FNP manufacturers. Recognized FNP integrations have Stubbed Service disabled in the UI; the drawer forces useStub to false for sources it recognizes as FNP.

Current integration editor limitation

In the reviewed Admin source, getIntergrationSourceFromType explicitly maps Haynes Pro and DVLA integration types and otherwise defaults to HAYNES_PRO. It does not contain the FNP type-to-source mappings. Therefore, selecting a newly added FNP type can derive an incorrect source even if an FNP label appears in the environment's lookup list. Verify the persisted source before treating a customer as provisioned. If it is wrong or the FNP option is missing, raise the configuration/editor issue through the normal support process; the UI label alone is insufficient evidence.

For the generic backend integration check, MODULUS and OEC use source names FNP_MODULUS and FNP_OEC. OEM uses FNP_<UPPERCASE MANUFACTURER>, for example FNP_KIA. These source identifiers differ from the saved job description providers MODULUS, OEC, and OEM.

Sources: integration form, drawer save and stub behavior, type-to-source mapping, and customer persistence.

Integration switch bypass in current pricing eligibility

The callable helper that decides whether to save FNP descriptions explicitly passes the integration-enabled check for these provider/manufacturer combinations:

ProviderManufacturers that bypass this integration-enabled check
OECVauxhall, Ford
MODULUSPeugeot, Citroen
OEMKia and VWG manufacturers: Volkswagen, Audi, Skoda, Seat, Cupra

This bypass occurs before the generic fnpIntegration.enabled check. It does not bypass supplier fnp.isEnabled, the supported manufacturer/provider mapping, franchise matching, or provider data requirements. The supplier UI eligibility endpoint separately checks the live network terms' FNP flag and franchise; it does not check customer integration switches.

Consequently, an absent/disabled customer FNP integration is not, by itself, proof of why pricing failed for these manufacturers. Conversely, switching it off is not a reliable way to disable their supplier pricing in this implementation. Use the appropriate supplier/network FNP setting when controlling supplier eligibility. Other processes, such as manufacturer VIN exports, have their own integration checks; this bypass is specific to the pricing eligibility helper and must not be generalized to all FNP processing.

Sources: explicit exceptions and remaining gates and supplier UI eligibility. See also Manufacturer VIN File Export.

Provider-specific setup

VWG supplier partner key and service credentials

In Admin, open Supplier Search → Supplier Details → Supplier Information → Edit for the existing service unit. Enter ppsoPartner Key and save. This uses the ordinary SUPPLIER / EDITOR permission. The field is shown only when editing an existing supplier, accepts alphanumeric characters and has a maximum length of 10. Supplier Information displays the saved value as ppsoPartnerKey, with the note Used in PPSO API Call.

The value is saved at accounts/{accountId}/serviceUnits/{serviceUnitId}.ppsoPartnerKey, outside diNetworkTerms. The runtime combines this key with the manufacturer's PPSO brand code. A missing key makes the VWG lookup return no descriptions even when FNP and the franchise are enabled.

The callable service also needs VWG_CLIENT_CREDENTIALS in Secret Manager: the code decodes a base64 JSON array and selects a matching uppercase manufacturer and vehicle type. Configure valid client ID, secret and wholesaler key entries for each required brand/type, using the environment's established secret-management process. Verify the deployed API endpoint and the imported VWG parts/fluid/blacklist data. These are service configuration dependencies, not fields in the customer FNP integration drawer. See Providers and data.

Sources: supplier partner-key editor, field validation, and VWG credential selection.

Kia FNP labour rate

Kia's FNP hourly rate comes from config/settings.kiaFnpLabourRate in the default Firestore database. The aggregated enquiry-details service reads this setting when the enquiry's stored car.make.label is Kia and returns it in partsAndLabourConfig.kiaFnpLabourRate. The jobsheet selects that rate when a Kia FNP description is chosen.

This is an environment-level setting, separate from supplier FNP enablement, supplier band and customer fleet level. No dedicated Admin editor for it was found in the reviewed code; maintain it through the normal environment-configuration workflow. If Kia menus load but labour is missing or wrong, inspect this value and the aggregated response, including whether the stored make agrees with the lookup make. Do not assume the ordinary supplier labour rate is the Kia FNP rate.

Source: aggregated pricing configuration.

Vehicle and franchise prerequisites

The vehicle's manufacturer must map to a supported provider and match the supplier franchise in the relevant network terms. Matching trims whitespace and ignores case. The supplier franchise helper also removes supported LCV suffix forms before comparison. A franchise for another brand in the same manufacturer group is not automatically a match.

The UI prefers car.vrmLookup.make.label when requesting eligibility/descriptions, with fallbacks to other enquiry make fields. Check both lookup data and manually entered make when diagnosing a mismatch. A correct display label elsewhere in the enquiry does not prove the preferred lookup make is correct.

FNP data must also exist for the provider's vehicle key: setting the FNP switch cannot create missing imported vehicle/menu records or a VWG response. Provider-specific VIN, vehicle code, model, and parts prerequisites are described in Providers and Data.

Sources: franchise normalization and manufacturer passed by the enquiry page.

Configuration changes and existing enquiries

There are separate live and saved layers:

LayerWhen it is usedImplication of a configuration change
Live supplier/network FNP flag and franchisesSupplier eligibility check when opening the enquiryA reload/reopen rechecks current eligibility.
Enquiry's fnp and fleetLevelInputs passed by the job sheet to retrieve/filter saved descriptionsUpdating the supplier band or customer fleet level does not by itself rewrite these enquiry values.
Provider descriptions saved for the enquiryRead by the description retrieval endpointImporting new prices or changing enablement does not by itself prove an existing enquiry's saved descriptions have been regenerated.
Chosen job lines and partsThe supplier's saved job sheetExisting selections require separate review; a refreshed menu is not evidence that saved job lines have been repriced.

Creation paths copy FNP terms to the enquiry. Reassignment has explicit logic to choose the new supplier's relevant terms. Treat corrections to an existing enquiry as a data/reprocessing workflow, following Enquiry Pricing Flow and the debugging runbook, rather than assuming a configuration change has updated every layer.

The web app performs the eligibility check on enquiry-page mount. Its job-sheet FNP fetch effect depends on the enquiry ID and third-party-description mode, rather than every FNP/configuration value. After correcting configuration, save any in-progress work and reopen/reload the enquiry to re-run the UI checks. This reload fetches saved descriptions; it is not a provider import or forced regeneration operation.

Sources: walk-in enquiry snapshot, reassignment terms, and job-sheet retrieval effect.

Supplier job-sheet workflow

  1. Open the enquiry in the supplier application and open the job sheet.
  2. Add or amend a supported service/maintenance job line. Existing-line editing remains subject to enquiry state and supplier job-sheet permissions; draft-line editing checks ALLOW_AMEND_JOB_SHEET.
  3. Search the job description or open the components list. Where eligibility is true and FNP descriptions are available, the description field shows FNP/manufacturer branding and the component list starts with the manufacturer's FNP tab.
  4. Review the menu description and its parts information. Use the plus/select action to choose the package.
  5. Complete the applicable parts/fluids and fixed-price selections, then save the parts dialog and job sheet.

The visible branding varies by make:

MakeFNP label configured in the web app
KiaBusiness Service Promise
VauxhallFleet Service
Peugeot, CitroenFleet Charter Pricing
FordFleet National Pricing
Volkswagen, Audi, Skoda, Seat, CupraPPSO in the label lookup; the current tab renders the brand icon without the text label
FallbackFNP Job Descriptions

The FNP icon depends on both eligibility and a non-empty FNP description list. Its absence can therefore mean there are no retrieved descriptions, not just that FNP is disabled. Search requires enough text for the description field's search threshold; the service-line field uses four characters. FNP matches use the loaded descriptions rather than making a new provider request for every search.

View More in the FNP tab reveals the additional Haynes Pro Job Descriptions (With Labour Time) tab, when enabled, and VISN Job Descriptions. It does not retry the FNP request, import additional prices, or refresh provider data. Closing the dialog restores the initial tab visibility.

Sources: service-line eligibility and selection, manufacturer labels, and component dialog and View More.

What changes when a menu is selected

Provider/workflowSupplier experience
OEC, including VauxhallThe job is a catalogue line with an aggregate menu price. A separate editable labour charge is not added to that aggregate menu price. The parts tooltip omits individual prices.
Ford, carried through OECManufacturer-specific parts and fixed-price selection exists. If multiple fixed prices are supplied, the supplier must select one; the dialog reports Selection of fixed price is required otherwise.
MODULUSNon-catalogue line with imported labour time and a parts-selection workflow. The UI does not treat the menu as an OEC aggregate fixed price.
OEM, including Kia and VWGNon-catalogue line with labour time and parts/fluids selection. Kia uses the dedicated Kia FNP labour rate when selected. Missing non-fluid VWG part prices prevent package selection; fluid prices are entered by the supplier.

All three provider configurations skip the standard parts-discount rule. This does not mean all providers use the same price calculation or allow the same edits. Provider metadata declares OEC parts as READ_ONLY and MODULUS/OEM as USER_SELECTION, but the current parts-dialog rendering also uses job state and manufacturer-specific behavior; the metadata alone does not determine whether a dialog is editable. See Enquiry Pricing Flow for calculation details.

An incomplete package can be visible in the FNP list with the warning This cannot be added because there is missing information in this package. The select action is withheld, and incomplete packages are excluded from the service-line search results. This is different from the entire menu failing to load. Use the package-data checks in the debugging runbook.

Parts selection must be saved. Closing a selection dialog without completing it can leave an isFnpPartLinesNotSaved validation state on the job line. This is a job-sheet completion issue, not a missing FNP integration.

Sources: provider UI configuration, labour-line setup, Ford selection and parts validation, and incomplete-package display.

Verify a new setup

Use a vehicle known to have provider data in the target environment and a supplier with the correct franchise. Confirm the relevant network's FNP flag, band, customer fleet level, and any required upstream integration configuration before creating the test enquiry. Open its supplier job sheet, select a menu, complete its parts selections, and verify the saved job-line price and source.

For an older enquiry, compare its saved pricing inputs and provider descriptions with the current configuration before assuming the setup failed. The debugging runbook provides the evidence to collect and the order of checks.