diff --git a/applications/product/groovyScripts/product/promo/PromoServices.groovy b/applications/product/groovyScripts/product/promo/PromoServices.groovy
new file mode 100644
index 0000000..e825798
--- /dev/null
+++ b/applications/product/groovyScripts/product/promo/PromoServices.groovy
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+package product.promo
+
+import org.apache.ofbiz.entity.GenericValue
+
+def createProductPromoCond() {
+    if (parameters.carrierShipmentMethod) {
+        parameters.otherValue = parameters.carrierShipmentMethod
+    }
+    GenericValue newEntity = makeValue("ProductPromoCond", parameters)
+    delegator.setNextSubSeqId(newEntity, "productPromoCondSeqId", 2, 1)
+    newEntity.create()
+    return success([productPromoCondSeqId: newEntity.productPromoCondSeqId])
+}
+
+def updateProductPromoCond() {
+    GenericValue lookedUpValue = from("ProductPromoCond").where(parameters).queryOne()
+    if (lookedUpValue) {
+        if (parameters.carrierShipmentMethod) {
+            parameters.otherValue = parameters.carrierShipmentMethod
+        }
+        lookedUpValue.setNonPKFields(parameters)
+        lookedUpValue.store()
+        return success()
+    }
+    return error(label("ServiceErrorUiLabels", "ServiceValueNotFound"))
+}
\ No newline at end of file
diff --git a/applications/product/minilang/product/promo/PromoServices.xml b/applications/product/minilang/product/promo/PromoServices.xml
deleted file mode 100644
index 358c16f..0000000
--- a/applications/product/minilang/product/promo/PromoServices.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you 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.
--->
-
-<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xmlns="http://ofbiz.apache.org/Simple-Method" xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method http://ofbiz.apache.org/dtds/simple-methods.xsd">
-
-    <!-- ProductPromoCond methods -->
-    <simple-method method-name="createProductPromoCond" short-description="Create an ProductPromoCond">
-        <make-value entity-name="ProductPromoCond" value-field="newEntity"/>
-        <set-nonpk-fields map="parameters" value-field="newEntity"/>
-        <if-not-empty field="parameters.carrierShipmentMethod">
-            <set field="newEntity.otherValue" from-field="parameters.carrierShipmentMethod"/>
-        </if-not-empty>
-        <set-pk-fields map="parameters" value-field="newEntity"/>
-        <make-next-seq-id value-field="newEntity" seq-field-name="productPromoCondSeqId" numeric-padding="2"/>
-        <field-to-result field="newEntity.productPromoCondSeqId" result-name="productPromoCondSeqId"/>
-
-        <create-value value-field="newEntity"/>
-    </simple-method>
-    <simple-method method-name="updateProductPromoCond" short-description="Update an ProductPromoCond">
-        <make-value entity-name="ProductPromoCond" value-field="lookupPKMap"/>
-        <set-pk-fields map="parameters" value-field="lookupPKMap"/>
-        <find-by-primary-key entity-name="ProductPromoCond" map="lookupPKMap" value-field="lookedUpValue"/>
-        <set-nonpk-fields map="parameters" value-field="lookedUpValue"/>
-        <if-not-empty field="parameters.carrierShipmentMethod">
-            <set field="lookedUpValue.otherValue" from-field="parameters.carrierShipmentMethod"/>
-        </if-not-empty>
-        <store-value value-field="lookedUpValue"/>
-    </simple-method>
-</simple-methods>
diff --git a/applications/product/servicedef/services_pricepromo.xml b/applications/product/servicedef/services_pricepromo.xml
index 4753bda..5f3f8fc 100644
--- a/applications/product/servicedef/services_pricepromo.xml
+++ b/applications/product/servicedef/services_pricepromo.xml
@@ -256,21 +256,21 @@
         <attribute name="codeLength" type="Integer" mode="IN" optional="true" default-value="8"/>
         <attribute name="promoCodeLayout" type="String" mode="IN" optional="true" default-value="sequence"/>
     </service>
-
-    <service name="createProductPromoCond" default-entity-name="ProductPromoCond" engine="simple"
-                location="component://product/minilang/product/promo/PromoServices.xml" invoke="createProductPromoCond" auth="true">
+    
+    <service name="createProductPromoCond" default-entity-name="ProductPromoCond" engine="groovy" invoke="createProductPromoCond"
+             location="component://product/groovyScripts/product/promo/PromoServices.groovy" auth="true">
         <description>Create a ProductPromo</description>
         <permission-service service-name="productPriceGenericPermission" main-action="CREATE"/>
-        <auto-attributes include="pk" mode="IN" optional="false"/>
+        <auto-attributes include="pk" mode="IN"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
         <attribute name="carrierShipmentMethod" type="String" mode="IN" optional="true"/>
         <override name="productPromoCondSeqId" mode="OUT"/>
     </service>
-    <service name="updateProductPromoCond" default-entity-name="ProductPromoCond" engine="simple"
-                location="component://product/minilang/product/promo/PromoServices.xml" invoke="updateProductPromoCond" auth="true">
+    <service name="updateProductPromoCond" default-entity-name="ProductPromoCond" engine="groovy" invoke="updateProductPromoCond"
+             location="component://product/groovyScripts/product/promo/PromoServices.groovy" auth="true">
         <description>Update a ProductPromo</description>
         <permission-service service-name="productPriceGenericPermission" main-action="UPDATE"/>
-        <auto-attributes include="pk" mode="IN" optional="false"/>
+        <auto-attributes include="pk" mode="IN"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
         <attribute name="carrierShipmentMethod" type="String" mode="IN" optional="true"/>
     </service>
