diff --git a/docs/guide/copy_config.md b/docs/guide/copy_config.md
new file mode 100644
index 0000000000000000000000000000000000000000..6deba430b844cf27ec14865eb5f62cf15eaa23c2
--- /dev/null
+++ b/docs/guide/copy_config.md
@@ -0,0 +1,76 @@
+# Proposal for copy config on firmware change
+
+Currently we have different behaviour of config management based on following scenarios, which could be bit confusing for operators and end-users.
+
+## Scenario 1: Upgrade using ACS using '1 Firmware Image' and '6 Stored image'
+
+In this scenario, we provide a firmware default uci option to configure the config management
+
+```
+cwmp.cpe.fw_upgrade_keep_settings
+```
+
+If this option is enabled, then config is copied over to the next firmware.
+
+> Note: there is no way to change this behaviour from ACS, we only provide uci option, but no datamodel vendor extension
+
+## Scenario 2: Upgrade using USP Controller
+
+With USP it has many possibilities, user can
+
+1. Download and activate at the same time
+2. Download without Activate
+3. Activate the downloaded image immediately 
+4. Activate the downloaded image with a time-window
+
+Currently we do provide a vendor extended option in `Download()` command to manage the config
+```
+Device.DeviceInfo.FirmwareImage.{i}.Download() input:AutoActivate
+Device.DeviceInfo.FirmwareImage.{i}.Download() input:X_IOWRT_EU_KeepConfig
+```
+
+But, same is lacking in Activate() operate command
+```
+Device.DeviceInfo.FirmwareImage.{i}.Activate()
+Device.DeviceInfo.FirmwareImage.{i}.Activate() input:TimeWindow.{i}.End
+Device.DeviceInfo.FirmwareImage.{i}.Activate() input:TimeWindow.{i}.Mode
+Device.DeviceInfo.FirmwareImage.{i}.Activate() input:TimeWindow.{i}.Start
+```
+
+## Scenario 3: Switch the firmware with DM without upgrade
+
+Currently there is no way to manage the config, when user switches the bank using `Set` operation on `BootFirmwareImage`
+
+```
+Device.DeviceInfo.ActiveFirmwareImage
+Device.DeviceInfo.BootFirmwareImage
+```
+
+## Proposal: Unified config management
+
+In place of having separate but similar change in cwmp and usp, proposal is to have it in `sysmngr` config, and that will be used by both `ACS` and `USP Controller`.
+
+```bash
+# cat /etc/config/sysmngr
+
+config globals 'globals'
+        option log_level '4'
+	option keep_config 'Full'
+```
+
+keep_config should be an Enum, so that it can be updated later on for future extensions
+
+| Enum value  | Meaning   |
+| ----------  | --------- |
+| Full        | Similar to sysupgrade -b, copies full configuration |
+| None        | Do not copy config to the next firmware |
+
+This table can be further extended in the future with (how they will work is out of scope of this document),
+
+Datamodel => Meaning copy only datamodel config
+
+For datamodel Integration, we can add a 'rw' vendor extension to map with this new uci option
+
+Device.DeviceInfo.X_IOWRT_EU_ConfigBackup => sysmngr.globals.keep_config
+
+With this, operator can manage the Firmware upgrade behaviour from all different scenarios.