XML Configuration Files
1. Overview
This document provides detailed information on the XML configuration files used by the Provisioning Portal. These configuration files allow administrators and system integrators to customize key aspects of the system behavior, such as user information display, domain settings, multithreading capabilities, service deactivation, session management, and device creation. By modifying these files, you can tailor the functionality of the portal to meet specific requirements.
2. Configuration Files Overview
The following XML files are used for custom configuration:
-
Configuration.xml – Provides general system-wide configuration.
-
CSVSettings.xml – Contains settings specific to CSV input parsing and formatting.
-
objects.xml – Maps "services" to TR-069 data objects for translating abstract "services" into TR-069 model objects and standalone services.
-
params.xml – Maps "services" to TR-069 data parameters for abstract-to-specific translation.
-
replaceCPE.xml – Defines parameters and objects involved in the CPE replacement procedure.
-
CustomStatus.xml – Defines which status codes should be logged to CustomLog for special tracking.
3. Detailed File Descriptions
3.1. Configuration.xml
The Configuration.xml file provides general system-wide configuration.
3.1.1. Structure
Below is a brief explanation of key elements in the Configuration.xml file:
-
<deviceInfo>: Allows manual customization of “User Info” fields. There are 18 tags for customization. For example, “Full name” can be renamed to “Name”. If the
enableattribute is set tofalse, the “Device Info” section of the “Single CPE” tab will be hidden. -
<domain>: Used for manual customization of the “Domain” dropdown on the “Single CPE” page and the “Domain” field for “Multiple CPEs”. For example, “Domain” can be renamed to “Site”. If the
enableattribute is set tofalse, the “Domain” dropdown will be hidden. -
<multithreading>: If set to
true, the application operates in multithreaded mode, processing multiple operations concurrently. If set tofalse, operations execute sequentially. The maximum number of simultaneous operations is defined by<numberOfMultipleThreads>. -
<deactivateService>: Controls the visibility of the “Deactivate Service” tab in the Provision Portal GUI. If set to
false, the tab will not be displayed. -
<endSession>: When set to
true, all calls to the “FTSetDeviceParameters” method during provisioning include the corresponding parameter; otherwise, they do not. -
<createDevice>: When set to
true, new CPEs not found in the production database during provisioning will be automatically created using the “FTCreateDevice” method. In this case, certain attributes (e.g. “oui” and “productClass”) become mandatory. If set tofalse, missing CPEs will not be created.
3.1.2. Example
Below is an example content of Configuration.xml:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<single>
<deviceInfo enable="true">
<fullName>Full name</fullName>
<userTag>User tag</userTag>
<userId>User ID</userId>
<location>Location</location>
<loginName>Login name</loginName>
<zip>Zip</zip>
<phone>Phone</phone>
<status>Status</status>
<cust1>Cust1</cust1>
<cust2>Cust2</cust2>
<cust3>Cust3</cust3>
<cust4>Cust4</cust4>
<cust5>Cust5</cust5>
<cust6>Cust6</cust6>
<cust7>Cust7</cust7>
<cust8>Cust8</cust8>
<cust9>Cust9</cust9>
<cust10>Cust10</cust10>
</deviceInfo>
<domain enable="true">Domain</domain>
<additionalContentSnom>false</additionalContentSnom>
</single>
<multiple>
<multithreading>false</multithreading>
<numberOfMultipleThreads>8</numberOfMultipleThreads>
</multiple>
<deactivateService>
<enable>true</enable>
</deactivateService>
<general>
<endSession>false</endSession>
<createDevice>false</createDevice>
</general>
</configuration>
3.2. CSVSettings.xml
The CSVSettings.xml file (located under the XML folder) serves two major purposes: * It allows you to configure the parsing of custom fields and their order in the imported CSV file. * It contains a mapping between services, objects, and TR parameters.
3.2.1. Structure
The CSVSettings.xml file is structured with the following tags:
-
device – Device-related section, which allows you to customize the order of unique identifiers such as the serial number, MAC address, OUI, and model name. Each attribute (snIndex, macIndex, ouiIndex, modelIndex) defines the position of that field in the CSV file. If a particular field is not required, use "0" or leave the attribute empty.
-
info – Device info-related section. This section allows you to customize the order of device info parameters (e.g., fullname, user_tag, userid, location, login_name, zip, telephone, user_status and custom fields such as cust1 to cust10). Note: If the “domain” field is used, ensure that the
<domain>element in Configuration.xml is set to “true”. -
general – General section, which configures the order of general items such as reprovision, delete previous, reboot, and current only commands. The attributes (reprovisionIndex, deletepreviousIndex, rebootIndex, currentonlyIndex) define their positions.
-
params – Parameters-related section. This tag defines the order in which parameters appear in the CSV file. Each
<param>element has:-
id: linking to a parameter in params.xml,
-
index: specifying its position,
-
service: associating it with a particular service.
-
-
objects – Objects-related section. This tag allows you to customize the order of objects and their parameters. Each
<object>element includes:-
id: linking to an object in objects.xml,
-
service: specifying the associated service,
-
instance: defining the object instance.
-
-
Nested
<param>elements inside an<object>specify:-
id: linking to an attribute in objects.xml,
-
index: its position in the CSV file.
-
-
services – Services-related section. This tag defines the order of services during CSV parsing via the index attribute.
-
startingString – Defines the starting line (as a string number) from which the CSV file should be parsed.
3.2.2. Example
Below is an example content of CSVSettings.xml:
<?xml version="1.0" encoding="utf-8" ?>
<device snIndex="1" macIndex="4" ouiIndex="2" modelIndex="3">
<info>
<item name="fullname" index="5"/>
<item name="user_tag" index="8"/>
<item name="userid" index="9"/>
<item name="location" index="10"/>
<item name="login_name" index="11"/>
<item name="zip" index="12"/>
<item name="telephone" index="13"/>
<item name="user_status" index="14"/>
<item name="cust1" index="15"/>
<item name="cust2" index="16"/>
<item name="cust3" index="17"/>
<item name="cust4" index="18"/>
<item name="cust5" index="19"/>
<item name="cust6" index="20"/>
<item name="cust7" index="21"/>
<item name="cust8" index="22"/>
<item name="cust9" index="23"/>
<item name="cust10" index="24"/>
<item name="domain" index="31"/>
</info>
<general reprovisionIndex="29" deletepreviousIndex="26" rebootIndex="27" currentonlyIndex="30"/>
<params>
<param id="periodicinforminterval" index="28" service="config"/>
<param id="RadioEnabled" index="6" service="WLAN"/>
</params>
<objects>
<object id="WANConnectionDevice" service="WLAN" instance="30">
<param id="DestinationAddress" index="7"/>
</object>
</objects>
<services>
<service index="25"/>
</services>
<startingString>2</startingString>
</device>
3.2.3. Clarifications
-
device: Defines the positions of the device’s unique identifiers in the CSV file:
-
snIndex: Position of the device serial number.
-
macIndex: Position of the device MAC address.
-
ouiIndex: Position of the device OUI.
-
modelIndex: Position of the device model name.
-
-
info: Specifies the order of device-related account information. Each
<item>element has:-
name: The account info parameter name, as customized in Configuration.xml.
-
index: The position of the parameter in the CSV file.
-
-
general: Specifies the positions for general commands:
-
reprovisionIndex: Reprovision command position.
-
deletepreviousIndex: Position for deleting previous entries.
-
rebootIndex: Reboot command position.
-
currentonlyIndex: Position for the current-only command.
-
-
params: Defines the order of parameters in the CSV file. Each
<param>element includes:-
id: The parameter identifier (linked to params.xml),
-
index: Its CSV position,
-
service: The associated service.
-
-
objects: Establishes the order of objects and their parameters. For each
<object>:-
id: Links to the object identifier in objects.xml,
-
service: The related service name,
-
instance: Specifies the object instance.
-
Each nested <param> element defines:
— id: Identifier linked to objects.xml,
— index: Position in the CSV file.
-
services: Defines the order of services, where the index attribute specifies the CSV field position.
-
startingString: Specifies the line number from which the CSV file parsing should start.
3.3. Objects.xml
The objects.xml file (located under the XML folder) serves two major purposes:
-
It defines the input fields to be displayed on the Web UI in the “Provisioning object” section for a single CPE.
-
It contains a mapping between services and TR-069 objects for each supported CPE model.
3.3.1. Structure
The objects.xml file is organized into two primary sections within the root node:
-
services – This section contains the services and their associated parameters for all available services across all models. Each service is represented by a
<service>element, which includes an<object>element. The<object>element may contain multiple<param>elements for parameters, and optionally a<sub-objects>block containing<sub-object>nodes for nested objects. -
models – This section defines specific configurations for each supported CPE model. Each
<model>element (identified by a model name and OUI) contains one or more<service>elements. Within each service, an<object>element defines the TR-069 object settings, similar to the services section. This setup allows the portal to map services to TR-069 objects on a per-model basis.
3.3.2. Example
Below is an example content of objects.xml:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<services>
<service name="Port Mapping">
<object id="eMule TCP" friendlyname="eMule TCP" instance="1" name="InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.PortMapping." default="1">
<param id="ExternalPort" friendlyname="External Port" default="1" name="ExternalPort">55555</param>
<param id="InternalClient" friendlyname="Internal Client" default="1" name="InternalClient">10.0.0.10</param>
<param id="InternalPort" friendlyname="Internal Port" default="1" name="InternalPort"></param>
<param id="PortMappingDescription" friendlyname="Description" default="0" name="PortMappingDescription">eMule TCP</param>
<param id="PortMappingEnabled" friendlyname="Enabled" default="0" name="PortMappingEnabled">1</param>
<param id="PortMappingLeaseDuration" friendlyname="Lease Duration" default="1" name="PortMappingLeaseDuration"></param>
<param id="RemoteHost" friendlyname="Remote Host" default="0" name="RemoteHost"/>
</object>
</service>
</services>
<models>
<model name="SL2141" oui="001AD0">
<service name="WAN">
<object id="WANConnection Device" friendlyname="WAN Connection Device" instance="3" name="InternetGatewayDevice.WANDevice.1.WANConnectionDevice." default="1">
<param id="DestinationAddress" friendlyname="Destination Address" default="1" name="WANDSLLinkConfig.DestinationAddress">PVC:8/48</param>
<param id="Enable" friendlyname="Enable" default="1" name="WANDSLLinkConfig.Enable">1</param>
<param id="ATMEncapsulation" friendlyname="ATM Encapsulation" default="0" name="WANDSLLinkConfig.ATMEncapsulation">EoA</param>
</object>
</service>
<service name="Port Mapping">
<object id="eMule TCP" friendlyname="eMule TCP" instance="0" name="InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.PortMapping." default="1">
<param id="ExternalPort" friendlyname="External Port" default="0" name="ExternalPort">46622</param>
<param id="InternalClient" friendlyname="Internal Client" default="0" name="InternalClient">10.0.0.20</param>
<param id="InternalPort" friendlyname="Internal Port" default="1" name="InternalPort">46622</param>
<param id="PortMappingDescription" friendlyname="Description" default="0" name="PortMappingDescription">eMule TCP</param>
<param id="PortMappingEnabled" friendlyname="Enabled" default="0" name="PortMappingEnabled">1</param>
<param id="PortMappingLeaseDuration" friendlyname="Lease Duration" default="1" name="PortMappingLeaseDuration"></param>
<param id="PortMappingProtocol" friendlyname="Protocol" default="0" name="PortMappingProtocol">TCP</param>
<param id="RemoteHost" friendlyname="Remote Host" default="0" name="RemoteHost"/>
</object>
</service>
</model>
<model name="MP252" oui="00908F">
<service name="WAN">
<object id="WANConnectionDevice" friendlyname="WANConnectionDevice" instance="1" name="InternetGatewayDevice.WANDevice.1.WANConnectionDevice." default="1">
<param id="Enable" friendlyname="Enable" default="0" name="WANDSLLinkConfig.Enable">1</param>
<sub-objects>
<sub-object id="WANIPConnection" friendlyname="WANIPConnection" name="WANIPConnection." instance="0" default="0">
<param id="Enable" friendlyname="Enable" default="0" name="Enable">1</param>
</sub-object>
</sub-objects>
</object>
</service>
</model>
</models>
</root>
3.3.3. Clarifications
-
services: This section defines the available services to be displayed on the Web UI under the "Provisioning object" section for a single CPE. Each
<service>node represents a service and is used solely for UI population. -
models: Each supported CPE model is defined by a
<model>node. Thenameattribute identifies the CPE product class, while theouiattribute specifies the Organizationally Unique Identifier. Each model node includes service-specific object configurations. -
object tag attributes:
-
id: Identifier for invoking or setting parameters for the object.
-
friendlyname: Label for display on the Web UI.
-
instance: Defines the object instance (ranging from 0 to 9). An instance value of 0 indicates standard TR-069 behavior, while values from 1 to 9 denote specific instances.
-
name: Full object path.
-
default: Indicates whether the object is mandatory (
1) or optional (0).
-
-
param tag attributes:
-
id: Identifier for the parameter.
-
friendlyname: Display label for the parameter in the UI.
-
default: Indicates whether the parameter is mandatory (
1) or optional (0). -
name: Specifies the parameter’s name.
-
options (optional): A comma-separated list of options for populating a dropdown in the UI.
-
-
sub-objects: This block allows nesting of objects. The
<sub-object>node holds parameters for a nested object, with attributes similar to the<object>node. -
The example clarifies how objects and their parameters are mapped to services across different CPE models.
3.4. Params.xml
The params.xml file (located under the XML folder) serves two major purposes:
-
It defines the input fields to be displayed on the Web UI “Provisioning parameters” section for a single CPE.
-
It contains a mapping between services and TR-069 parameters for each supported CPE model.
3.4.1. Structure
The params.xml file is organized into two main sections within the root node:
-
services – This section contains the services and their associated parameters for all available services across all models. Each
<service>element represents a service intended for populating the GUI. It includes child<param>elements that define the details of each parameter. Note that service nodes do not carry TR-069 parameter attributes because they are solely used for UI population. -
models – Each supported CPE model may have a
<model>element with child nodes for each supported TR-069 parameter per service. The<model>element’s name serves as the model identifier, and its content provides model-specific parameter mappings.
3.4.2. Example
Below is an example content of params.xml:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<services>
<service name="VoIPService">
<param id="sipDomain" friendlyname="SIP Domain" default="1" name="InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.SIP.RegistrarServer" />
<param id="sipProxy" friendlyname="SIP Proxy" default="1" name="InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.SIP.ProxyServer" />
<param id="authNumber" friendlyname="SIP Authentication Name/ ID" default="1" name="InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.SIP.AuthUserName"/>
<param id="authPassword" friendlyname="SIP Authentication Password" default="1" name="InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.SIP.AuthPassword" />
<param id="authNumber2" friendlyname="SIP Authentication Name/ ID for Account 2" default="1" name="InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.2.SIP.AuthUserName" />
<param id="authPassword2" friendlyname="SIP Authentication Password for Account 2" default="1" name="InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.2.SIP.AuthPassword" />
<param id="connectionRequestUsername" friendlyname="TR-069 CPE ConnectionRequest Username" default="1" name="InternetGatewayDevice.ManagementServer.ConnectionRequestUsername"/>
<param id="connectionRequestPassword" friendlyname="TR-069 CPE ConnectionRequest Password" default="1" name="InternetGatewayDevice.ManagementServer.ConnectionRequestPassword"/>
<param id="acsUsername" friendlyname="ACS Username" default="1" name="InternetGatewayDevice.ManagementServer.Username"/>
<param id="acsPassword" friendlyname="ACS Password" default="1" name="InternetGatewayDevice.ManagementServer.Password"/>
</service>
<service name="WLAN">
<param id="SSID" friendlyname="Wireless SSID" default="1" name="InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.SSID">Sweet Home</param>
</service>
<service name="Config">
<param id="PeriodicInformInterval" friendlyname="Inform Interval" default="1" name="InternetGatewayDevice.ManagementServer.PeriodicInformInterval">65</param>
<param id="LocalTimeZone" friendlyname="Time Zone" default="0" name="InternetGatewayDevice.Time.LocalTimeZone" />
</service>
</services>
<models>
<model name="SL2141" oui="001AD0">
<service name="WLAN">
<param id="SSID" friendlyname="Wireless SSID" default="0" name="InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.SSID" />
</service>
</model>
<model name="A50A01" oui="000CC3">
<service name="VoIP">
<param id="voipusername" friendlyname="VoIP Username" default="0" name="InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Name54" />
<param id="voippassword" friendlyname="VoIP Password" default="0" name="InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.DTMFMethod54" />
</service>
</model>
</models>
</root>
3.4.3. Clarifications
-
services: This section defines the available services to be displayed on the Web UI under the "Provisioning parameters" section for a single CPE. Each
<service>node is used solely for GUI population. For example, the service with the name "VoIPService" is intended for external provisioning and should not be renamed. -
model: Each supported CPE model is defined by a
<model>node. Thenameattribute identifies the CPE product class, while theouiattribute specifies the CPE’s Organizationally Unique Identifier. Within a model,<service>elements define model-specific parameter mappings. -
param tag attributes:
-
id: Identifier for invoking or setting the parameter.
-
friendlyname: Label displayed on the Web UI for the parameter.
-
default: Indicates if the parameter is mandatory (
1) or optional (0). -
name: Specifies the full TR-069 parameter path.
-
options (optional): If provided, a comma-separated list of values that will be displayed in a dropdown on the UI.
-
3.5. replaceCPE.xml
The replaceCPE.xml file is used by the ReplaceCPE method during provisioning transfers between CPEs. When invoked, the method searches for a matching section in this file. If a relevant section is not found, the source provisioning data is transferred to the destination “as is”. If a matching section is located, a matching process takes place between the source provisioning data and the XML section content. The records that match are then converted based on the defined destination rules. If no matching source records are found, the source data is again transferred unchanged.
3.5.1. Structure
The replaceCPE.xml file is organized with the following tag hierarchy:
-
root – The main XML node.
-
model – Defines a pair of CPEs (source-to-destination) for which provisioning data will be transferred. This element may include attributes to specify:
-
fromOui – Source CPE OUI identifier.
-
fromProductClass – Source CPE product class.
-
toOui – Destination CPE OUI identifier.
-
toProductClass – Destination CPE product class.
-
Within each <model> element, you may include the following optional subsections:
-
params – Contains one or more
<param>elements. Each<param>element defines a rule for transferring a standalone parameter from the source service to a destination service. -
objects – Contains one or more
<object>elements. Each<object>element maps a provisioning object from the source to the destination and may further include nested<param>elements to modify specific parameters. -
services – Contains one or more
<service>elements. Each<service>element defines a mapping between a source service and a destination service.
3.5.2. Example
Below is an example content of replaceCPE.xml:
<?xml version="1.0" encoding="utf-8" ?>
<root>
<model fromOui="" fromProductClass="" toOui="" toProductClass="">
<params>
<param fromService="voip" fromId="voippassword" toService="voip" toId="voippassword"/>
<param fromService="Config" fromId="PeriodicInformInterval" toService="Config" toId="PeriodicInformInterval"/>
</params>
<objects>
<object fromService="voip" fromId="voiceProfile" toService="voip" toId="voiceProfile">
<param fromId="Enable" toId="Enabled"/>
<param fromId="Disable" toId="Disabled"/>
</object>
<object fromService="voip" fromId="voiceProfile" toService="voip" toId="voiceProfile"/>
<object fromService="PortMapping" fromId="eMule TCP" toService="PortMapping" toId="eMule TCP">
<param fromId="ExternalPort" toId="ExternalPort"/>
<param fromId="InternalClient" toId="InternalClient"/>
<param fromId="InternalPort" toId="InternalPort"/>
<param fromId="PortMappingLeaseDuration" toId="PortMappingLeaseDuration"/>
</object>
</objects>
<services>
<service fromId="PortMapping" toId="PortMapping"/>
<service fromId="Config" toId="Config"/>
</services>
</model>
<model fromOui="" fromProductClass="" toOui="" toProductClass="">
<params>
<param fromService="WLAN" fromId="SSID" toService="Config" toId="PeriodicInformInterval"/>
</params>
<objects>
<object fromService="PortMapping" fromId="eMule TCP" toService="PortMapping3" toId="eMule UDP333">
<param fromId="ExternalPort" toId="ExternalPort1"/>
</object>
</objects>
<services>
<service fromId="PortMapping" toId="PortMapping3"/>
</services>
</model>
</root>
3.5.3. Clarifications
-
model (Optional): This element defines the source and destination CPE pair for which provisioning data should be modified. It requires the following attributes:
-
fromOui: Specifies the source CPE’s OUI.
-
fromProductClass: Specifies the source CPE’s product class.
-
toOui: Specifies the destination CPE’s OUI.
-
toProductClass: Specifies the destination CPE’s product class. The ReplaceCPE process uses a replaceCPE.xml section only if the source and destination values match exactly.
-
-
params (Optional): The
<params>sub-section contains mappings for standalone parameters that need redirection or renaming. Each<param>element should have:-
fromService: The source service name.
-
fromId: The identifier for the source parameter (as defined in Params.xml).
-
toService: The destination service name.
-
toId: The identifier for the destination parameter (as defined in Params.xml).
-
-
objects (Optional): This sub-section defines the mappings for provisioning objects. Each
<object>element includes:-
fromService: The source service name (as defined in Objects.xml).
-
fromId: The identifier for the source object.
-
toService: The destination service name.
-
toId: The identifier for the destination object. Optionally, nested
<param>elements may be provided to map parameters within the object. Each nested<param>should include: -
fromId: The source parameter ID.
-
toId: The destination parameter ID.
-
-
services (Optional): The
<services>sub-section specifies the mapping of entire services. Each<service>element includes:-
fromId: The source service identifier (as defined in Params.xml and/or Objects.xml).
-
toId: The destination service identifier.
-
3.6. CustomStatus.xml
The CustomStatus.xml file is used to configure which status codes should be logged to a separate CustomLog file. This allows administrators to track specific operational statuses without having to search through the complete DebugLog.
3.6.1. Purpose
The Provisioning Portal generates two types of log files:
-
DebugLog – A comprehensive operational log containing all system events, status codes, and operations.
-
CustomLog – A filtered log containing only entries with status codes specified in CustomStatus.xml.
Both logs are generated daily and stored in Log/ folder.
The CustomLog feature enables:
-
Focused monitoring of specific provisioning statuses
-
Easier troubleshooting by filtering relevant events
-
Custom reporting based on selected status codes
-
Reduced log analysis time for specific issues
3.6.2. Structure
The CustomStatus.xml file uses a simple structure with a root <statuses> element containing individual <status> elements.
Each <status> element has a single attribute:
-
id – The numeric status code that should be logged to CustomLog
3.6.3. Example
Below is an example content of CustomStatus.xml:
<?xml version="1.0" encoding="utf-8" ?>
<statuses>
<status id="151"></status>
<status id="251"></status>
<status id="5007"></status>
<status id="246"></status>
<status id="217"></status>
<status id="190"></status>
<status id="110"></status>
<status id="196"></status>
</statuses>
3.6.4. Clarifications
-
id attribute: Must be a valid integer matching one of the status codes defined in the
Statusenum (seecom.friendly.provisionportal.shared.Status). -
Dynamic reloading: The application checks the CustomStatus.xml file every 10 minutes and automatically reloads the configuration if the file has been modified. This allows updating the tracked status codes without restarting the application.
-
File location: The file location is determined by the
xml-configs.locationproperty (default:classpath:xml/). For production deployments, you can mount an external directory to allow runtime updates. -
No duplicate checking: While duplicate status IDs in the file are harmless (they are stored in a Set internally), it’s recommended to keep the list clean.