diff --git a/configs/Barreleye.py b/configs/Barreleye.py
index 2b6a5aa..82bc66e 100644
--- a/configs/Barreleye.py
+++ b/configs/Barreleye.py
@@ -223,6 +223,20 @@
 		'process_name'    : 'phosphor-read-eeprom',
 		'args'            : ['--eeprom','/sys/bus/i2c/devices/6-0055/eeprom','--fruid','66'],
 	},
+	'sync_mac' : {
+		'system_state'    : 'BMC_READY',
+		'start_process'   : True,
+		'monitor_process' : False,
+		'process_name'    : 'sync_inventory_items.py',
+		'args'            : ['-t','DAUGHTER_CARD','-n','io_board','-p','"Custom Field 2"','-s','mac'],
+	},
+	'sync_uuid' : {
+		'system_state'    : 'BMC_READY',
+		'start_process'   : True,
+		'monitor_process' : False,
+		'process_name'    : 'sync_inventory_items.py',
+		'args'            : ['-t','MAIN_PLANAR','-n','motherboard','-p','"Custom Field 1"','-s','uuid'],
+	},
 	'restore' : {
 		'system_state'    : 'BMC_READY',
 		'start_process'   : True,
diff --git a/pyinventorymgr/setup.py b/pyinventorymgr/setup.py
index 851d961..07e48b4 100644
--- a/pyinventorymgr/setup.py
+++ b/pyinventorymgr/setup.py
@@ -2,5 +2,5 @@
 
 setup(name='pyinventorymgr',
       version='1.0',
-      scripts=['inventory_items.py'],
+      scripts=['inventory_items.py', 'sync_inventory_items.py'],
       )
diff --git a/pyinventorymgr/sync_inventory_items.py b/pyinventorymgr/sync_inventory_items.py
new file mode 100644
index 0000000..e11c2e6
--- /dev/null
+++ b/pyinventorymgr/sync_inventory_items.py
@@ -0,0 +1,130 @@
+#!/usr/bin/python -u
+#
+# Copyright 2016 IBM Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+import sys
+import dbus
+import argparse
+import subprocess
+import obmc_system_config as System
+
+INV_DBUS_NAME = 'org.openbmc.Inventory'
+INV_INTF_NAME = 'org.openbmc.InventoryItem'
+NET_DBUS_NAME = 'org.openbmc.NetworkManager'
+NET_OBJ_NAME = '/org/openbmc/NetworkManager/Interface'
+CHS_DBUS_NAME = 'org.openbmc.control.Chassis'
+CHS_OBJ_NAME = '/org/openbmc/control/chassis0'
+PROP_INTF_NAME = 'org.freedesktop.DBus.Properties'
+
+FRUS = System.FRU_INSTANCES
+
+# IEEE 802 MAC address mask for locally administered.
+# This means the admin has set the MAC and is no longer
+# the unique number set by the device manufacturer.
+MAC_LOCALLY_ADMIN_MASK = 0x20000000000
+
+
+# Get the inventory dbus path based on the requested fru
+def get_inv_obj_path(fru_type, fru_name):
+    obj_path = ''
+    for f in FRUS.keys():
+        if (FRUS[f]['fru_type'] == fru_type and f.endswith(fru_name)):
+            obj_path = f.replace("<inventory_root>", System.INVENTORY_ROOT)
+    return obj_path
+
+
+# Get the inventory property value
+def get_inv_value(obj, prop_name):
+    value = ''
+    dbus_method = obj.get_dbus_method("Get", PROP_INTF_NAME)
+    value = dbus_method(INV_INTF_NAME, prop_name)
+    return value
+
+
+# Get the value of the mac on the system without ':' separators
+def get_sys_mac(obj):
+    sys_mac = ''
+    dbus_method = obj.get_dbus_method("GetHwAddress", NET_DBUS_NAME)
+    sys_mac = dbus_method("eth0")
+    sys_mac = sys_mac.replace(":", "")
+    return sys_mac
+
+
+# Replace the value of the system mac with the value of the inventory
+# MAC if the system MAC is not locally administered because this means
+# the system admin has purposely set the MAC
+def sync_mac(obj, inv_mac, sys_mac):
+    # Convert sys MAC to int to perform bitwise '&'
+    int_sys_mac = int(sys_mac, 16)
+    if not int_sys_mac & MAC_LOCALLY_ADMIN_MASK:
+        # Sys MAC is not locally administered, go replace it with inv value
+        # Add the ':' separators
+        mac_str = ':'.join([inv_mac[i]+inv_mac[i+1] for i in range(0, 12, 2)])
+        # The Set HW Method already has checking for mac format
+        dbus_method = obj.get_dbus_method("SetHwAddress", NET_DBUS_NAME)
+        dbus_method("eth0", mac_str)
+
+
+# Get sys uuid
+def get_sys_uuid(obj):
+    sys_uuid = ''
+    dbus_method = obj.get_dbus_method("Get", PROP_INTF_NAME)
+    sys_uuid = dbus_method(CHS_DBUS_NAME, "uuid")
+    return sys_uuid
+
+
+# Set sys uuid, this reboots the BMC for the value to take effect
+def set_sys_uuid(uuid):
+    rc = subprocess.call(["fw_setenv", "uuid", uuid])
+    if rc == 0:
+        print "Rebooting BMC to set uuid"
+        # TODO Uncomment once sync from u-boot to /etc/machine-id is in place
+        # Issue openbmc/openbmc#479
+        # rc = subprocess.call(["reboot"])
+    else:
+        print "Error setting uuid"
+
+if __name__ == '__main__':
+    arg = argparse.ArgumentParser()
+    arg.add_argument('-t')
+    arg.add_argument('-n')
+    arg.add_argument('-p')
+    arg.add_argument('-s')
+
+    opt = arg.parse_args()
+    fru_type = opt.t
+    fru_name = opt.n
+    prop_name = opt.p
+    sync_type = opt.s
+
+    bus = dbus.SystemBus()
+    inv_obj_path = get_inv_obj_path(fru_type, fru_name)
+    inv_obj = bus.get_object(INV_DBUS_NAME, inv_obj_path)
+    net_obj = bus.get_object(NET_DBUS_NAME, NET_OBJ_NAME)
+    chs_obj = bus.get_object(CHS_DBUS_NAME, CHS_OBJ_NAME)
+
+    # Get the value of the requested inventory property
+    inv_value = get_inv_value(inv_obj, prop_name)
+
+    if sync_type == "mac":
+        sys_mac = get_sys_mac(net_obj)
+        if inv_value != sys_mac:
+            sync_mac(net_obj, inv_value, sys_mac)
+    elif sync_type == "uuid":
+        sys_uuid = get_sys_uuid(chs_obj)
+        if inv_value != sys_uuid:
+            set_sys_uuid(inv_value)
