Vodafone Wholesale provide a fibre and copper based managed service via their Wholesale Access Platform (also known as EDGE / WAP) that offers access to FTTP, SOGEA and SOADSL. Access to the Vodafone service is via a SOAP API suite based on the Vodafone Edge Service Model (ESM).
The Fibre Cafe has a connector to integrate with this API. As with all connectors, tenants interact with it through the standard Fibre Cafe Tenant API (REST/JSON) — the connector handles translation to and from Vodafone's SOAP interface, so the examples below are all standard Tenant API requests.
The supplier system code for this connector is VODAFONE.
Authentication with the Vodafone EDGE platform is certificate based - mutual TLS (HTTPS) is used along with a Vodafone-provisioned username supplied in each request. To enable us to set up the connector, the following information is required:
- Vodafone-provisioned
UserName - Client certificate and private key for mutual TLS
Address search is supported by the connector. It uses Vodafone's address management service to return the Vodafone Address reference (a Gold address key, e.g. A00000000000) and District code (e.g. XX), which together form the standard address identifier pair used for FTTP. It supports searching by UPRN and by postcode/partial address (e.g. AB1 2CD).
The identifiers are encapsulated in the standard AddressIdentifier object, so a single request can carry all identifiers required by different suppliers:
{
"identifier": {
"id": "900000000000",
"type": "UPRN",
"additionalIdentifiers": [
{
"id": "A00000000000",
"type": "NAD"
},
{
"id": "XX",
"type": "DistrictCode"
}
]
}
}The Vodafone identifier types map onto the Tenant API as follows:
Tenant API type | Vodafone identifier | Notes |
|---|---|---|
NAD | Address reference | Gold address key; paired with DistrictCode |
DistrictCode | District code | Paired with NAD |
UPRN | UPRN | Standalone alternative to the NAD pair |
If a NAD key and District Code (or UPRN) are already known, these can be provided directly to the other APIs without performing an address lookup first. The order of identifiers in the object is not important.
A lookup returns an array of matching premises. Alongside the identifiers, each entry includes the full address detail (name, streetNumber/streetName, city, postcode, country and any subAddress unit number), the qualifier (Gold or Silver) and a source of VODAFONE.
Vodafone distinguishes Gold addresses (full match with Address reference + District code) from Silver addresses (postcode-level partial match). FTTP orders require a Gold address; UPRN may be used as an alternative.
The connector returns service availability for an address including the available service specifications (product family/access technology), available line profiles, and line characteristics such as speeds.
Only FTTP (Single Play FTTP, product code PC00042) is supported for availability in the initial release.
When returning service specifications for an address, the available line profiles are returned in the serviceCharacteristics field. For Vodafone the LINE_PROFILE values are downstream/upstream speed pairs (e.g. 40M/10M):
{
"serviceSpecifications": [
{
"id": "FTTP",
"name": "Single Play FTTP",
"serviceCharacteristics": [
{
"name": "LINE_PROFILE",
"values": [
"40M/10M",
"80M/20M",
"115M/20M",
"220M/30M",
"550M/75M",
"1000M/115M"
]
}
]
}
]
}See Line Profiles below for the full set of values.
Line information is returned under siteInformation.line, including the installation type, line type and the lineCharacteristics defined on the line characteristics page:
{
"siteInformation": {
"line": {
"installationType": "STANDARD",
"type": "NEW",
"lineType": "FIBRE",
"lineCharacteristics": [
{ "name": "AVAILABILITY_FLAG", "value": "Y" },
{ "name": "MINIMUM_LEAD_TIME", "value": "3" },
{ "name": "MIN_DOWNSTREAM_MBPS", "value": "40" },
{ "name": "MAX_DOWNSTREAM_MBPS", "value": "1000" },
{ "name": "MIN_UPSTREAM_MBPS", "value": "10" },
{ "name": "MAX_UPSTREAM_MBPS", "value": "115" },
{ "name": "MINIMUM_SITE_VISIT_REASON", "value": "Premium" }
]
}
}
}This includes the minimum and maximum downstream/upstream speeds (MIN|MAX_DOWNSTREAM_MBPS and MIN|MAX_UPSTREAM_MBPS) and the MINIMUM_LEAD_TIME in days. The AVAILABILITY_FLAG carries the FTTP ONT availability status returned by Vodafone: Y (available now - the order is accepted and progressed), P (planned - available from a future date; the order is held until the Ready for Service date), or W (waiting - capacity is being built; the order may be auto-cancelled after 90 working days if it remains unavailable). type is NEW and lineType is FIBRE where a new fibre line can be installed. A MINIMUM_SITE_VISIT_REASON may also be returned, indicating the minimum Site Visit Reason recommended when ordering at this address (e.g. Premium); this can differ by order type. An INSTALL_NOTES characteristic is returned alongside an EXTENDED_STANDARD installationType, carrying the detail of the two-stage install (e.g. KCI2 Assure) — see Installation Types.
Where lines are already present at the premises, an existingLines array is also returned under siteInformation. For a premises with an ONT installed, each entry describes the line and its ONT:
{
"siteInformation": {
"existingLines": [
{
"lineCharacteristics": [
{ "name": "MAX_DOWNSTREAM_MBPS", "value": "1000" },
{ "name": "MIN_DOWNSTREAM_MBPS", "value": "40" },
{ "name": "MAX_UPSTREAM_MBPS", "value": "115" },
{ "name": "MIN_UPSTREAM_MBPS", "value": "10" }
],
"lineType": "FIBRE",
"ontReference": "ONT0000000000",
"ontSerialNumber": "ALCL00000000",
"ontFloor": "G",
"ontRoom": "Reception Room 2",
"ontPosition": "Shelf",
"ports": [
{ "portNumber": 1, "description": "Data", "status": "ACTIVE" }
]
}
]
}
}Each entry gives the line's lineCharacteristics and lineType, the ontReference and ontSerialNumber, the ONT location (ontFloor / ontRoom / ontPosition), and the ports on the ONT — each with a portNumber, a description (port type, e.g. Data) and a status (ACTIVE or stopped). An ONT with a spare port can be reused via an Existing ONT order, supplying its ontReference as ONT_REFERENCE.
Copper and other non-ONT lines are returned in the same array in a leaner form, without ONT or port detail:
{
"siteInformation": {
"existingLines": [
{
"lineType": "COPPER",
"lineId": "PPR0000000P0",
"status": "STOPPED",
"productType": "MPF"
}
]
}
}These entries give the lineType (e.g. COPPER), the lineId, the line status (e.g. ACTIVE or STOPPED) and the productType (e.g. MPF, WLR, SOGEA). The lineId is the value supplied as LINE_ID when migrating or taking over the existing service — see Order Types.
The line may also carry a constraints array describing conditions that affect the install. Each entry has a code and a free-text text:
{
"siteInformation": {
"line": {
"constraints": [
{ "code": "OTHER", "text": "TMA notice required" }
]
}
}
}Constraints are informational and do not prevent an order being placed, but they can affect lead time — a Traffic Management Act (TMA) notice, for example, must be served before street works can begin. Where the constraint is not mapped to a specific code, OTHER is returned and the detail is in text.
The installationType field within siteInformation.line indicates the install requirement. This connector returns the following values:
installationType | Description |
|---|---|
STANDARD | A standard appointment is required |
EXTENDED_STANDARD | Two-stage installation; see INSTALL_NOTES |
This connector supports 1 or 2 stage installations, the latter also known as 'KCI2 Assure'. Where installationType is EXTENDED_STANDARD, refer to the corresponding INSTALL_NOTES line characteristic for details:
{
"siteInformation": {
"line": {
"installationType": "EXTENDED_STANDARD",
"lineCharacteristics": [
{ "name": "INSTALL_NOTES", "value": "KCI2 Assure" }
]
}
}
}Where installationType is not returned, an appointment is not required in the order. Note that this may change as the order progresses and an appointment may be required later — this is notified as a REAPPOINT update and is resolved by reserving an appointment and amending the order (see Order Updates).
Where a managed install is required, an appointment must be reserved first (see Appointing).
When a managed install is required, appointment timeslots can be listed and reserved using the standard appointing endpoints.
- Timeslots are classified as weekday, saturday, sunday and AM/PM
- The default
SITE_VISIT_REASONStandardis used where not provided as a service characteristic - A
PremiumorAdvancedSITE_VISIT_REASONcan be requested instead — this must be provided consistently during appointment availability and reservation
Example showing an appointment reservation with a Premium SITE_VISIT_REASON:
{
"supplier": "VODAFONE",
"address": {
"id": "A00000000000",
"type": "NAD",
"additionalIdentifiers": [
{ "id": "XX", "type": "DistrictCode" }
]
},
"serviceSpecification": { "id": "FTTP" },
"serviceCharacteristics": [
{ "name": "SITE_VISIT_REASON", "value": "Premium" }
],
"purpose": "PROVIDE",
"timeslot": {
"timeslotStartDateTime": "2026-02-02T08:00:00Z",
"timeslotEndDateTime": "2026-02-02T13:00:00Z"
}
}The response echoes the request and returns the matching slots in availableTimeslots:
{
"supplier": "VODAFONE",
"address": {
"id": "900000000000",
"type": "UPRN",
"additionalIdentifiers": [
{ "id": "A00000000000", "type": "NAD" },
{ "id": "XX", "type": "DistrictCode" }
]
},
"serviceSpecification": { "id": "FTTP" },
"availableTimeslots": [
{
"timeslotStartDateTime": "2026-02-02T08:00:00.000Z",
"timeslotEndDateTime": "2026-02-02T13:00:00.000Z",
"classification": "WEEKDAY_AM",
"standard": true
},
{
"timeslotStartDateTime": "2026-02-02T13:00:00.000Z",
"timeslotEndDateTime": "2026-02-02T18:00:00.000Z",
"classification": "WEEKDAY_PM",
"standard": true
}
]
}Each slot carries a classification (WEEKDAY_AM, WEEKDAY_PM, SATURDAY_AM, SATURDAY_PM, SUNDAY_AM, SUNDAY_PM) and a standard flag indicating whether it is a standard appointment slot. The timeslotStartDateTime / timeslotEndDateTime of the chosen slot are supplied when reserving.
Orders are placed with the create order request. New provides are FTTP only; supplying a LINE_ID (the existing working line) switches an existing SOGEA, SOADSL, FTTC or FTTH service to FTTP.
The following service characteristics are required when placing orders:
LINE_PROFILE: the bandwidth product as a downstream/upstream speed pair (e.g.40M/10M) - values are returned in service availabilityRETAILER_ID: unique identifier for the retailer provided by OFCOM
The following are required when migrating or taking over an existing service:
LINE_ID: the existing working line being migrated or taken overONT_REFERENCE: the existing ONT (Existing ONT and Transfer journeys)
These characteristics are optional depending on the order:
MINIMUM_SPEED: requested guaranteed minimum speed (realtime) - default is 0CARE_LEVEL: ongoing care level - see care levels table belowECC_CHARGEBAND: excess construction charges (FTTP)SITE_VISIT_REASON: Standard, Premium, Advanced or No site visit - must match the reserved appointment (where one is booked)STATIC_IP_REQUESTED: number of static IP addresses requiredPROJECT_REFERENCE: applicable with an AdvancedSITE_VISIT_REASONNAMED_ENGINEER: request a named engineer (Y/N)NAMED_ENGINEER_NOTES: free-text note accompanying a named-engineer requestONT_FLOOR/ONT_ROOM/ONT_POSITION: ONT install location
The request may also include ORDER_TYPE as a service characteristic, mirroring the top-level orderType (e.g. NEW).
The FTTP journey is determined by the orderType together with whether a LINE_ID is supplied:
orderType | FTTP journey | Description |
|---|---|---|
NEW | New ONT | New ONT requested |
NEW + LINE_ID | Migration New ONT | Migrate to FTTP, new ONT |
START | Existing ONT | Reuse a spare port on an existing ONT |
START + LINE_ID | Migration Existing ONT | Migrate to FTTP, existing ONT |
TAKEOVER | WLTO | Working Line Take Over |
TRANSFER | Transfer | Move an ONT service to Vodafone |
SWAP | New ONT | Swap the ONT on the service |
CEASE | Cease | Cease a live FTTP service |
MODIFY | Modify | Modify a live FTTP service |
AMEND | Amend | Amend an in-flight order |
CANCELLATIONS | Cancel | Cancel an in-flight order |
Further detail on the individual journeys:
- New ONT — used when no ONT is installed at the premises, the existing ONT has no spare data ports, or a new ONT is wanted regardless of any existing one.
- Migration journeys — used to move an existing SOGEA, SOADSL, FTTC or FTTH service to FTTP. Managed-cease KCIs are sent for the working WLR/MPF/SOGEA service, which is ceased on the order completion date.
- WLTO — lets an incoming occupant proactively take over a service the outgoing occupier has not requested to cease.
- Modify — see Modify and Cease Orders below for the characteristics that can be changed.
- Amend — e.g. changes the requested completion date and/or appointment.
A LINE_PROFILE characteristic is required for Vodafone orders. Line profiles are the bandwidth product expressed as a downstream/upstream speed pair — the value is passed straight through to the Vodafone EDGE API and is not mapped by the Fibre Cafe.
LINE_PROFILE | Downstream | Upstream |
|---|---|---|
40M/10M | 40Mbit/s | 10Mbit/s |
80M/20M | 80Mbit/s | 20Mbit/s |
115M/20M | 115Mbit/s | 20Mbit/s |
220M/30M | 220Mbit/s | 30Mbit/s |
550M/75M | 550Mbit/s | 75Mbit/s |
1000M/115M | 1000Mbit/s | 115Mbit/s |
The available values are returned during service availability and may vary depending on the commercial arrangement with Vodafone and by address/service type. Always use the values returned in the serviceCharacteristics for the address rather than assuming the full set is orderable; they are not returned in a guaranteed order.
CARE_LEVEL sets the ongoing care (repair) level for the service. The default care level where not provided is Standard.
CARE_LEVEL | Notes |
|---|---|
| Standard | [Default] |
| Enhanced | |
| Prompt |
Not all care levels apply to all products — confirm availability with Vodafone for the service being ordered.
A New ONT provide (orderType: NEW) carries the full set of characteristics. The address and LINE_PROFILE are taken from the preceding service availability step, and appointmentReservationId is the reservation returned when the appointment was reserved.
{
"orderType": "NEW",
"supplier": "VODAFONE",
"address": {
"id": "900000000000",
"type": "UPRN",
"additionalIdentifiers": [
{ "id": "XX", "type": "DistrictCode" },
{ "id": "A00000000000", "type": "NAD" }
]
},
"serviceOrderItem": {
"serviceSpecification": { "id": "FTTP" },
"serviceCharacteristics": [
{ "name": "LINE_PROFILE", "value": "115M/20M" },
{ "name": "ORDER_TYPE", "value": "NEW" },
{ "name": "SITE_VISIT_REASON", "value": "Standard" },
{ "name": "CARE_LEVEL", "value": "Enhanced" },
{ "name": "STATIC_IP_REQUESTED", "value": "4" },
{ "name": "ECC_CHARGEBAND", "value": "0" },
{ "name": "NAMED_ENGINEER", "value": "Y" },
{ "name": "NAMED_ENGINEER_NOTES", "value": "Fred Smith" },
{ "name": "ONT_FLOOR", "value": "G" },
{ "name": "ONT_ROOM", "value": "Reception Room 2" },
{ "name": "ONT_POSITION", "value": "Shelf" },
{ "name": "RETAILER_ID", "value": "XXX" }
]
},
"primaryContact": {
"name": "John Smith",
"email": "john@smith.com",
"phoneNumber": "01234567890"
},
"appointmentReservationId": 1000001,
"hazards": "Hazardous materials stored on site",
"onSiteRestrictions": "Restricted access",
"notes": "Free-text notes for the engineer"
}The request fields are:
| Field | Description |
|---|---|
orderType | The order journey — see Order Types above |
supplier | Connector system code (VODAFONE) |
address | The AddressIdentifier object for the premises |
serviceOrderItem.serviceSpecification.id | The product being ordered (FTTP) |
serviceOrderItem.serviceCharacteristics | The ordered service characteristics |
primaryContact | End-user contact details |
appointmentReservationId | The appointment reservation reference |
hazards | Optional free-text site hazards |
onSiteRestrictions | Optional free-text access restrictions |
notes | Optional free-text notes |
Existing ONT (orderType: START) reuses an ONT already installed at the premises, identified by ONT_REFERENCE (from the availability existingLines). Because no ONT installation visit is required, it supplies a requestedCompletionDate directly instead of an appointmentReservationId, and the named-engineer fields and SITE_VISIT_REASON are not required/supported:
{
"orderType": "START",
"supplier": "VODAFONE",
"address": {
"id": "900000000000",
"type": "UPRN",
"additionalIdentifiers": [
{ "id": "XX", "type": "DistrictCode" },
{ "id": "A00000000000", "type": "NAD" }
]
},
"serviceOrderItem": {
"serviceSpecification": { "id": "FTTP" },
"serviceCharacteristics": [
{ "name": "ONT_REFERENCE", "value": "ONT0000000000" },
{ "name": "LINE_PROFILE", "value": "115M/20M" },
{ "name": "ORDER_TYPE", "value": "START" },
{ "name": "CARE_LEVEL", "value": "Enhanced" },
{ "name": "STATIC_IP_REQUESTED", "value": "4" },
{ "name": "ECC_CHARGEBAND", "value": "0" },
{ "name": "RETAILER_ID", "value": "XXX" }
]
},
"primaryContact": {
"name": "John Smith",
"email": "john@smith.com",
"phoneNumber": "01234567890"
},
"requestedCompletionDate": "2026-08-19",
"hazards": "Hazardous materials stored on site",
"onSiteRestrictions": "Restricted access"
}MODIFY and CEASE orders act on an existing live service rather than a premises, and use a leaner request shape: there is no address, serviceOrderItem wrapper, primaryContact or appointmentReservationId — instead the order carries a top-level serviceId identifying the live service, and a flat serviceCharacteristics array.
A cease order:
{
"orderType": "CEASE",
"supplier": "VODAFONE",
"serviceId": "VFP0000000",
"requestedCompletionDate": "2026-08-13T09:00:00Z"
}A modify order is incremental rather than a full resend. Only the characteristics being changed need to be supplied, and each carries an action describing the change:
action | Description |
|---|---|
ADD | Add a characteristic not currently on the service |
UPDATE | Change the value of an existing characteristic |
REMOVE | Remove a characteristic from the service |
The connector emits a separate add, update and remove block to Vodafone accordingly. Characteristics omitted from the request are left untouched on the service.
The following characteristics can be modified:
LINE_PROFILECARE_LEVELSTATIC_IP_REQUESTEDMINIMUM_SPEED
Changing the bandwidth on a live service:
{
"orderType": "MODIFY",
"supplier": "VODAFONE",
"serviceId": "VFP0000000",
"serviceCharacteristics": [
{ "name": "LINE_PROFILE", "value": "220M/30M", "action": "UPDATE" }
],
"requestedCompletionDate": "2026-07-28T00:00:00.000Z"
}The response and subsequent order updates (KCIs) follow the same pattern as provide orders — see Order Response below and Order Updates.
The response echoes the request and adds the gateway order reference, status and timestamps:
{
"orderType": "NEW",
"supplier": "VODAFONE",
"address": {
"id": "900000000000",
"type": "UPRN",
"additionalIdentifiers": [
{ "id": "XX", "type": "DistrictCode" },
{ "id": "A00000000000", "type": "NAD" }
]
},
"serviceOrderItem": {
"serviceSpecification": { "id": "FTTP" },
"serviceCharacteristics": [
{ "name": "LINE_PROFILE", "value": "115M/20M" },
{ "name": "ORDER_TYPE", "value": "NEW" },
{ "name": "SITE_VISIT_REASON", "value": "Standard" },
{ "name": "CARE_LEVEL", "value": "Enhanced" },
{ "name": "STATIC_IP_REQUESTED", "value": "4" },
{ "name": "ECC_CHARGEBAND", "value": "0" },
{ "name": "NAMED_ENGINEER", "value": "Y" },
{ "name": "NAMED_ENGINEER_NOTES", "value": "Fred Smith" },
{ "name": "ONT_FLOOR", "value": "G" },
{ "name": "ONT_ROOM", "value": "Reception Room 2" },
{ "name": "ONT_POSITION", "value": "Shelf" },
{ "name": "RETAILER_ID", "value": "XXX" }
]
},
"primaryContact": {
"name": "John Smith",
"email": "john@smith.com",
"phoneNumber": "01234567890"
},
"appointmentReservationId": 1000001,
"requestedCompletionDate": "2026-07-01",
"hazards": "Hazardous materials stored on site",
"onSiteRestrictions": "Restricted access",
"id": 1000002,
"status": "RECEIVED_BY_GATEWAY",
"created": "2026-06-24T10:30:41.682Z"
}The additional response fields are:
| Field | Description |
|---|---|
id | The gateway order identifier |
status | The order status |
requestedCompletionDate | The requested completion date |
created | When the gateway received the order |
As the order progresses, further fields are set on it:
| Field | Description |
|---|---|
updated | When the order was last changed |
supplierOrderNumber | Vodafone EDGE order reference |
appointmentTimeslot | The confirmed appointment window |
committedDate | The date committed by the supplier |
targetDate | The current target completion date |
updates | The KCIs received against the order |
The appointmentTimeslot carries the timeslotStartDateTime and timeslotEndDateTime of the reserved slot, and supplierOrderNumber takes the form ALF-YYMMDD-Wnnnnnnn.
Amendment and cancellation requests can be made for inflight orders. The following amendments are permitted:
- Change appointment (date/time)
- Update contact details
Amendments are placed against the order and confirmed asynchronously — a general UPDATE KCI is emitted while the amendment is PENDING, followed by an AMENDED update once applied. See Order Updates below.
As the order progresses, the Fibre Cafe sends asynchronous updates (KCIs) to the tenant via the Tenant Updates API; each update is also retained on the order in an updates array. Most Vodafone updates are INFORMATIONAL, with the Vodafone EDGE status code carried in information.supplierCode (and supplierCodes) and a free-text supplierNotes entry. Where the supplier needs action from the tenant the update carries an action reason instead — see the mapping below. Once acknowledged, the order also carries a supplierOrderNumber (the Vodafone EDGE order reference, e.g. ALF-YYMMDD-Wnnnnnnn).
The EDGE status codes map to the KCI reason as follows:
| EDGE code | Reason | Description |
|---|---|---|
| — | UPDATE | Initial update on gateway acceptance |
2001 | ACKNOWLEDGED | Order accepted by the supplier (KCI1) |
3001 | COMMITTED | Order committed by the supplier (KCI2) |
8001 | ADDITIONAL | Named-engineer details supplied |
9099 | DELAY | Order delayed by the supplier |
9029 | DELAY | Supplier missed the appointment |
9009 | REAPPOINT | Order must be reappointed |
3004 | UPDATE | Downstream supplier work complete; awaiting Vodafone completion |
502 | UPDATE | Cancellation raised with the supplier |
540 | AMENDED | Amendment accepted and applied |
4001 | COMPLETED / CANCELLED | Order completed (KCI3), or cancellation completed |
Additional behaviour attached to these codes:
UPDATEis also emitted while an amendment or cancellation isPENDING, and carries the pendingserviceOrderAmendment/serviceOrderCancellation. These gateway-raised updates have nosupplierCode.3001sets thecommittedDateandtargetDateon the order.9099and9029move the order toHELDand carry the delay detail, and any supplier review date, insupplierNotes.9009moves the order toPENDING; the order must be reappointed within 15 calendar days to avoid cancellation.540carries aserviceOrderAmendmentobject.4001covers both completion and cancellation. The connector resolves which from the Fibre Cafe order state, so read the resulting orderstatus(COMPLETEDorCANCELLED) rather than interpreting the code.
An order receives two completion-related updates. 3004 reports that Vodafone's own downstream supplier has finished their work on the order; Vodafone then complete the order themselves and send 4001 later. Only 4001 moves the order to COMPLETED — despite the wording of the accompanying supplierNotes, an order is not complete on 3004.
Not every code appears on every order — 8001 (named-engineer details) is only sent where the order has an appointment, so an Existing ONT order runs UPDATE → ACKNOWLEDGED (2001) → COMMITTED (3001) → UPDATE (3004) → COMPLETED (4001) without it.
An individual update (the completion KCI):
{
"id": "00000000-0000-0000-0000-000000000006",
"supplier": "VODAFONE",
"sequenceNumber": 6,
"issuedOn": "2026-07-08T06:54:14.000Z",
"receivedOn": "2026-07-08T06:57:22.999Z",
"deliveryStatus": "PENDING",
"updateType": "INFORMATIONAL",
"supplierNotes": [
{ "note": "Order Completed", "created": "2026-07-08T06:54:14.000Z" }
],
"information": {
"type": "COMPLETED",
"supplierCode": "4001",
"supplierCodes": [ "4001" ]
}
}The order's serviceCharacteristics are updated as network-assigned values become known. SERVICE_ID is populated once the supplier has accepted the order; ONT_REFERENCE and ONT_PORT are added on completion:
{
"serviceCharacteristics": [
{ "name": "SERVICE_ID", "value": "VFP0000000" },
{ "name": "ONT_REFERENCE", "value": "ONT0000000000" },
{ "name": "ONT_PORT", "value": "1" }
]
}Persist the SERVICE_ID — it identifies the live service and is supplied as the top-level serviceId on future modify and cease orders. It is not sent as a service characteristic.
A missed appointment is reported as a DELAY (code 9029), followed by a REAPPOINT (code 9009) where a new appointment is needed — the order must be reappointed within 15 calendar days to avoid cancellation. It is resolved by reserving a new appointment and amending the order (confirmed via AMENDED, below).
A delay is reported with code 9099. The reason and any review date given by Vodafone's own suppliers are carried in supplierNotes — for a two-stage (EXTENDED_STANDARD) install this is where Step-1 work is reported:
{
"sequenceNumber": 3,
"updateType": "INFORMATIONAL",
"supplierNotes": [
{
"note": "Your order has been delayed. Step-1 work required. Our Suppliers have given us a review date of 14/08/2026.",
"created": "2026-08-06T09:55:24.000Z"
}
],
"information": {
"type": "DELAY",
"supplierCode": "9099",
"supplierCodes": [ "9099" ]
}
}A delay moves the order to HELD and does not change the targetDate. No tenant action is required unless a subsequent REAPPOINT or INFORMATION_REQUIRED KCI asks for it.
When an amendment is placed against an order, the amend-related KCIs carry a serviceOrderAmendment object identifying the amendment (id), the affected orderId, the new appointmentReservationId / requestedCompletionDate, and its status (PENDING, COMPLETED or REJECTED). A general UPDATE is emitted while the amendment is PENDING, and an AMENDED update (code 540) once it is applied:
{
"id": "00000000-0000-0000-0000-000000000009",
"supplier": "VODAFONE",
"sequenceNumber": 9,
"issuedOn": "2026-07-10T13:25:47.000Z",
"receivedOn": "2026-07-10T15:04:48.980Z",
"deliveryStatus": "DELIVERED",
"updateType": "INFORMATIONAL",
"supplierNotes": [
{ "note": "Update: Order Amended", "created": "2026-07-10T13:25:47.000Z" }
],
"information": {
"type": "AMENDED",
"supplierCode": "540",
"supplierCodes": [ "540" ]
},
"serviceOrderAmendment": {
"orderId": 1000002,
"supplier": "VODAFONE",
"appointmentReservationId": 1000001,
"id": 10001,
"status": "COMPLETED"
}
}A cancellation is confirmed over three updates. A gateway UPDATE is emitted while the request is PENDING, carrying the serviceOrderCancellation but no supplierCode:
{
"id": "00000000-0000-0000-0000-000000000004",
"supplier": "VODAFONE",
"sequenceNumber": 4,
"deliveredOn": "2026-08-06T13:54:34.978Z",
"deliveryStatus": "DELIVERED",
"updateType": "INFORMATIONAL",
"information": { "type": "UPDATE" },
"serviceOrderCancellation": {
"supplier": "VODAFONE",
"orderId": 1000002,
"reasonCode": "CUSTOMER_CHANGED_MIND",
"text": "Delivery too long",
"id": 10001,
"status": "PENDING"
}
}Vodafone then sends code 502 confirming the cancellation has been raised with them, with the reason in supplierNotes and no serviceOrderCancellation attached:
{
"id": "00000000-0000-0000-0000-000000000005",
"supplier": "VODAFONE",
"sequenceNumber": 5,
"issuedOn": "2026-08-06T13:56:23.000Z",
"receivedOn": "2026-08-06T13:58:50.939Z",
"deliveryStatus": "DELIVERED",
"updateType": "INFORMATIONAL",
"supplierNotes": [
{ "note": "Cancelled by End User", "created": "2026-08-06T13:56:23.000Z" }
],
"information": {
"type": "UPDATE",
"supplierCode": "502",
"supplierCodes": [ "502" ]
}
}Code 4001 then carries the final CANCELLED state with the completed serviceOrderCancellation, and the order status becomes CANCELLED:
{
"id": "00000000-0000-0000-0000-000000000006",
"supplier": "VODAFONE",
"sequenceNumber": 6,
"issuedOn": "2026-08-06T13:55:45.000Z",
"receivedOn": "2026-08-06T14:00:29.373Z",
"deliveryStatus": "DELIVERED",
"updateType": "INFORMATIONAL",
"supplierNotes": [
{ "note": "Order Cancel Completed.", "created": "2026-08-06T13:55:45.000Z" }
],
"information": {
"type": "CANCELLED",
"supplierCode": "4001",
"supplierCodes": [ "4001" ]
},
"serviceOrderCancellation": {
"supplier": "VODAFONE",
"orderId": 1000002,
"reasonCode": "CUSTOMER_CHANGED_MIND",
"text": "Delivery too long",
"id": 10001,
"status": "COMPLETED"
}
}The serviceOrderCancellation object carries:
| Field | Description |
|---|---|
id | The cancellation identifier |
orderId | The order being cancelled |
reasonCode | The cancellation reason, e.g. CUSTOMER_CHANGED_MIND |
text | Free-text detail accompanying the reason |
status | PENDING, COMPLETED or REJECTED |
The same pattern applies whether the order being cancelled is a provide or a cease order.
- Order placement, the order types and the provide order-update (KCI) lifecycle are documented, along with the delay, amendment and cancellation updates. The detailed request/response bodies for the non-provide journeys (migration, transfer, takeover, swap and amend) and the remaining KCI reasons (e.g. unsolicited cease) are not yet documented for this connector.
- Only FTTP is supported for new orders. An existing SOGEA, SOADSL, FTTC or FTTH service can be switched (migrated) to FTTP.
| Version | Change |
|---|---|
| 1 | Initial release of the Vodafone EDGE connector |