diff --git a/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js b/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js
index c3d8c920eeae0f1fc9c1089633fa9b076a011264..0ae20dad6e06f3bda90fdbff5e7b83a63e5ca241 100644
--- a/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js
+++ b/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js
@@ -1,3 +1,4 @@
+import("AttributeRegistry_basic");
 import("system.neon");
 import("system.result");
 import("system.vars");
@@ -11,7 +12,7 @@ else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
 {
     var contactId = vars.getString("$field.CONTACT_ID");
     if (contactId)
-    {                                         // Lieferkondition
-        result.string(AttributeRelationUtils.getAttribute("3a6e11fc-b00a-4cf3-975a-a5e8b60fc5cb", contactId));
+    { 
+        result.string(AttributeRelationUtils.getAttribute($AttributeRegistry.deliveryTerm(), contactId));
     }
 }
\ No newline at end of file
diff --git a/entity/Offer_entity/entityfields/paymentterms/valueProcess.js b/entity/Offer_entity/entityfields/paymentterms/valueProcess.js
index 35d02f62cada7767c96df6d5b45bbce9658d3b0c..e75c10c9751ea47fa79c80841cfc2831dafb2deb 100644
--- a/entity/Offer_entity/entityfields/paymentterms/valueProcess.js
+++ b/entity/Offer_entity/entityfields/paymentterms/valueProcess.js
@@ -1,3 +1,4 @@
+import("AttributeRegistry_basic");
 import("system.neon");
 import("system.result");
 import("system.vars");
@@ -11,7 +12,7 @@ else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
 {
     var contactId = vars.getString("$field.CONTACT_ID");
     if (contactId)
-    {                                         // Zahlungskondition
-        result.string(AttributeRelationUtils.getAttribute("292fae38-6557-466d-8843-3b1b4a1f6599", contactId));
+    {
+        result.string(AttributeRelationUtils.getAttribute($AttributeRegistry.paymentTerm(), contactId));
     }
 }
\ No newline at end of file
diff --git a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js
index fc9994c4e51ec83d9ffe238797b472270ea51ca1..85a18b53383611f0bc12ede10ebecb332041aa6e 100644
--- a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js
+++ b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js
@@ -1,3 +1,4 @@
+import("AttributeRegistry_basic");
 import("system.vars");
 import("system.neon");
 import("Product_lib");
@@ -10,7 +11,7 @@ if(pid != "")
 {
     var currency = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : "";
     var contactid = vars.exists("$param.ContactId_param") ? vars.get("$param.ContactId_param") : "";
-    var pricelist = AttributeRelationUtils.getAttribute("97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec", contactid) || "";
+    var pricelist = AttributeRelationUtils.getAttribute($AttributeRegistry.pricelist(), contactid) || "";
     
     var PriceListFilter = { currency: currency, quantity: vars.get("$field.QUANTITY"), relationId: contactid, priceList: pricelist };
     
diff --git a/entity/Offeritem_entity/entityfields/quantity/onValueChange.js b/entity/Offeritem_entity/entityfields/quantity/onValueChange.js
index 5076a258429919fff7eefdabaacaeb6536416898..d2920a905317babb7361c90c0a30f67077543563 100644
--- a/entity/Offeritem_entity/entityfields/quantity/onValueChange.js
+++ b/entity/Offeritem_entity/entityfields/quantity/onValueChange.js
@@ -1,3 +1,4 @@
+import("AttributeRegistry_basic");
 import("system.vars");
 import("system.neon");
 import("Product_lib");
@@ -11,7 +12,7 @@ if(pid != "" && newQuantity != "")
 {
     var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : "";
     var contactid = vars.exists("$param.ContactId_param") ? vars.get("$param.ContactId_param") : "";
-    var pricelist = AttributeRelationUtils.getAttribute("97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec", contactid) || "";
+    var pricelist = AttributeRelationUtils.getAttribute($AttributeRegistry.pricelist(), contactid) || "";
     
     var PriceListFilter = { currency: curr, quantity: newQuantity, relationId: contactid, priceList: pricelist };
     
diff --git a/process/AttributeRegistry_basic/AttributeRegistry_basic.aod b/process/AttributeRegistry_basic/AttributeRegistry_basic.aod
new file mode 100644
index 0000000000000000000000000000000000000000..d4917ea14ea0bb20d46d5ca2680e75daa034ce5c
--- /dev/null
+++ b/process/AttributeRegistry_basic/AttributeRegistry_basic.aod
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1">
+  <name>AttributeRegistry_basic</name>
+  <majorModelMode>DISTRIBUTED</majorModelMode>
+  <process>%aditoprj%/process/AttributeRegistry_basic/process.js</process>
+  <variants>
+    <element>LIBRARY</element>
+  </variants>
+</process>
diff --git a/process/AttributeRegistry_basic/process.js b/process/AttributeRegistry_basic/process.js
new file mode 100644
index 0000000000000000000000000000000000000000..a132602bb79bc6490fc19480b8680a7036bc4dff
--- /dev/null
+++ b/process/AttributeRegistry_basic/process.js
@@ -0,0 +1,15 @@
+/**
+ * provides static functionality for a registry of attribute ids
+ * The reason for this is a convenient usage within jdito-code (autocomplete)
+ * and better readability
+ * 
+ * @class
+ * 
+ * @example
+ * $AttributeRegistry.pricelist()
+ */
+function $AttributeRegistry(){}
+
+$AttributeRegistry.pricelist = function(){return "97b449a5-d9b4-42ff-b9b0-4f8b27b8a9ec";};
+$AttributeRegistry.paymentTerm = function(){return "292fae38-6557-466d-8843-3b1b4a1f6599";};
+$AttributeRegistry.deliveryTerm = function(){return "3a6e11fc-b00a-4cf3-975a-a5e8b60fc5cb";};
\ No newline at end of file