diff --git a/mpcdf_common.py b/mpcdf_common.py
index 62b79ed06a115414775be02afc5d586db021f735..60d07b2d2ee32cd1e6984316ce8074ed43c2e459 100644
--- a/mpcdf_common.py
+++ b/mpcdf_common.py
@@ -924,6 +924,10 @@ def sync_projects(api_url, package=None, from_project="software", to_projects=No
         to_projects = [p for p in osc.core.meta_get_project_list(api_url)
                        if p.startswith("software:") and not (p == "software:dist" or p == "software:images")]
 
+    allowed_attribute_values = {}
+    for attribute in package_attributes + config_attributes:
+        allowed_attribute_values[attribute] = set(get_allowed_attribute_values(api_url, attribute))
+
     for to_project in to_projects:
         print("Syncing {0} with {1}".format(to_project, from_project))
 
@@ -955,12 +959,13 @@ def sync_projects(api_url, package=None, from_project="software", to_projects=No
 
             for attribute in package_attributes + config_attributes:
                 try:
-                    attr = get_attribute(api_url, from_project, orig_package, attribute)
+                    values = list(filter(lambda q: q in allowed_attribute_values[attribute],
+                                         get_attribute_values(api_url, from_project, orig_package, attribute)))
                 except UnsetAttributeException:
                     if has_attribute(api_url, to_project, orig_package, attribute):
                         remove_attribute(api_url, to_project, orig_package, attribute)
                     continue
-                set_attribute(api_url, to_project, orig_package, attr)
+                set_attribute_values(api_url, to_project, orig_package, attribute, values)
 
             if add_to_maintainers:
                 from_maintainers = maintainers(api_url, from_project, orig_package)