# GetParameterNames not supported by CPE - import data model manually?

**URL:** <https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864>\
**Category:** Uncategorized\
**Created:** [May 18, 2025, 8:27pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864 "2025-05-18T20:27:06Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![dchard](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/dchard/32/1612_2.png) [@dchard](https://forum.genieacs.com/u/dchard)\
**Post date:** [May 18, 2025, 8:27pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/1 "2025-05-18T20:27:06Z")

</div>

Hi,

I have a CPE which reports `Method 'cwmp:GetParameterNames' not implemented: method name or namespace not recognized` right after the initial contact. The CPE gets added the ACS (based on the little data in the initial contact with BOOTSTRAP), but the ACS cannot do any further discovery of the data model and every further attempt ends with “400 Bad Request”.

This is clearly something with the device, all my other CPEs work properly. The question is, what can I do about it?

I have seen the discussion in another topic about if “GetParameterNames” is mandatory or not. I think it is not mandatory as section A.3.2.3 - GetParameterNames clearly states:

“This method MAY be used by an ACS to discover the Parameters accessible on a particular CPE.” And in this sense it is not relevant what table 21. say about NextLevel=true, as that part is only mandatory, if the “GetParameterNames” is implemented, which is optional (“this method MAY be used”).

Searching the forum yields multiple such issues around GetParameterNames, but no solution in sight.

My idea is to somehow load the data model into the ACS (I have it in an XML), is this at all possible? I see that an already discovered device data model can be downloaded, but I dont see a way of how to import one? The logic whould be that if I load the data model, the ACS does not need to send GetParameterNames as it will known the (full) data model already.

---

<div class="post-metadata">

**Author:** ![akcoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/akcoder/32/11_2.png) [@akcoder](https://forum.genieacs.com/u/akcoder)\
**Post date:** [May 19, 2025, 5:23pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/2 "2025-05-19T17:23:16Z")

</div>

> [@dchard](#):
>
> My idea is to somehow load the data model into the ACS (I have it in an XML), is this at all possible?

Yes its possible. If you are running the default GenieACS provision scripts, on `0 BOOTSTRAP` the data model will be cleared. You will need to do extra work to figure out how to reconcile that. Keep in mind too internal caching in GenieACS could also present issues with trying to go around GenieACS to load the data model.

Is there a reason you have to support this device? Why don’t the vendor implement GPN?

---

<div class="post-metadata">

**Author:** ![dchard](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/dchard/32/1612_2.png) [@dchard](https://forum.genieacs.com/u/dchard)\
**Post date:** [May 20, 2025, 9:36am UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/3 "2025-05-20T09:36:54Z")

</div>

Much appreciate your help!

> Yes its possible.

Can you give me some clues where to look?

> If you are running the default GenieACS provision scripts, on `0 BOOTSTRAP` the data model will be cleared.

I assume you refer to this part, and I need to remove it so the ACS is not forcing a refresh which will not work without GetParameterNames anyway:

```auto
// Clear cached data model to force a refresh
clear("Device", now);
clear("InternetGatewayDevice", now);

```

?

> Is there a reason you have to support this device? Why don’t the vendor implement GPN?

To be honest, my opinion is that the vendor does this completely intentionally to break compatibility with generic ACS products. I have worked with Sagemcom, Technicolor, AVM, Huawei, and old ALU CPEs, all of them supported GPN. Even this specific vendor’s other GPON CPEs do support GPN, only this femto type devices is not supporting it. Long story short: I think this is intentional.

---

<div class="post-metadata">

**Author:** ![akcoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/akcoder/32/11_2.png) [@akcoder](https://forum.genieacs.com/u/akcoder)\
**Post date:** [May 20, 2025, 4:39pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/4 "2025-05-20T16:39:30Z")

</div>

> [@dchard](#):
>
> Can you give me some clues where to look?

If you know the OUI and serial of each device is going to report, then create the full document for the device. The ACS ID will be in the form of OUI-PRODUCT\_CLASS-SERIAL\_NUMBER.

If this vendor is a jerk, why not drop them? You have to many in the field? Which vendor, so I know who to avoid.

---

<div class="post-metadata">

**Author:** ![dchard](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/dchard/32/1612_2.png) [@dchard](https://forum.genieacs.com/u/dchard)\
**Post date:** [May 27, 2025, 8:29am UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/5 "2025-05-27T08:29:52Z")

</div>

> [@akcoder](#):
>
> If you know the OUI and serial of each device is going to report, then create the full document for the device.

Yes, but create it where? Normally the data model comes in the form of XML. I have that, but I found no way of importing it. OUI and serial numbers are also known.

“If this vendor is a jerk, why not drop them?”

Not my choice I can assure you. 🙃 This device is not a simple CPE, there are 2-3 vendors who can do this, so not that easy to drop them. The vendor is N\*kia.

---

<div class="post-metadata">

**Author:** ![akcoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/akcoder/32/11_2.png) [@akcoder](https://forum.genieacs.com/u/akcoder)\
**Post date:** [May 27, 2025, 4:07pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/6 "2025-05-27T16:07:58Z")

</div>

> [@dchard](#):
>
> The vendor is N\*kia

lol. We have successfully been able to ward them off.

Probably the easiest way is to use [`mongoimport`](https://www.mongodb.com/developer/products/mongodb/mongoimport-guide/). You will need to touch up the \_id, serial, mac, and potentially OUI before you insert the document.

---

<div class="post-metadata">

**Author:** ![dchard](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/dchard/32/1612_2.png) [@dchard](https://forum.genieacs.com/u/dchard)\
**Post date:** [May 31, 2025, 5:26pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/7 "2025-05-31T17:26:27Z")

</div>

The best part is that their GPON ONTs are working just fine, as with those they cannot do this shit that they try to rape the standard in a way that it makes them incompatible “enough” to buy their platform, as with that attitude they would not sell a single unit…

On the DB: ok I need to import the data model to the database directly. To where? Into `db.devices` I assume?

This is how single entry looks like from the little data that comes from the initial BOOTSTRAP message):

```auto
        AdditionalSoftwareVersion: {
          _object: false,
          _timestamp: ISODate('2025-05-31T17:19:02.157Z'),
          _type: 'xsd:string',
          _value: 'IPL=01.01.01-00000(T),Seed=0x0000'
        },

```

When I import the data model, I will not have the `_value` part as that will be generated when the ACS actually asks for the data itself, but do I need the `_timestamp`, or that is also only generated when the actual value is polled by the ACS?

Thanks again!

---

<div class="post-metadata">

**Author:** ![akcoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/akcoder/32/11_2.png) [@akcoder](https://forum.genieacs.com/u/akcoder)\
**Post date:** [June 2, 2025, 5:07pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/8 "2025-06-02T17:07:35Z")

</div>

Any parameter that beings with an `_` is one that GenieACS creates to track some sort of state information about that parameter.

As far as the importation process, I can offer no guidance. I’ve not had to traverse this path.

---

<div class="post-metadata">

**Author:** ![dchard](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/dchard/32/1612_2.png) [@dchard](https://forum.genieacs.com/u/dchard)\
**Post date:** [June 3, 2025, 7:33am UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/9 "2025-06-03T07:33:45Z")

</div>

Yeah, but I assume at least the `_object` and the `_type` parameters needs to be there when I import the data model, no? I can imagine that the `_timestamp` and `_value` are created when the ACS pulls the actual value with GetParameterValue.

Or maybe it can be just like this:

```auto
        AdditionalSoftwareVersion: {
        },

```

and the rest is filled by the ACS?

---

<div class="post-metadata">

**Author:** ![akcoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/akcoder/32/11_2.png) [@akcoder](https://forum.genieacs.com/u/akcoder)\
**Post date:** [June 4, 2025, 5:17pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/10 "2025-06-04T17:17:21Z")

</div>

I’m honestly not sure. I haven’t had a need to dive into that section of the code base.

---

<div class="post-metadata">

**Author:** ![dchard](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/dchard/32/1612_2.png) [@dchard](https://forum.genieacs.com/u/dchard)\
**Post date:** [June 10, 2025, 9:15am UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/11 "2025-06-10T09:15:00Z")

</div>

Oki, no problem. What I did is this:

Added the most important (proprietary) objects the ACS keeps asking the femto with GetParameterName. It seem this was successful as the ACS is not asking for them any more. However, the ACS keeps asking for the Device.ManagementServer object with GPN even though now all the underlying parameters are there also visible from the webgui. My question is why the ACS tries to do this instead of just doing GPV for these parameters? Seems like this behavior is hard coded for the ManagementServer object during default prov?

---

<div class="post-metadata">

**Author:** ![akcoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/akcoder/32/11_2.png) [@akcoder](https://forum.genieacs.com/u/akcoder)\
**Post date:** [June 10, 2025, 4:01pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/12 "2025-06-10T16:01:10Z")

</div>

Look in the inform provision script. If the second parameter of a `declare` is anything other than `null`, the arguments will be used to access if the path or parameter name should be refreshed from the CPE.

> **[Provisions — GenieACS Documentation 1.2.13 documentation](https://docs.genieacs.com/en/latest/provisions.html#declare-path-timestamps-values)**

---

<div class="post-metadata">

**Author:** ![dchard](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/dchard/32/1612_2.png) [@dchard](https://forum.genieacs.com/u/dchard)\
**Post date:** [June 11, 2025, 6:28pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/13 "2025-06-11T18:28:14Z")

</div>

More developments:

I commented out the complete “inform” part, as everything I want in the “Device.ManagementServer” object is already imported in with mongoimport. I noticed that by default the femto tries to use basic auth with fixed user and pass, so I added `cwmp.auth` with `AUTH("username", "password")` to the config part.

This way the ACS stopped asking GPN (Device.ManagementServer) from the femto, but when I try to issue a reboot, 9 out of 10 the ACS say “device is offline”, 1 out of 10 it say “Basic HTTP authentication not allowed”. In the same time the device seems online on the gui, it is also pingable on the ConnectionRequestURL. No faults recorded any more.

MOD: interesting part is every time I hit reboot, nothing is actually sent towards the femto at all. Shouldn’t I see at least some TCP activity towards the femto? Same for summon.

MOD2: ahh, sorry. Bad Wireshark filter… The femto does respond to summon with 401 unauthorized. ACS is not sending any credentials in ConnectionRequest, so some more reading is in order…

MOD3: ACS to CPE auth part is TODO

---

<div class="post-metadata">

**Author:** ![akcoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/akcoder/32/11_2.png) [@akcoder](https://forum.genieacs.com/u/akcoder)\
**Post date:** [June 12, 2025, 5:37pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/14 "2025-06-12T17:37:58Z")

</div>

Just the docs are to do. ACS → CPE and CPE → ACS authentication works in v1.2.

The easiest way to do ACS → CPE auth is set the username/password on Device.ManagementServer and then GenieACS will do the rest. Thats most of of wha the default inform script does.

---

<div class="post-metadata">

**Author:** ![dchard](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/dchard/32/1612_2.png) [@dchard](https://forum.genieacs.com/u/dchard)\
**Post date:** [June 12, 2025, 8:32pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/15 "2025-06-12T20:32:07Z")

</div>

Oki, in a previous post you said I need to alter it in a way that the second parameter is null, as that way I can prevent GenieACS to do GPN on the ManagementServer object. So you mean this is how the inform prov should look like?

```auto
declare("Device.ManagementServer.ConnectionRequestUsername", null, {value: 'fixedusername'});
declare("Device.ManagementServer.ConnectionRequestPassword", null, {value: 'fixedpassword'});
declare("Device.ManagementServer.PeriodicInformEnable", null, {value: true});
declare("Device.ManagementServer.PeriodicInformInterval", null, {value: '600'});

```

To be honest we need to prevent the ACS to do any GPN on any objects, as that is not going to work with this crappy femto…

---

<div class="post-metadata">

**Author:** ![akcoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/akcoder/32/11_2.png) [@akcoder](https://forum.genieacs.com/u/akcoder)\
**Post date:** [June 12, 2025, 11:13pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/16 "2025-06-12T23:13:54Z")

</div>

Yes, thats how your request should look.

---

<div class="post-metadata">

**Author:** ![dchard](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/dchard/32/1612_2.png) [@dchard](https://forum.genieacs.com/u/dchard)\
**Post date:** [June 13, 2025, 8:19pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/17 "2025-06-13T20:19:07Z")

</div>

Oki, so I put exactly that in the inform (the bootstrap and default prov’s content is commented out), and immediately I start getting “bad requests” right after the next inform arrives, as the ACS starts to do GPN again (for the ManagementServer object):

 ![image](https://canada1.discourse-cdn.com/flex035/uploads/genieacs/original/2X/4/4ea851a0ecc1c94f137c93358d429020b5fa2f8a.png)

So it seems doing the null trick on the declare did not stopped the ACS to do GPN on the object.

This is how the ManagementServer object looks like for the device:

| Device.ManagementServer | |
| --- | --- |
| Device.ManagementServer.ConnectionRequestPassword | fixedpass |
| Device.ManagementServer.ConnectionRequestURL | [http://10.3.0.1:7547/ConnectionRequest/001D4C-TNW200000000](http://10.3.0.1:7547/ConnectionRequest/001D4C-TNW200000000) |
| Device.ManagementServer.ConnectionRequestUsername | fixeduser |
| Device.ManagementServer.InformParameterNumberOfEntries | |
| Device.ManagementServer.ParameterKey | |
| Device.ManagementServer.Password | fixedpass |
| Device.ManagementServer.PeriodicInformEnable | true |
| Device.ManagementServer.PeriodicInformInterval | 600 |
| Device.ManagementServer.URL | [http://acsurl.com:7013/cwmpWeb/WGCPEMgt](http://acsurl.com:7013/cwmpWeb/WGCPEMgt) |
| Device.ManagementServer.Username | fixeduser |

Maybe I am missing something and that is why the ACS keeps asking for GPN?

---

<div class="post-metadata">

**Author:** ![akcoder](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/akcoder/32/11_2.png) [@akcoder](https://forum.genieacs.com/u/akcoder)\
**Post date:** [June 16, 2025, 10:03pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/18 "2025-06-16T22:03:14Z")

</div>

> [@dchard](#):
>
> Maybe I am missing something and that is why the ACS keeps asking for GPN?

There could be something internal to GenieACS which treats the `ManagementServer` parameter different. I’ve never had the need to dig into that part of the code so I can’t tell you more than that.

---

<div class="post-metadata">

**Author:** ![dchard](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/dchard/32/1612_2.png) [@dchard](https://forum.genieacs.com/u/dchard)\
**Post date:** [June 25, 2025, 9:40am UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/19 "2025-06-25T09:40:01Z")

</div>

I am going to add zaidka , lets hope he has an idea.

ADMIN EDIT: No you are not. Do not tag people.

---

<div class="post-metadata">

**Author:** ![zaidka](https://yyz1.discourse-cdn.com/flex035/user_avatar/forum.genieacs.com/zaidka/32/9_2.png) [@zaidka](https://forum.genieacs.com/u/zaidka)\
**Post date:** [July 31, 2025, 8:20pm UTC](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864/20 "2025-07-31T20:20:29Z")

</div>

There’s nothing special about ManagementServer parameters as far as GenieACS is concerned. A GPN is sent because one or more of the parameters you listed haven’t been discovered yet. Internally, any parameter you reference can be in 3 possible states: exists, doesn’t exist, or undiscovered. If undiscovered, then the second argument you pass to the declare function is irrelevant.

If your CPE’s implementation of GetParameterNames is broken (or in your case, not implemented!!!), you have a lot of patching to do. I’ve had to deal with similar issues before. What I normally do is patch session.ts to inject the missing parameters in the response or avoid sending the GPN altogether. But unless you’re intimately familiar with the codebase (particularly session.ts, because it’s a giant mess), I’d suggest patching soap.ts to catch these responses and replace them with a successful response before they’re processed.

[Next page](https://forum.genieacs.com/t/getparameternames-not-supported-by-cpe-import-data-model-manually/6864.md?page=2)
