Input Flow
1. Overview
The Input Flow provisions a CPE from a provisioning request.
It is the main flow of the Provision Portal.
The Single device tab, the Multiple device tab, ProvisioningForDevice and ProvisioningForDevices start the Input Flow.
The /provision/* REST endpoints also start the Input Flow.
For the full list, see Flows and Entry Points.
provisioningStarter receives the request.
It runs the Input Flow once for each CPE of the request.
The Business Process Model and Notation (BPMN) process of the Input Flow is inputFlowV3 in inputFlowV3.bpmn.
For the processing modes, see Batch Processing.
For one CPE, the Input Flow does these steps:
-
Saves the request data to the provision database (provision DB).
-
Finds the CPE in the ACS or creates the CPE. Updates the device info and the domain.
-
Collects the objects, standalone services and parameters.
-
Creates or updates the objects and sub-objects on the CPE.
-
Sets the non-object parameters.
-
Waits for the ACS tasks, reboots the CPE on request and writes the final status.
The options Delete previous, Current only, Reprovision, Secondary provision and Reboot change the path. See Common Options.
2. Flow Diagram
The numbers in the circles are status codes. For their meaning, see Status Codes Reference.
3. Steps
3.1. Save the Request to the Provision DB
The flow reads the CPE identifier from the request XML. The MAC address comes first. If the request has no MAC address, the flow uses the serial number (SN).
-
The flow searches the provision DB for the identifier.
-
If the request has Delete previous, the flow deletes the existing records.
-
The flow creates or updates the records for the SN or the MAC address.
| Code | Meaning |
|---|---|
251, 151 |
MAC address, SN in the request XML |
1500 |
No SN and no MAC address in the request XML. The flow ends. |
266, 271 |
MAC address in the provision DB: yes, no |
161, 166 |
SN in the provision DB: yes, no |
276, 171 |
Previous records of the MAC address, SN deleted |
176 |
Provision DB updated |
1700 |
Database exception. The flow ends. |
3.2. Find the CPE in the ACS
If the identifier is an SN, the flow checks the ACS for the CPE:
-
The ACS has the CPE: the flow continues.
-
The ACS does not have the CPE, and
<createDevice>istrue: the flow creates the CPE withFTCreateDevice. -
The ACS does not have the CPE, and
<createDevice>isfalse: the flow ends with status 196.
<createDevice> is a setting in Configuration.xml.
After status 196, the data waits for the CPE.
When the CPE connects, the ACS Event Flow applies the stored data.
If the identifier is a MAC address, the flow gets the SN with FTFindCPEByWANMAC.
Then the flow adds the SN to the records of the MAC address.
If the ACS does not know the MAC address, the flow ends with status 261.
The data waits for the CPE.
For a CPE in the ACS, the flow then does these steps:
-
FTGetDeviceInfogets the OUI and the Product Class. -
If device info exists,
FTUpdateDeviceInfosends the device info. -
If the request has a domain,
FTSetCPEDomainsets the domain. -
If the request has Delete previous,
FTRemoveCPEProvisionDataremoves the previous provisioning data from the ACS.
With Current only, the device info comes from the request. Otherwise, the device info comes from the provision DB.
| Code | Meaning |
|---|---|
206 |
Search for the CPE in the ACS |
186, 191 |
SN in the ACS: yes, no |
700, 7000 |
|
196 |
CPE not in the ACS. The data waits for the CPE. Final status for an SN. |
286, 291 |
SN for the MAC address in the ACS: yes, no |
261 |
CPE not in the ACS. The data waits for the CPE. Final status for a MAC address. |
177, 1770 |
SN added to the records of the MAC address: success, failure |
216, 2160 |
OUI and Product Class: received, |
440 to 443, 110, 112 |
Source of the device info: request XML or provision DB |
108, 1080 |
|
600 |
No domain in the request |
601, 6010 |
|
201, 2010 |
|
3.3. Collect Objects and Standalone Services
The flow decides what to send. With Current only, the flow reads only the request XML. Without Current only, the flow reads the provision DB. The provision DB already contains the data of the request.
| Item | What the flow does |
|---|---|
Standalone services |
A standalone service is a service in the request without its own objects or parameter values. The flow sends the defaults of the service. The flow takes the TR-069 objects of the service from Objects.xml. The default parameters come from Params.xml in Set Non-Object Parameters. |
Objects |
The flow matches the objects and sub-objects of the request with Objects.xml. |
Object related parameters |
The flow matches the parameters of these objects with Objects.xml. The flow adds the default values from Objects.xml. |
If the flow finds at least one object name, the flow continues with Create and Update Objects. Otherwise, the flow writes status 182 and continues with Set Non-Object Parameters.
| Code | Meaning |
|---|---|
450 to 453, 169, 170 |
Standalone services in the request XML or the provision DB |
214, 212 |
Standalone service in Objects.xml: yes, no |
172, 1720 |
Object names for the standalone services: received, failure |
460 to 463, 173, 174 |
Objects in the request XML or the provision DB |
175, 1750 |
Objects matched with Objects.xml: success, mismatch |
470 to 473, 178, 181 |
Object related parameters in the request XML or the provision DB |
179, 1790 |
Object related parameters matched with Objects.xml: success, mismatch |
183, 1830 |
Default parameters of the objects from Objects.xml: received, mismatch |
182 |
No Objects.xml data. No objects to process. |
3.4. Create and Update Objects
First, the flow checks the online status of the CPE. An offline CPE can get new objects. The tasks wait in the ACS until the CPE connects. An offline CPE cannot get an object with a specific instance. In this case, the flow ends with status 5007.
The flow processes the objects one by one. The instance of an object decides the action. See also Provisioning Objects.
| Instance | Action |
|---|---|
0 |
The flow creates a new object with its parameters.
The flow uses |
1 to 9 |
The flow sets one parameter of the instance with |
After the flow creates an object, the flow processes the sub-objects.
FTGetDeviceParametersByTransID gets the instance number of the new parent object.
The flow creates the sub-objects under this instance.
| Code | Meaning |
|---|---|
221, 211, 5000 |
CPE online, CPE offline, online status unknown |
5007 |
Specific instance for an offline CPE. The flow ends. |
184, 1840 |
First object selection: success, failure |
185 |
Instance 0 |
187, 1850 |
|
305 |
|
180 |
|
1880, 5008 |
Task still pending after the timeout, task status unknown |
189, 1890 |
Object created, task failed or rejected |
190 |
Instance 1 to 9 |
3070 |
Specific instance with reprovision flag |
192, 1900, 1930, 5009 |
Check of the instance with |
194, 195 |
Instance exists, instance may not exist |
293, 2930, 2940, 5012, 295, 2950 |
Parameters of an existing instance |
197, 1970, 1980, 5010, 199, 1990 |
New instance with |
800 to 808, 8040, 8050, 8080 |
Sub-objects |
204, 205 |
Next object selected, no objects left |
3.5. Set Non-Object Parameters
The flow collects the parameters outside objects:
-
the default parameters of the standalone services, from Params.xml
-
the non-object parameters of the request
-
without Current only, the non-object parameters of the provision DB
The flow matches the non-object parameters with Params.xml.
The flow also adds the default parameters of their services.
One FTSetDeviceParameters call sends all these parameters.
If the flow has no parameters and handled no objects, the flow ends with status 248. In this case, the CPE got only the device info.
| Code | Meaning |
|---|---|
480 to 483, 157, 158 |
Standalone services in the request XML or the provision DB |
219, 213 |
Standalone service in Params.xml: yes, no |
159, 1590 |
Default parameters of the standalone services: received, failure |
490 to 493, 113, 114 |
Non-object parameters in the request XML or the provision DB |
217, 2171 |
Parameters matched with Params.xml: success, mismatch |
163, 1630 |
Services and default parameters matched: success, failure |
231, 2310 |
|
160 |
No parameter data for the CPE |
320, 322 |
Objects handled: at least one, none |
248 |
Only the device info sent. Final status. |
3.6. Wait for Results, Reboot and Finish
| Case | Action | Final status |
|---|---|---|
Reprovision flag |
The flow does not wait for task results.
If the request has Reboot, the flow reboots the CPE with |
314 |
CPE online |
The flow waits for the parameter task. See Waiting for Task Results. If the request has Reboot, the flow then reboots the CPE. |
246 |
CPE offline |
The flow does not wait. If the request has Reboot, the flow queues the reboot. The ACS runs the tasks when the CPE connects. |
247 |
| Code | Meaning |
|---|---|
215, 2150 |
|
321, 319 |
Non-object parameters handled: at least one, none |
2350, 5001 |
Parameter task still pending after the timeout, task status unknown |
164, 2460 |
Parameters set, task failed or rejected |
165, 1650, 168, 1680, 313, 3130 |
Reboot with |
246 |
Provisioning of an online CPE complete. Final status. |
247 |
Offline CPE. The data waits for the CPE. Final status. |
314 |
Provisioning with reprovision flag |