diff --git a/dmtree/tr181/device.c b/dmtree/tr181/device.c
index e356e584be5f45e552924c004f8f9433171ffd96..9b7518ab61b52b153c6130de20763f480d356dc2 100644
--- a/dmtree/tr181/device.c
+++ b/dmtree/tr181/device.c
@@ -100,7 +100,7 @@ DMOBJ tRoot_181_Obj[] = {
 {"DSL",&DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tDSLObj, tDSLParams, NULL, BBFDM_BOTH},
 {"ATM",&DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tATMObj, NULL, NULL, BBFDM_BOTH},
 {"PTM", &DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tPTMObj, NULL, NULL, BBFDM_BOTH},
-{"DHCPv4", &DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tDhcpv4Obj, tDHCPv4Params, NULL, BBFDM_BOTH},
+{"DHCPv4", &DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tDHCPv4Obj, tDHCPv4Params, NULL, BBFDM_BOTH},
 {"DHCPv6", &DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tDHCPv6Obj, tDHCPv6Params, NULL, BBFDM_BOTH},
 {"Hosts", &DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tHostsObj, tHostsParams, NULL, BBFDM_BOTH},
 {"NAT", &DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tNATObj, tNATParams, NULL, BBFDM_BOTH},
diff --git a/dmtree/tr181/dhcpv4.c b/dmtree/tr181/dhcpv4.c
index eadd9f4d1cb0104f33e0a289e8c8a4dcfb233bd3..e977074ecd76181775a6af5bf539831bab22b4b5 100644
--- a/dmtree/tr181/dhcpv4.c
+++ b/dmtree/tr181/dhcpv4.c
@@ -24,10 +24,10 @@
 #define DELIMITOR ","
 
 /*** DHCPv4. ***/
-DMOBJ tDhcpv4Obj[] = {
+DMOBJ tDHCPv4Obj[] = {
 /* OBJ, permission, addobj, delobj, checkobj, browseinstobj, forced_inform, notification, nextjsonobj, nextobj, leaf, linker, bbfdm_type*/
 {"Client", &DMWRITE, addObjDHCPv4Client, delObjDHCPv4Client, NULL, browseDHCPv4ClientInst, NULL, NULL, NULL, tDHCPv4ClientObj, tDHCPv4ClientParams, NULL, BBFDM_BOTH},
-{"Server", &DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tDhcpv4ServerObj, tDHCPv4ServerParams, NULL, BBFDM_BOTH},
+{"Server", &DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tDHCPv4ServerObj, tDHCPv4ServerParams, NULL, BBFDM_BOTH},
 {"Relay", &DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tDHCPv4RelayObj, tDHCPv4RelayParams, NULL, BBFDM_BOTH},
 {0}
 };
@@ -96,30 +96,30 @@ DMLEAF tDHCPv4ServerParams[] = {
 };
 
 /*** DHCPv4.Server. ***/
-DMOBJ tDhcpv4ServerObj[] = {
+DMOBJ tDHCPv4ServerObj[] = {
 /* OBJ, permission, addobj, delobj, checkobj, browseinstobj, forced_inform, notification, nextjsonobj, nextobj, leaf, linker, bbfdm_type*/
-{"Pool", &DMWRITE, add_dhcp_server, delete_dhcp_server, NULL, browseDhcpInst, NULL, NULL, NULL, tDhcpServerPoolObj, tDhcpServerPoolParams, NULL, BBFDM_BOTH},
+{"Pool", &DMWRITE, add_dhcp_server, delete_dhcp_server, NULL, browseDhcpInst, NULL, NULL, NULL, tDHCPv4ServerPoolObj, tDHCPv4ServerPoolParams, NULL, BBFDM_BOTH},
 {0}
 };
 
 /*** DHCPv4.Server.Pool.{i}. ***/
-DMOBJ tDhcpServerPoolObj[] = {
+DMOBJ tDHCPv4ServerPoolObj[] = {
 /* OBJ, permission, addobj, delobj, checkobj, browseinstobj, forced_inform, notification, nextjsonobj, nextobj, leaf, linker, bbfdm_type*/
-{"StaticAddress", &DMWRITE, add_dhcp_staticaddress, delete_dhcp_staticaddress, NULL, browseDhcpStaticInst, NULL, NULL, NULL, NULL, tDhcpServerPoolAddressParams, NULL, BBFDM_BOTH},
+{"StaticAddress", &DMWRITE, add_dhcp_staticaddress, delete_dhcp_staticaddress, NULL, browseDhcpStaticInst, NULL, NULL, NULL, NULL, tDHCPv4ServerPoolAddressParams, NULL, BBFDM_BOTH},
 {"Option", &DMWRITE, addObjDHCPv4ServerPoolOption, delObjDHCPv4ServerPoolOption, NULL, browseDHCPv4ServerPoolOptionInst, NULL, NULL, NULL, NULL, tDHCPv4ServerPoolOptionParams, NULL, BBFDM_BOTH},
-{"Client", &DMREAD, NULL, NULL, NULL, browseDhcpClientInst, NULL, NULL, NULL, tDhcpServerPoolClientObj, tDhcpServerPoolClientParams, get_dhcp_client_linker},
+{"Client", &DMREAD, NULL, NULL, NULL, browseDhcpClientInst, NULL, NULL, NULL, tDHCPv4ServerPoolClientObj, tDHCPv4ServerPoolClientParams, get_dhcp_client_linker},
 {0}
 };
 
 /*** DHCPv4.Server.Pool.{i}.Client.{i}. ***/
-DMOBJ tDhcpServerPoolClientObj[] = {
+DMOBJ tDHCPv4ServerPoolClientObj[] = {
 /* OBJ, permission, addobj, delobj, checkobj, browseinstobj, forced_inform, notification, nextjsonobj, nextobj, leaf, linker, bbfdm_type*/
-{"IPv4Address", &DMREAD, NULL, NULL, NULL, browseDhcpClientIPv4Inst, NULL, NULL, NULL, NULL, tDhcpServerPoolClientIPv4AddressParams, NULL, BBFDM_BOTH},
+{"IPv4Address", &DMREAD, NULL, NULL, NULL, browseDhcpClientIPv4Inst, NULL, NULL, NULL, NULL, tDHCPv4ServerPoolClientIPv4AddressParams, NULL, BBFDM_BOTH},
 {"Option", &DMREAD, NULL, NULL, NULL, browseDHCPv4ServerPoolClientOptionInst, NULL, NULL, NULL, NULL, tDHCPv4ServerPoolClientOptionParams, NULL, BBFDM_BOTH},
 {0}
 };
 
-DMLEAF tDhcpServerPoolParams[] = {
+DMLEAF tDHCPv4ServerPoolParams[] = {
 /* PARAM, permission, type, getvalue, setvalue, forced_inform, notification, bbfdm_type*/
 {"Alias", &DMWRITE, DMT_STRING,  get_server_pool_alias, set_server_pool_alias, NULL, NULL, BBFDM_BOTH},
 {"DNSServers", &DMWRITE, DMT_STRING,  get_dns_server, set_dns_server, NULL, NULL, BBFDM_BOTH},
@@ -142,7 +142,7 @@ DMLEAF tDhcpServerPoolParams[] = {
 };
 
 /*** DHCPv4.Server.Pool.{i}.StaticAddress.{i}. ***/
-DMLEAF tDhcpServerPoolAddressParams[] = {
+DMLEAF tDHCPv4ServerPoolAddressParams[] = {
 /* PARAM, permission, type, getvalue, setvalue, forced_inform, notification, bbfdm_type*/
 {"Alias", &DMWRITE, DMT_STRING, get_dhcp_static_alias, set_dhcp_static_alias, NULL, NULL, BBFDM_BOTH},
 {"Chaddr", &DMWRITE, DMT_STRING,  get_dhcp_staticaddress_chaddr, set_dhcp_staticaddress_chaddr, NULL, NULL, BBFDM_BOTH},
@@ -151,7 +151,7 @@ DMLEAF tDhcpServerPoolAddressParams[] = {
 };
 
 /*** DHCPv4.Server.Pool.{i}.Client.{i}. ***/
-DMLEAF tDhcpServerPoolClientParams[] = {
+DMLEAF tDHCPv4ServerPoolClientParams[] = {
 /* PARAM, permission, type, getvalue, setvalue, forced_inform, notification, bbfdm_type*/
 {"Chaddr", &DMREAD, DMT_STRING,  get_dhcp_client_chaddr, NULL, NULL, NULL, BBFDM_BOTH},
 {"Active", &DMREAD, DMT_STRING,  get_dhcp_client_active, NULL, NULL, NULL, BBFDM_BOTH},
@@ -159,7 +159,7 @@ DMLEAF tDhcpServerPoolClientParams[] = {
 };
 
 /*** DHCPv4.Server.Pool.{i}.Client.{i}.IPv4Address.{i}. ***/
-DMLEAF tDhcpServerPoolClientIPv4AddressParams[] = {
+DMLEAF tDHCPv4ServerPoolClientIPv4AddressParams[] = {
 /* PARAM, permission, type, getvalue, setvalue, forced_inform, notification, bbfdm_type*/
 {"LeaseTimeRemaining", &DMREAD, DMT_TIME,  get_dhcp_client_ipv4address_leasetime, NULL, NULL, NULL, BBFDM_BOTH},
 {"IPAddress", &DMREAD, DMT_TIME,  get_dhcp_client_ipv4address_ip_address, NULL, NULL, NULL, BBFDM_BOTH},
diff --git a/dmtree/tr181/dhcpv4.h b/dmtree/tr181/dhcpv4.h
index 1c1699cce027a44ed9933a6815b2b0a14796d0b2..38c3c80ae39ba337781442c4c44e50a84152b925 100644
--- a/dmtree/tr181/dhcpv4.h
+++ b/dmtree/tr181/dhcpv4.h
@@ -54,14 +54,14 @@ struct dhcp_client_option_args {
 	char *value;
 };
 
-extern DMOBJ tDhcpv4Obj[];
-extern DMOBJ tDhcpv4ServerObj[];
-extern DMOBJ tDhcpServerPoolObj[];
-extern DMOBJ tDhcpServerPoolClientObj[];
-extern DMLEAF tDhcpServerPoolParams[];
-extern DMLEAF tDhcpServerPoolAddressParams[];
-extern DMLEAF tDhcpServerPoolClientParams[];
-extern DMLEAF tDhcpServerPoolClientIPv4AddressParams[];
+extern DMOBJ tDHCPv4Obj[];
+extern DMOBJ tDHCPv4ServerObj[];
+extern DMOBJ tDHCPv4ServerPoolObj[];
+extern DMOBJ tDHCPv4ServerPoolClientObj[];
+extern DMLEAF tDHCPv4ServerPoolParams[];
+extern DMLEAF tDHCPv4ServerPoolAddressParams[];
+extern DMLEAF tDHCPv4ServerPoolClientParams[];
+extern DMLEAF tDHCPv4ServerPoolClientIPv4AddressParams[];
 
 extern DMLEAF tDHCPv4Params[];
 extern DMOBJ tDHCPv4ClientObj[];
diff --git a/dmtree/tr181/firewall.c b/dmtree/tr181/firewall.c
index 6fb933cabf2212f5b0dac5384e303db366f0aa0f..efd521725d09cffda2efa7aeee86aecd034b324f 100644
--- a/dmtree/tr181/firewall.c
+++ b/dmtree/tr181/firewall.c
@@ -76,9 +76,9 @@ DMLEAF tFirewallChainRuleParams[] = {
 {"SourceInterface", &DMWRITE, DMT_STRING, get_rule_source_interface, set_rule_source_interface, NULL, NULL, BBFDM_BOTH},
 {"DestInterface", &DMWRITE, DMT_STRING, get_rule_dest_interface, set_rule_dest_interface, NULL, NULL, BBFDM_BOTH},
 {"IPVersion", &DMWRITE, DMT_INT, get_rule_i_p_version, set_rule_i_p_version, NULL, NULL, BBFDM_BOTH},
-{"DestIp", &DMWRITE, DMT_STRING, get_rule_dest_ip, set_rule_dest_ip, NULL, NULL, BBFDM_BOTH},
+{"DestIP", &DMWRITE, DMT_STRING, get_rule_dest_ip, set_rule_dest_ip, NULL, NULL, BBFDM_BOTH},
 {"DestMask", &DMWRITE, DMT_STRING, get_rule_dest_mask, set_rule_dest_mask, NULL, NULL, BBFDM_BOTH},
-{"SourceIp", &DMWRITE, DMT_STRING, get_rule_source_ip, set_rule_source_ip, NULL, NULL, BBFDM_BOTH},
+{"SourceIP", &DMWRITE, DMT_STRING, get_rule_source_ip, set_rule_source_ip, NULL, NULL, BBFDM_BOTH},
 {"SourceMask", &DMWRITE, DMT_STRING, get_rule_source_mask, set_rule_source_mask, NULL, NULL, BBFDM_BOTH},
 {"Protocol", &DMWRITE, DMT_INT, get_rule_protocol, set_rule_protocol, NULL, NULL, BBFDM_BOTH},
 {"DestPort", &DMWRITE, DMT_INT, get_rule_dest_port, set_rule_dest_port, NULL, NULL, BBFDM_BOTH},
diff --git a/dmtree/tr181/ip.c b/dmtree/tr181/ip.c
index 0dd63387a80c172088c086aeb09ea1a6dcf1873e..5ba70fde3e06589bfeb3ed68f768986f04beee5b 100644
--- a/dmtree/tr181/ip.c
+++ b/dmtree/tr181/ip.c
@@ -30,7 +30,7 @@ struct dm_forced_inform_s IPv6INFRM = {0, get_ipv6_finform};
 /* *** Device.IP. *** */
 DMOBJ tIPObj[] = {
 /* OBJ, permission, addobj, delobj, checkobj, browseinstobj, forced_inform, notification, nextjsonobj, nextobj, leaf, linker, bbfdm_type*/
-{"Interface", &DMWRITE, add_ip_interface, delete_ip_interface, NULL, browseIPIfaceInst, NULL, NULL, NULL, tInterfaceObj, tIPintParams, get_linker_ip_interface, BBFDM_BOTH},
+{"Interface", &DMWRITE, add_ip_interface, delete_ip_interface, NULL, browseIPIfaceInst, NULL, NULL, NULL, tIPInterfaceObj, tIPInterfaceParams, get_linker_ip_interface, BBFDM_BOTH},
 #ifdef BBF_TR143
 {"Diagnostics", &DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tIPDiagnosticsObj, tIPDiagnosticsParams, NULL, BBFDM_BOTH},
 #endif
@@ -51,17 +51,17 @@ DMLEAF tIPParams[] = {
 };
 
 /* *** Device.IP.Interface. *** */
-DMOBJ tInterfaceObj[] = {
+DMOBJ tIPInterfaceObj[] = {
 /* OBJ, permission, addobj, delobj, checkobj, browseinstobj, forced_inform, notification, nextjsonobj, nextobj, leaf, linker, bbfdm_type*/
-{"IPv4Address", &DMWRITE, add_ipv4, delete_ipv4, NULL, browseIfaceIPv4Inst, NULL, NULL, NULL, NULL, tIPv4Params, NULL, BBFDM_BOTH},
-{"IPv6Address", &DMWRITE, add_ipv6, delete_ipv6, NULL, browseIfaceIPv6Inst, NULL, NULL, NULL, NULL, tIPv6Params, NULL, BBFDM_BOTH},
-{"IPv6Prefix", &DMWRITE, add_ipv6_prefix, delete_ipv6_prefix, NULL, browseIfaceIPv6PrefixInst, NULL, NULL, NULL, NULL, tIPv6PrefixParams, get_linker_ipv6_prefix, BBFDM_BOTH},
+{"IPv4Address", &DMWRITE, add_ipv4, delete_ipv4, NULL, browseIfaceIPv4Inst, NULL, NULL, NULL, NULL, tIPInterfaceIPv4AddressParams, NULL, BBFDM_BOTH},
+{"IPv6Address", &DMWRITE, add_ipv6, delete_ipv6, NULL, browseIfaceIPv6Inst, NULL, NULL, NULL, NULL, tIPInterfaceIPv6AddressParams, NULL, BBFDM_BOTH},
+{"IPv6Prefix", &DMWRITE, add_ipv6_prefix, delete_ipv6_prefix, NULL, browseIfaceIPv6PrefixInst, NULL, NULL, NULL, NULL, tIPInterfaceIPv6PrefixParams, get_linker_ipv6_prefix, BBFDM_BOTH},
 {"Stats", &DMREAD, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, tIPInterfaceStatsParams, NULL, BBFDM_BOTH},
 {"TWAMPReflector", &DMWRITE, addObjIPInterfaceTWAMPReflector, delObjIPInterfaceTWAMPReflector, NULL, browseIPInterfaceTWAMPReflectorInst, NULL, NULL, NULL, NULL, tIPInterfaceTWAMPReflectorParams, NULL, BBFDM_BOTH},
 {0}
 };
 
-DMLEAF tIPintParams[] = {
+DMLEAF tIPInterfaceParams[] = {
 /* PARAM, permission, type, getvalue, setvalue, forced_inform, notification, bbfdm_type*/
 {"Enable", &DMWRITE, DMT_BOOL, get_IPInterface_Enable, set_IPInterface_Enable, NULL, NULL, BBFDM_BOTH},
 {"IPv4Enable", &DMWRITE, DMT_BOOL, get_IPInterface_IPv4Enable, set_IPInterface_IPv4Enable, NULL, NULL, BBFDM_BOTH},
@@ -84,7 +84,7 @@ DMLEAF tIPintParams[] = {
 };
 
 /* *** Device.IP.Interface.{i}.IPv4Address.{i}. *** */
-DMLEAF tIPv4Params[] = {
+DMLEAF tIPInterfaceIPv4AddressParams[] = {
 /* PARAM, permission, type, getvalue, setvalue, forced_inform, notification, bbfdm_type*/
 {"Enable", &DMWRITE, DMT_BOOL, get_IPInterface_Enable, set_IPInterface_Enable, &IPv4INFRM, NULL, BBFDM_BOTH},
 {"Status", &DMREAD, DMT_STRING, get_IPInterface_Status, NULL, &IPv4INFRM, NULL, BBFDM_BOTH},
@@ -97,7 +97,7 @@ DMLEAF tIPv4Params[] = {
 };
 
 /* *** Device.IP.Interface.{i}.IPv6Address.{i}. *** */
-DMLEAF tIPv6Params[] = {
+DMLEAF tIPInterfaceIPv6AddressParams[] = {
 /* PARAM, permission, type, getvalue, setvalue, forced_inform, notification, bbfdm_type*/
 {"Enable", &DMWRITE, DMT_BOOL, get_IPInterfaceIPv6Address_Enable, set_IPInterfaceIPv6Address_Enable, &IPv6INFRM, NULL, BBFDM_BOTH},
 {"Status", &DMREAD, DMT_STRING, get_IPInterfaceIPv6Address_Status, NULL, &IPv6INFRM, NULL, BBFDM_BOTH},
@@ -112,7 +112,7 @@ DMLEAF tIPv6Params[] = {
 };
 
 /* *** Device.IP.Interface.{i}.IPv6Prefix.{i}. *** */
-DMLEAF tIPv6PrefixParams[] = {
+DMLEAF tIPInterfaceIPv6PrefixParams[] = {
 /* PARAM, permission, type, getvalue, setvalue, forced_inform, notification, bbfdm_type*/
 {"Enable", &DMWRITE, DMT_BOOL, get_IPInterfaceIPv6Prefix_Enable, set_IPInterfaceIPv6Prefix_Enable, NULL, NULL, BBFDM_BOTH},
 {"Status", &DMREAD, DMT_STRING, get_IPInterfaceIPv6Prefix_Status, NULL, NULL, NULL, BBFDM_BOTH},
diff --git a/dmtree/tr181/ip.h b/dmtree/tr181/ip.h
index 868b1bd5e0a4c45f4b6dd7d2e0c83ae803c4e146..6c8dd2766860e3a543bfe5ec9c785a493ac1faaf 100644
--- a/dmtree/tr181/ip.h
+++ b/dmtree/tr181/ip.h
@@ -39,11 +39,11 @@ struct ipv6prefix_args
 
 extern DMOBJ tIPObj[];
 extern DMLEAF tIPParams[];
-extern DMOBJ tInterfaceObj[];
-extern DMLEAF tIPintParams[];
-extern DMLEAF tIPv4Params[];
-extern DMLEAF tIPv6Params[];
-extern DMLEAF tIPv6PrefixParams[];
+extern DMOBJ tIPInterfaceObj[];
+extern DMLEAF tIPInterfaceParams[];
+extern DMLEAF tIPInterfaceIPv4AddressParams[];
+extern DMLEAF tIPInterfaceIPv6AddressParams[];
+extern DMLEAF tIPInterfaceIPv6PrefixParams[];
 extern DMLEAF tIPInterfaceStatsParams[];
 extern DMLEAF tIPInterfaceTWAMPReflectorParams[];
 
diff --git a/json/generate_excel.py b/json/generate_excel.py
index eac33951ed9a6e73d5b9b2e18a28ea5ce869ee8e..884c7a9fe7ff248ecf4488852805403413e9c09d 100755
--- a/json/generate_excel.py
+++ b/json/generate_excel.py
@@ -32,6 +32,7 @@ def objhasparam( value ):
 	return 0
 
 def check_obj(dmobject):
+	dmobject = dmobject.replace(".{i}.", ".")
 	obj = dmobject.split(".")
 	if dmobject.count('.') == 2:
 		cmd = 'awk \'/DMOBJ tRoot_181_Obj/,/^{0}$/\' ../dmtree/tr181/device.c'
@@ -45,10 +46,13 @@ def check_obj(dmobject):
 			file = "../dmtree/tr143/diagnostics.c"
 		elif "Device.Services." in dmobject:
 			file = "../dmtree/tr104/voice_services.c"
+		elif "Device.SoftwareModules." in dmobject:
+			file = "../dmtree/tr157/softwaremodules.c"
+		elif "Device.BulkData." in dmobject:
+			file = "../dmtree/tr157/bulkdata.c"
 		else:
 			file = "../dmtree/tr181/%s.c" % obj[1].lower()
 		if(os.path.isfile(file)):
-			dmobject = dmobject.replace(".{i}.", ".")
 			count = dmobject.count('.')
 			obj1 = dmobject.split(".")
 			for i in range(count-2):
@@ -84,6 +88,10 @@ def load_param(dmobject):
 			file = "../dmtree/tr181/times.c"
 		elif "Device.Services." in dmobject:
 			file = "../dmtree/tr104/voice_services.c"
+		elif "Device.SoftwareModules." in dmobject:
+			file = "../dmtree/tr157/softwaremodules.c"
+		elif "Device.BulkData." in dmobject:
+			file = "../dmtree/tr157/bulkdata.c"
 		else:
 			file = "../dmtree/tr181/%s.c" % obj[1].lower()
 		if(os.path.isfile(file)):
@@ -96,7 +104,6 @@ def load_param(dmobject):
 			res = os.popen(cmd).read()
 		else:
 			res = ""
-
 	if res == "":
 		return "", 0
 	else:
@@ -104,7 +111,7 @@ def load_param(dmobject):
 
 def printOBJPARAM(obj, supported):
 	fp = open('./.tmp', 'a')
-	print >> fp,  "%s::%s" % (obj, supported)
+	print >> fp,  "%s::%s::" % (obj, supported)
 	fp.close()
 
 def printusage():
@@ -167,7 +174,7 @@ def generatecfromobj(excel_file, pobj, pvalue):
 		param = line.split("::")
 		i += 1
 		sheet.write(i, 0, param[0])
-		if param[1] == "false\n":
+		if param[1] == "false":
 			sheet.write(i, 1, "Not Supported", style1)
 		else:
 			sheet.write(i, 1, "Supported", style2)