To Set the Device parameter value during 0 BOOTSTRAP event

Hello everyone,

I would like to clarify a use case regarding the 0 BOOTSTRAP event handling in GenieACS.

I understand that when a device first connects (or after a factory reset), it triggers the 0 BOOTSTRAP event. At this stage, GenieACS may still hold outdated parameter values (such as the device’s hostname) from before the reset, and care must be taken to avoid applying incorrect configurations based on stale data.

My specific question is:

Is it possible to automatically change a device parameter (for example, Device.ManagementServer.UpgradeManaged) during the 0 BOOTSTRAP event?

For instance:
The device initially connects and triggers the 0 BOOTSTRAP event.
During this event, I want to automatically set the parameter Device.ManagementServer.UpgradeManaged from 0 to 1.
No dependency on dynamic values like hostname is involved — it’s simply setting a known, static parameter.

Since Device.ManagementServer.UpgradeManaged is a standard parameter and not something that typically changes with resets, there shouldn’t be a concern about stale information.
Proper ordering of operations is important if the device takes time to stabilize after a factory reset.
Here is an example of provision script i create to handle the 0 BOOTSTRAP event
Bootstrap script:

const now = Date.now();

refreshObject(“Device.ManagementServer”, now);

declare(“Device.ManagementServer.UpgradesManaged”, {value: false}, {timestamp: now});

commit();

genieacs-cwmp-access.log:-

Thanks in advance for your help!

My parameter is “InternetGatewayDevice.ManagementServer.UpgradesManaged” so may be different but doesn’t show as an editable parameter in Geniacs gui. You can certainly set parameters in a BOOSTRAP Provision becuase I alter the inform interval like this but that is an editable parameter.
const now = Date.now();
declare(“InternetGatewayDevice.ManagementServer.PeriodicInformInterval”, {value: now}, {value: 90});

Thank you for your response. I’ve confirmed that Device.ManagementServer.UpgradesManaged is a writable parameter on my device.
However, my issue seems to be different — in my case, I don’t see any 0 BOOTSTRAP event being logged in the genieacs-cwmp-access.log file when the device connects for the first time (or after a factory reset). you’re able to change InternetGatewayDevice.ManagementServer.PeriodicInformInterval during the BOOTSTRAP event ? and informEvent="0 BOOTSTRAP" entry is visible in your genieacs-cwmp-access.log` when the device first connects?

I’m trying to understand whether the issue is with my device not triggering the BOOTSTRAP event at all, or something else in the GenieACS handling.

I was fiddling with this a couple of weeks ago and I can’t remember if BOOTSTRAP showed up in the logs or just BOOT. Why don’t you try changing a different parameter like the one I’m changing to see if that works? I’m not sure if this will help but my parameter has an “s” in it have you checked your spelling? “InternetGatewayDevice.ManagementServer.UpgradesManaged”

As of now, I’m able to see the 0 BOOTSTRAP event in the genieacs-cwmp-access.log file.
I tested changing the Device.ManagementServer.PeriodicInformInterval parameter, and it successfully updates when the BOOTSTRAP event occurs. I also tried modifying other parameters, and they were updated correctly as well during the BOOTSTRAP event.

However, the parameter Device.ManagementServer.UpgradesManaged does not seem to reflect any change when set during the BOOTSTRAP event. I’ve double-checked the parameter name and spelling, and even tested with both the Device. and InternetGatewayDevice. prefixes, but the result is the same.

Not sure if this specific parameter is restricted or only accepts updates under certain conditions. If you have any insights or suggestions on this behavior, that would be helpful.

The only other thing I can think of is get rid of the refresh command in your boostrap and clear the cache in it’s place. That is how mine is.
const now = Date.now();

// Clear cached data model to force a refresh
clear(“Device”, now);
clear(“InternetGatewayDevice”, now);
declare(“InternetGatewayDevice.ManagementServer.PeriodicInformInterval”, {value: now}, {value: 90});

Thank for your suggestion.
This is the script I used to change the parameter values:
const now = Date.now();
log(“=== BOOTSTRAP provision script started ===”);
declare(“tags.FRS”, { value: now });
declare(“Device.ManagementServer.PeriodicInformInterval”, { value: now }, { value: 90 });
With this script, I was able to change the Device.ManagementServer.PeriodicInformInterval parameter during the BOOTSTRAP event. Later, I added the following line to update the upgrade management flag:
declare(“Device.ManagementServer.UpgradesManaged”, { value: now }, { value: 0 });
I can confirm that this parameter also updates correctly during the BOOTSTRAP event. I also tested the script by including clear() calls (to clear the cached data model), and it still worked as expected in both cases — with and without clear().

Does this approach look good to you, or would you recommend any improvements to handle the BOOTSTRAP event reliably?