You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2017/12/31 11:11:47 UTC

svn commit: r1819730 [3/6] - in /ofbiz/ofbiz-framework/trunk/applications: content/src/main/java/org/apache/ofbiz/content/ content/src/main/java/org/apache/ofbiz/content/compdoc/ content/src/main/java/org/apache/ofbiz/content/content/ content/src/main/...

Modified: ofbiz/ofbiz-framework/trunk/applications/manufacturing/src/main/java/org/apache/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/manufacturing/src/main/java/org/apache/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java?rev=1819730&r1=1819729&r2=1819730&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/manufacturing/src/main/java/org/apache/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java (original)
+++ ofbiz/ofbiz-framework/trunk/applications/manufacturing/src/main/java/org/apache/ofbiz/manufacturing/jobshopmgt/ProductionRunServices.java Sun Dec 31 11:11:46 2017
@@ -31,6 +31,7 @@ import java.util.SortedMap;
 import java.util.TreeMap;
 
 import org.apache.ofbiz.base.util.Debug;
+import org.apache.ofbiz.base.util.GeneralException;
 import org.apache.ofbiz.base.util.UtilDateTime;
 import org.apache.ofbiz.base.util.UtilGenerics;
 import org.apache.ofbiz.base.util.UtilMisc;
@@ -57,7 +58,6 @@ import org.apache.ofbiz.service.GenericS
 import org.apache.ofbiz.service.LocalDispatcher;
 import org.apache.ofbiz.service.ModelService;
 import org.apache.ofbiz.service.ServiceUtil;
-
 /**
  * Services for Production Run maintenance
  *
@@ -93,7 +93,7 @@ public class ProductionRunServices {
         LocalDispatcher dispatcher = ctx.getDispatcher();
         Locale locale = (Locale) context.get("locale");
         GenericValue userLogin = (GenericValue) context.get("userLogin");
-
+        Map<String, Object> serviceResult = new HashMap<String, Object>();
         String productionRunId = (String) context.get("productionRunId");
 
         ProductionRun productionRun = new ProductionRun(productionRunId, delegator, dispatcher);
@@ -119,7 +119,10 @@ public class ProductionRunServices {
                 serviceContext.put("workEffortId", productionRunId);
                 serviceContext.put("currentStatusId", "PRUN_CANCELLED");
                 serviceContext.put("userLogin", userLogin);
-                dispatcher.runSync("updateWorkEffort", serviceContext);
+                serviceResult = dispatcher.runSync("updateWorkEffort", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
                 // Cancel the product promised
                 List<GenericValue> products = EntityQuery.use(delegator).from("WorkEffortGoodStandard")
                         .where("workEffortId", productionRunId, 
@@ -142,7 +145,10 @@ public class ProductionRunServices {
                     serviceContext.put("workEffortId", taskId);
                     serviceContext.put("currentStatusId", "PRUN_CANCELLED");
                     serviceContext.put("userLogin", userLogin);
-                    dispatcher.runSync("updateWorkEffort", serviceContext);
+                    serviceResult = dispatcher.runSync("updateWorkEffort", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
                     // cancel all the components
                     List<GenericValue> components = EntityQuery.use(delegator).from("WorkEffortGoodStandard")
                             .where("workEffortId", taskId, 
@@ -230,6 +236,9 @@ public class ProductionRunServices {
                 routingInMap.put("workEffortId", workEffortId);
             }
             Map<String, Object> routingOutMap = dispatcher.runSync("getProductRouting", routingInMap);
+            if (ServiceUtil.isError(routingOutMap)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(routingOutMap));
+            }
             routing = (GenericValue)routingOutMap.get("routing");
             routingTaskAssocs = UtilGenerics.checkList(routingOutMap.get("tasks"));
         } catch (GenericServiceException gse) {
@@ -252,10 +261,13 @@ public class ProductionRunServices {
         serviceContext.put("productId", productId); // the product that we want to manufacture
         serviceContext.put("quantity", pRQuantity); // the quantity that we want to manufacture
         serviceContext.put("userLogin", userLogin);
-        Map<String, Object> resultService = null;
+        Map<String, Object> serviceResult = null;
         try {
-            resultService = dispatcher.runSync("getManufacturingComponents", serviceContext);
-            components = UtilGenerics.checkList(resultService.get("components")); // a list of objects representing the product's components
+            serviceResult = dispatcher.runSync("getManufacturingComponents", serviceContext);
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+            }
+            components = UtilGenerics.checkList(serviceResult.get("components")); // a list of objects representing the product's components
         } catch (GenericServiceException e) {
             Debug.logError(e, "Problem calling the getManufacturingComponents service", module);
             return ServiceUtil.returnError(e.getMessage());
@@ -279,12 +291,15 @@ public class ProductionRunServices {
         serviceContext.put("quantityToProduce", pRQuantity);
         serviceContext.put("userLogin", userLogin);
         try {
-            resultService = dispatcher.runSync("createWorkEffort", serviceContext);
+            serviceResult = dispatcher.runSync("createWorkEffort", serviceContext);
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+            }
         } catch (GenericServiceException e) {
             Debug.logError(e, "Problem calling the createWorkEffort service", module);
             return ServiceUtil.returnError(e.getMessage());
         }
-        String productionRunId = (String) resultService.get("workEffortId");
+        String productionRunId = (String) serviceResult.get("workEffortId");
         if (Debug.infoOn()) {
             Debug.logInfo("ProductionRun created: " + productionRunId, module);
         }
@@ -299,7 +314,10 @@ public class ProductionRunServices {
         serviceContext.put("fromDate", startDate);
         serviceContext.put("userLogin", userLogin);
         try {
-            resultService = dispatcher.runSync("createWorkEffortGoodStandard", serviceContext);
+            serviceResult = dispatcher.runSync("createWorkEffortGoodStandard", serviceContext);
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+            }
         } catch (GenericServiceException e) {
             Debug.logError(e, "Problem calling the createWorkEffortGoodStandard service", module);
             return ServiceUtil.returnError(e.getMessage());
@@ -336,13 +354,16 @@ public class ProductionRunServices {
                 serviceContext.put("estimatedMilliSeconds", routingTask.get("estimatedMilliSeconds"));
                 serviceContext.put("quantityToProduce", pRQuantity);
                 serviceContext.put("userLogin", userLogin);
-                resultService = null;
+                serviceResult = null;
                 try {
-                    resultService = dispatcher.runSync("createWorkEffort", serviceContext);
+                    serviceResult = dispatcher.runSync("createWorkEffort", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
                 } catch (GenericServiceException e) {
                     Debug.logError(e, "Problem calling the createWorkEffort service", module);
                 }
-                String productionRunTaskId = (String) resultService.get("workEffortId");
+                String productionRunTaskId = (String) serviceResult.get("workEffortId");
                 if (Debug.infoOn()) Debug.logInfo("ProductionRunTaskId created: " + productionRunTaskId, module);
 
                 // The newly created production run task is associated to the routing task
@@ -353,16 +374,21 @@ public class ProductionRunServices {
                 serviceContext.put("workEffortIdTo", productionRunTaskId);
                 serviceContext.put("workEffortAssocTypeId", "WORK_EFF_TEMPLATE");
                 try {
-                    resultService = dispatcher.runSync("createWorkEffortAssoc", serviceContext);
+                    serviceResult = dispatcher.runSync("createWorkEffortAssoc", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
                 } catch (GenericServiceException e) {
                     Debug.logError(e, "Problem calling the createWorkEffortAssoc service", module);
                 }
-
                 // clone associated objects from the routing task to the run task
                 String routingTaskId = routingTaskAssoc.getString("workEffortIdTo");
+                try {
                 cloneWorkEffortPartyAssignments(ctx, userLogin, routingTaskId, productionRunTaskId);
                 cloneWorkEffortCostCalcs(ctx, userLogin, routingTaskId, productionRunTaskId);
-
+                } catch (GeneralException e) {
+                    return ServiceUtil.returnError(e.getMessage());
+                }
                 // Now we iterate thru the components returned by the getManufacturingComponents service
                 // TODO: if in the BOM a routingWorkEffortId is specified, but the task is not in the routing
                 //       the component is not added to the production run.
@@ -384,9 +410,12 @@ public class ProductionRunServices {
                         // computed by the getManufacturingComponents service
                         serviceContext.put("estimatedQuantity", node.getQuantity());
                         serviceContext.put("userLogin", userLogin);
-                        resultService = null;
+                        serviceResult = null;
                         try {
-                            resultService = dispatcher.runSync("createWorkEffortGoodStandard", serviceContext);
+                            serviceResult = dispatcher.runSync("createWorkEffortGoodStandard", serviceContext);
+                            if (ServiceUtil.isError(serviceResult)) {
+                                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                            }
                         } catch (GenericServiceException e) {
                             Debug.logError(e, "Problem calling the createWorkEffortGoodStandard service", module);
                         }
@@ -403,9 +432,12 @@ public class ProductionRunServices {
         serviceContext.put("workEffortId",productionRunId);
         serviceContext.put("estimatedCompletionDate",startDate);
         serviceContext.put("userLogin", userLogin);
-        resultService = null;
+        serviceResult = null;
         try {
-            resultService = dispatcher.runSync("updateWorkEffort", serviceContext);
+            serviceResult = dispatcher.runSync("updateWorkEffort", serviceContext);
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+            }
         } catch (GenericServiceException e) {
             Debug.logError(e, "Problem calling the updateWorkEffort service", module);
         }
@@ -419,7 +451,7 @@ public class ProductionRunServices {
      * Make a copy of the party assignments that were defined on the template routing task to the new production run task.
      */
     private static void cloneWorkEffortPartyAssignments(DispatchContext dctx, GenericValue userLogin, 
-            String routingTaskId, String productionRunTaskId) {
+            String routingTaskId, String productionRunTaskId) throws GeneralException {
         List<GenericValue> workEffortPartyAssignments = null;
         try {
             workEffortPartyAssignments = EntityUtil.filterByDate(
@@ -439,7 +471,12 @@ public class ProductionRunServices {
                         "userLogin", userLogin
                );
                 try {
-                    dctx.getDispatcher().runSync("assignPartyToWorkEffort", partyToWorkEffort);
+                    Map<String, Object> result = dctx.getDispatcher().runSync("assignPartyToWorkEffort", partyToWorkEffort);
+                    if (ServiceUtil.isError(result)) {
+                        String errorMessage = ServiceUtil.getErrorMessage(result);
+                        Debug.logError(errorMessage, module);
+                        throw new GeneralException(errorMessage);
+                    }
                 } catch (GenericServiceException e) {
                     Debug.logError(e, "Problem calling the assignPartyToWorkEffort service", module);
                 }
@@ -451,7 +488,7 @@ public class ProductionRunServices {
     /**
      * Make a copy of the cost calc entities that were defined on the template routing task to the new production run task.
      */
-    private static void cloneWorkEffortCostCalcs(DispatchContext dctx, GenericValue userLogin, String routingTaskId, String productionRunTaskId) {
+    private static void cloneWorkEffortCostCalcs(DispatchContext dctx, GenericValue userLogin, String routingTaskId, String productionRunTaskId) throws GeneralException {
         List<GenericValue> workEffortCostCalcs = null;
         try {
             workEffortCostCalcs = EntityUtil.filterByDate(
@@ -472,7 +509,12 @@ public class ProductionRunServices {
                 );
 
                 try {
-                    dctx.getDispatcher().runSync("createWorkEffortCostCalc", createCostCalc);
+                    Map<String, Object> result = dctx.getDispatcher().runSync("createWorkEffortCostCalc", createCostCalc);
+                    if (ServiceUtil.isError(result)) {
+                        String errorMessage = ServiceUtil.getErrorMessage(result);
+                        Debug.logError(errorMessage, module);
+                        throw new GeneralException(errorMessage);
+                    }
                 } catch (GenericServiceException gse) {
                     Debug.logError(gse, "Problem calling the createWorkEffortCostCalc service", module);
                 }
@@ -539,8 +581,11 @@ public class ProductionRunServices {
                 if (productionRun.store()) {
                     if (updateEstimatedOrderDates && "PRUN_SCHEDULED".equals(productionRun.getGenericValue().getString("currentStatusId"))) {
                         try {
-                            dispatcher.runSync("setEstimatedDeliveryDates",
+                            Map<String, Object> result = dispatcher.runSync("setEstimatedDeliveryDates",
                                     UtilMisc.toMap("userLogin", userLogin));
+                            if (ServiceUtil.isError(result)) {
+                                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(result));
+                            }
                         } catch (GenericServiceException e) {
                             Debug.logError(e, "Problem calling the setEstimatedDeliveryDates service", module);
                             return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunNotUpdated", locale));
@@ -565,7 +610,7 @@ public class ProductionRunServices {
         LocalDispatcher dispatcher = ctx.getDispatcher();
         Locale locale = (Locale) context.get("locale");
         GenericValue userLogin = (GenericValue) context.get("userLogin");
-
+        Map<String, Object> serviceResult = new HashMap<String, Object>();
         String productionRunId = (String) context.get("productionRunId");
         String statusId = (String) context.get("statusId");
 
@@ -590,7 +635,10 @@ public class ProductionRunServices {
             serviceContext.put("currentStatusId", statusId);
             serviceContext.put("userLogin", userLogin);
             try {
-                dispatcher.runSync("updateWorkEffort", serviceContext);
+                serviceResult = dispatcher.runSync("updateWorkEffort", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
+                }
             } catch (GenericServiceException e) {
                 Debug.logError(e, "Problem calling the updateWorkEffort service", module);
                 return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -602,7 +650,10 @@ public class ProductionRunServices {
                 serviceContext.put("currentStatusId", statusId);
                 serviceContext.put("userLogin", userLogin);
                 try {
-                    dispatcher.runSync("updateWorkEffort", serviceContext);
+                    serviceResult = dispatcher.runSync("updateWorkEffort", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
+                    }
                 } catch (GenericServiceException e) {
                     Debug.logError(e, "Problem calling the updateWorkEffort service", module);
                     return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -622,7 +673,10 @@ public class ProductionRunServices {
             serviceContext.put("currentStatusId", "PRUN_DOC_PRINTED");
             serviceContext.put("userLogin", userLogin);
             try {
-                dispatcher.runSync("updateWorkEffort", serviceContext);
+                serviceResult = dispatcher.runSync("updateWorkEffort", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
+                }
             } catch (GenericServiceException e) {
                 Debug.logError(e, "Problem calling the updateWorkEffort service", module);
                 return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -634,7 +688,10 @@ public class ProductionRunServices {
                 serviceContext.put("currentStatusId", "PRUN_DOC_PRINTED");
                 serviceContext.put("userLogin", userLogin);
                 try {
-                    dispatcher.runSync("updateWorkEffort", serviceContext);
+                    serviceResult = dispatcher.runSync("updateWorkEffort", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
+                    }
                 } catch (GenericServiceException e) {
                     Debug.logError(e, "Problem calling the updateWorkEffort service", module);
                     return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -675,7 +732,10 @@ public class ProductionRunServices {
             serviceContext.put("actualStartDate", UtilDateTime.nowTimestamp());
             serviceContext.put("userLogin", userLogin);
             try {
-                dispatcher.runSync("updateWorkEffort", serviceContext);
+                serviceResult = dispatcher.runSync("updateWorkEffort", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
+                }
             } catch (GenericServiceException e) {
                 Debug.logError(e, "Problem calling the updateWorkEffort service", module);
                 return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -696,7 +756,10 @@ public class ProductionRunServices {
             serviceContext.put("actualCompletionDate", UtilDateTime.nowTimestamp());
             serviceContext.put("userLogin", userLogin);
             try {
-                dispatcher.runSync("updateWorkEffort", serviceContext);
+                serviceResult = dispatcher.runSync("updateWorkEffort", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
+                }
             } catch (GenericServiceException e) {
                 Debug.logError(e, "Problem calling the updateWorkEffort service", module);
                 return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -715,7 +778,10 @@ public class ProductionRunServices {
             serviceContext.put("currentStatusId", "PRUN_CLOSED");
             serviceContext.put("userLogin", userLogin);
             try {
-                dispatcher.runSync("updateWorkEffort", serviceContext);
+                serviceResult = dispatcher.runSync("updateWorkEffort", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
+                }
             } catch (GenericServiceException e) {
                 Debug.logError(e, "Problem calling the updateWorkEffort service", module);
                 return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -727,7 +793,10 @@ public class ProductionRunServices {
                 serviceContext.put("currentStatusId", "PRUN_CLOSED");
                 serviceContext.put("userLogin", userLogin);
                 try {
-                    dispatcher.runSync("updateWorkEffort", serviceContext);
+                    serviceResult = dispatcher.runSync("updateWorkEffort", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
+                    }
                 } catch (GenericServiceException e) {
                     Debug.logError(e, "Problem calling the updateWorkEffort service", module);
                     return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -751,6 +820,7 @@ public class ProductionRunServices {
         String productionRunId = (String) context.get("productionRunId");
         String taskId = (String) context.get("workEffortId");
         String statusId = (String) context.get("statusId");
+        Map<String, Object> serviceResult = new HashMap<String, Object>();
         Boolean issueAllComponents = (Boolean) context.get("issueAllComponents");
         if (issueAllComponents == null) {
             issueAllComponents = Boolean.FALSE;
@@ -810,7 +880,10 @@ public class ProductionRunServices {
             serviceContext.put("actualStartDate", UtilDateTime.nowTimestamp());
             serviceContext.put("userLogin", userLogin);
             try {
-                dispatcher.runSync("updateWorkEffort", serviceContext);
+                serviceResult = dispatcher.runSync("updateWorkEffort", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
+                }
             } catch (GenericServiceException e) {
                 Debug.logError(e, "Problem calling the updateWorkEffort service", module);
                 return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -821,7 +894,10 @@ public class ProductionRunServices {
                 serviceContext.put("statusId", "PRUN_RUNNING");
                 serviceContext.put("userLogin", userLogin);
                 try {
-                    dispatcher.runSync("changeProductionRunStatus", serviceContext);
+                    serviceResult = dispatcher.runSync("changeProductionRunStatus", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
+                    }
                 } catch (GenericServiceException e) {
                     Debug.logError(e, "Problem calling the changeProductionRunStatus service", module);
                     return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -847,7 +923,10 @@ public class ProductionRunServices {
                         serviceContext.clear();
                         serviceContext.put("workEffortId", taskId);
                         serviceContext.put("userLogin", userLogin);
-                        dispatcher.runSync("issueProductionRunTask", serviceContext);
+                        serviceResult = dispatcher.runSync("issueProductionRunTask", serviceContext);
+                        if (ServiceUtil.isError(serviceResult)) {
+                            return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
+                        }
                     }
                 } catch (GenericServiceException e) {
                     return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -892,7 +971,10 @@ public class ProductionRunServices {
             }
             serviceContext.put("userLogin", userLogin);
             try {
-                dispatcher.runSync("updateWorkEffort", serviceContext);
+                serviceResult = dispatcher.runSync("updateWorkEffort", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
+                }
             } catch (GenericServiceException e) {
                 Debug.logError(e, "Problem calling the updateWorkEffort service", module);
                 return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -902,7 +984,10 @@ public class ProductionRunServices {
             serviceContext.put("productionRunTaskId", taskId);
             serviceContext.put("userLogin", userLogin);
             try {
-                dispatcher.runSync("createProductionRunTaskCosts", serviceContext);
+                serviceResult = dispatcher.runSync("createProductionRunTaskCosts", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
+                }
             } catch (GenericServiceException e) {
                 Debug.logError(e, "Problem calling the createProductionRunTaskCosts service", module);
                 return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -914,7 +999,10 @@ public class ProductionRunServices {
                 serviceContext.put("statusId", "PRUN_COMPLETED");
                 serviceContext.put("userLogin", userLogin);
                 try {
-                    dispatcher.runSync("changeProductionRunStatus", serviceContext);
+                    serviceResult = dispatcher.runSync("changeProductionRunStatus", serviceContext);
+                    if (ServiceUtil.isError(result)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(result));
+                    }
                 } catch (GenericServiceException e) {
                     Debug.logError(e, "Problem calling the updateWorkEffort service", module);
                     return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -926,12 +1014,17 @@ public class ProductionRunServices {
                     Map<String, Object> outputMap = dispatcher.runSync("getPartyAccountingPreferences", 
                             UtilMisc.<String, Object>toMap("userLogin", userLogin, 
                                     "organizationPartyId", facility.getString("ownerPartyId")));
+                    if (ServiceUtil.isError(outputMap)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(outputMap));
+                    }
                     GenericValue partyAccountingPreference = (GenericValue)outputMap.get("partyAccountingPreference");
                     if (partyAccountingPreference == null) {
                         return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunUnableToFindCosts", locale));
                     }
                     outputMap = dispatcher.runSync("getProductionRunCost", UtilMisc.<String, Object>toMap("userLogin", userLogin, "workEffortId", productionRunId));
-
+                    if (ServiceUtil.isError(outputMap)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(outputMap));
+                    }
                     BigDecimal totalCost = (BigDecimal)outputMap.get("totalCost");
                     if (totalCost == null) {
                         totalCost = ZERO;
@@ -955,6 +1048,9 @@ public class ProductionRunServices {
                                             "baseCost", totalCost,
                                             "currencyUomId", (String)partyAccountingPreference.get("baseCurrencyUomId"),
                                             "userLogin", userLogin));
+                            if (ServiceUtil.isError(costMethodResult)) {
+                                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(costMethodResult));
+                            }
                             BigDecimal productCostAdjustment = (BigDecimal)costMethodResult.get("productCostAdjustment");
                             totalCost = totalCost.add(productCostAdjustment);
                             Map<String, Object> inMap = UtilMisc.<String, Object>toMap("userLogin", userLogin, "workEffortId", productionRunId);
@@ -962,7 +1058,10 @@ public class ProductionRunServices {
                             inMap.put("costComponentTypeId", "ACTUAL_" + productCostComponentCalc.getString("costComponentTypeId"));
                             inMap.put("costUomId", partyAccountingPreference.get("baseCurrencyUomId"));
                             inMap.put("cost", productCostAdjustment);
-                            dispatcher.runSync("createCostComponent", inMap);
+                            serviceResult = dispatcher.runSync("createCostComponent", inMap);
+                            if (ServiceUtil.isError(serviceResult)) {
+                                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                            }
                         }
                     }
                 } catch(GenericServiceException gse) {
@@ -1032,11 +1131,17 @@ public class ProductionRunServices {
             BigDecimal totalCost = ZERO;
             Map<String, Object> outputMap = dispatcher.runSync("getWorkEffortCosts", 
                     UtilMisc.<String, Object>toMap("userLogin", userLogin, "workEffortId", workEffortId));
+            if (ServiceUtil.isError(outputMap)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(outputMap));
+            }
             BigDecimal productionRunHeaderCost = (BigDecimal)outputMap.get("totalCost");
             totalCost = totalCost.add(productionRunHeaderCost);
             for (GenericValue task : tasks) {
                 outputMap = dispatcher.runSync("getWorkEffortCosts", 
                         UtilMisc.<String, Object>toMap("userLogin", userLogin, "workEffortId", task.getString("workEffortId")));
+                if (ServiceUtil.isError(outputMap)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(outputMap));
+                }
                 BigDecimal taskCost = (BigDecimal)outputMap.get("totalCost");
                 totalCost = totalCost.add(taskCost);
             }
@@ -1056,7 +1161,7 @@ public class ProductionRunServices {
         LocalDispatcher dispatcher = ctx.getDispatcher();
         GenericValue userLogin = (GenericValue) context.get("userLogin");
         Locale locale = (Locale) context.get("locale");
-
+        Map<String, Object> serviceResult = new HashMap<String, Object>();
         // this is the id of the actual (real) production run task
         String productionRunTaskId = (String)context.get("productionRunTaskId");
         try {
@@ -1118,13 +1223,19 @@ public class ProductionRunServices {
                     inMap.put("costComponentCalcId", costComponentCalc.getString("costComponentCalcId"));
                     inMap.put("costUomId", costComponentCalc.getString("currencyUomId"));
                     inMap.put("cost", totalCost);
-                    dispatcher.runSync("createCostComponent", inMap);
+                    serviceResult = dispatcher.runSync("createCostComponent", inMap);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
                 } else {
                     // use the custom method (aka formula) to compute the costs
                     Map<String, Object> inMap = UtilMisc.<String, Object>toMap("userLogin", userLogin, "workEffort", workEffort);
                     inMap.put("workEffortCostCalc", workEffortCostCalc);
                     inMap.put("costComponentCalc", costComponentCalc);
-                    dispatcher.runSync(customMethod.getString("customMethodName"), inMap);
+                    serviceResult = dispatcher.runSync(customMethod.getString("customMethodName"), inMap);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
                 }
             }
 
@@ -1158,7 +1269,10 @@ public class ProductionRunServices {
                     inMap.put("costUomId", currencyUomId);
                     inMap.put("cost", fixedAssetCost);
                     inMap.put("fixedAssetId", fixedAsset.get("fixedAssetId"));
-                    dispatcher.runSync("createCostComponent", inMap);
+                    serviceResult = dispatcher.runSync("createCostComponent", inMap);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
                 }
             }
         } catch (GenericEntityException|GenericServiceException ge) {
@@ -1191,7 +1305,10 @@ public class ProductionRunServices {
                 inMap.put("costComponentTypeId", "ACTUAL_MAT_COST");
                 inMap.put("costUomId", currencyUomId);
                 inMap.put("cost", materialsCost);
-                dispatcher.runSync("createCostComponent", inMap);
+                serviceResult = dispatcher.runSync("createCostComponent", inMap);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
             }
         } catch (GenericEntityException|GenericServiceException ge) {
             return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunUnableToCreateMaterialsCosts", UtilMisc.toMap("productionRunTaskId", productionRunTaskId, "errorString", ge.getMessage()), locale));
@@ -1219,7 +1336,7 @@ public class ProductionRunServices {
         LocalDispatcher dispatcher = ctx.getDispatcher();
         Locale locale = (Locale) context.get("locale");
         GenericValue userLogin = (GenericValue) context.get("userLogin");
-
+        Map<String, Object> serviceResult = new HashMap<String, Object>();
         String productionRunId = (String) context.get("productionRunId");
         String routingTaskId = (String) context.get("routingTaskId");
         if (! UtilValidate.isEmpty(productionRunId) && ! UtilValidate.isEmpty(routingTaskId)) {
@@ -1235,7 +1352,10 @@ public class ProductionRunServices {
                 Timestamp pRestimatedStartDate = productionRun.getEstimatedStartDate();
                 if (pRestimatedStartDate.after(estimatedStartDate)) {
                     try {
-                        dispatcher.runSync("updateProductionRun", UtilMisc.toMap("productionRunId", productionRunId, "estimatedStartDate", estimatedStartDate, "userLogin", userLogin));
+                        serviceResult = dispatcher.runSync("updateProductionRun", UtilMisc.toMap("productionRunId", productionRunId, "estimatedStartDate", estimatedStartDate, "userLogin", userLogin));
+                        if (ServiceUtil.isError(serviceResult)) {
+                            return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                        }
                     } catch (GenericServiceException e) {
                         return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingRoutingTaskStartDateBeforePRun", locale));
                     }
@@ -1346,7 +1466,10 @@ public class ProductionRunServices {
         serviceContext.put("estimatedQuantity", quantity);
         serviceContext.put("userLogin", userLogin);
         try {
-            dispatcher.runSync("createWorkEffortGoodStandard", serviceContext);
+            Map<String, Object> serviceResult = dispatcher.runSync("createWorkEffortGoodStandard", serviceContext);
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+            }
         } catch (GenericServiceException e) {
             Debug.logError(e, "Problem calling the createWorkEffortGoodStandard service", module);
             return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunComponentNotAdded", locale));
@@ -1421,7 +1544,10 @@ public class ProductionRunServices {
         }
         serviceContext.put("userLogin", userLogin);
         try {
-            dispatcher.runSync("updateWorkEffortGoodStandard", serviceContext);
+            Map<String, Object> serviceResult = dispatcher.runSync("updateWorkEffortGoodStandard", serviceContext);
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+            }
         } catch (GenericServiceException e) {
             Debug.logError(e, "Problem calling the updateWorkEffortGoodStandard service", module);
             return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunComponentNotAdded", locale));
@@ -1524,14 +1650,17 @@ public class ProductionRunServices {
         serviceContext.put("estimatedMilliSeconds", estimatedMilliSeconds);
         serviceContext.put("quantityToProduce", pRQuantity);
         serviceContext.put("userLogin", userLogin);
-        Map<String, Object> resultService = null;
+        Map<String, Object> serviceResult = null;
         try {
-            resultService = dispatcher.runSync("createWorkEffort", serviceContext);
+            serviceResult = dispatcher.runSync("createWorkEffort", serviceContext);
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+            }
         } catch (GenericServiceException e) {
             Debug.logError(e, "Problem calling the createWorkEffort service", module);
             return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingAddProductionRunRoutingTaskNotCreated", locale));
         }
-        String productionRunTaskId = (String) resultService.get("workEffortId");
+        String productionRunTaskId = (String) serviceResult.get("workEffortId");
         if (Debug.infoOn()) Debug.logInfo("ProductionRunTaskId created: " + productionRunTaskId, module);
 
 
@@ -1560,7 +1689,10 @@ public class ProductionRunServices {
                         "userLogin", userLogin
                );
                 try {
-                    resultService = dispatcher.runSync("assignPartyToWorkEffort", partyToWorkEffort);
+                    serviceResult = dispatcher.runSync("assignPartyToWorkEffort", partyToWorkEffort);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
                 } catch (GenericServiceException e) {
                     Debug.logError(e, "Problem calling the assignPartyToWorkEffort service", module);
                 }
@@ -1686,11 +1818,17 @@ public class ProductionRunServices {
             // get the currency
             facility = productionRun.getGenericValue().getRelatedOne("Facility", false);
             Map<String, Object> outputMap = dispatcher.runSync("getPartyAccountingPreferences", UtilMisc.<String, Object>toMap("userLogin", userLogin, "organizationPartyId", facility.getString("ownerPartyId")));
+            if (ServiceUtil.isError(outputMap)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(outputMap));
+            }
             GenericValue partyAccountingPreference = (GenericValue)outputMap.get("partyAccountingPreference");
             if (partyAccountingPreference == null) {
                 return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunUnableToFindCosts", locale));
             }
             outputMap = dispatcher.runSync("getProductCost", UtilMisc.<String, Object>toMap("userLogin", userLogin, "productId", productionRun.getProductProduced().getString("productId"), "currencyUomId", (String)partyAccountingPreference.get("baseCurrencyUomId"), "costComponentTypePrefix", "EST_STD"));
+            if (ServiceUtil.isError(outputMap)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(outputMap));
+            }
             unitCost = (BigDecimal)outputMap.get("productCost");
             if (unitCost != null && unitCost.compareTo(BigDecimal.ZERO) == 0) {
                 BigDecimal totalCost = ZERO;
@@ -1722,7 +1860,10 @@ public class ProductionRunServices {
                 createProductFacilityCtx.put("productId", productionRun.getProductProduced().getString("productId"));
                 createProductFacilityCtx.put("facilityId", facility.get("facilityId"));
                 createProductFacilityCtx.put("userLogin", userLogin);
-                dispatcher.runSync("createProductFacility", createProductFacilityCtx);
+                Map<String, Object> serviceResult = dispatcher.runSync("createProductFacility", createProductFacilityCtx);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
             }
 
         } catch (GenericServiceException gse) {
@@ -1751,8 +1892,11 @@ public class ProductionRunServices {
                     serviceContext.put("locationSeqId", locationSeqId);
                     serviceContext.put("uomId",uomId);
                     serviceContext.put("userLogin", userLogin);
-                    Map<String, Object> resultService = dispatcher.runSync("createInventoryItem", serviceContext);
-                    String inventoryItemId = (String)resultService.get("inventoryItemId");
+                    Map<String, Object> serviceResult = dispatcher.runSync("createInventoryItem", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
+                    String inventoryItemId = (String)serviceResult.get("inventoryItemId");
                     inventoryItemIds.add(inventoryItemId);
                     serviceContext.clear();
                     serviceContext.put("inventoryItemId", inventoryItemId);
@@ -1760,17 +1904,26 @@ public class ProductionRunServices {
                     serviceContext.put("availableToPromiseDiff", BigDecimal.ONE);
                     serviceContext.put("quantityOnHandDiff", BigDecimal.ONE);
                     serviceContext.put("userLogin", userLogin);
-                    resultService = dispatcher.runSync("createInventoryItemDetail", serviceContext);
+                    serviceResult = dispatcher.runSync("createInventoryItemDetail", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
                     serviceContext.clear();
                     serviceContext.put("userLogin", userLogin);
                     serviceContext.put("workEffortId", productionRunId);
                     serviceContext.put("inventoryItemId", inventoryItemId);
-                    resultService = dispatcher.runSync("createWorkEffortInventoryProduced", serviceContext);
+                    serviceResult = dispatcher.runSync("createWorkEffortInventoryProduced", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
                     // Recompute reservations
                     serviceContext = new HashMap<String, Object>();
                     serviceContext.put("inventoryItemId", inventoryItemId);
                     serviceContext.put("userLogin", userLogin);
-                    resultService = dispatcher.runSync("balanceInventoryItems", serviceContext);
+                    serviceResult = dispatcher.runSync("balanceInventoryItems", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
                 }
             } catch (GenericServiceException exc) {
                 return ServiceUtil.returnError(exc.getMessage());
@@ -1792,8 +1945,11 @@ public class ProductionRunServices {
                     serviceContext.put("unitCost", unitCost);
                 }
                 serviceContext.put("userLogin", userLogin);
-                Map<String, Object> resultService = dispatcher.runSync("createInventoryItem", serviceContext);
-                String inventoryItemId = (String)resultService.get("inventoryItemId");
+                Map<String, Object> serviceResult = dispatcher.runSync("createInventoryItem", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
+                String inventoryItemId = (String)serviceResult.get("inventoryItemId");
                 inventoryItemIds.add(inventoryItemId);
                 serviceContext.clear();
                 serviceContext.put("inventoryItemId", inventoryItemId);
@@ -1801,12 +1957,18 @@ public class ProductionRunServices {
                 serviceContext.put("availableToPromiseDiff", quantity);
                 serviceContext.put("quantityOnHandDiff", quantity);
                 serviceContext.put("userLogin", userLogin);
-                resultService = dispatcher.runSync("createInventoryItemDetail", serviceContext);
+                serviceResult = dispatcher.runSync("createInventoryItemDetail", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
                 serviceContext.clear();
                 serviceContext.put("userLogin", userLogin);
                 serviceContext.put("workEffortId", productionRunId);
                 serviceContext.put("inventoryItemId", inventoryItemId);
-                resultService = dispatcher.runSync("createWorkEffortInventoryProduced", serviceContext);
+                serviceResult = dispatcher.runSync("createWorkEffortInventoryProduced", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
                 // Recompute reservations
                 serviceContext = new HashMap<String, Object>();
                 serviceContext.put("inventoryItemId", inventoryItemId);
@@ -1816,7 +1978,10 @@ public class ProductionRunServices {
                     serviceContext.put("priorityOrderId", orderItem.getString("orderId"));
                     serviceContext.put("priorityOrderItemSeqId", orderItem.getString("orderItemSeqId"));
                 }
-                resultService = dispatcher.runSync("balanceInventoryItems", serviceContext);
+                serviceResult = dispatcher.runSync("balanceInventoryItems", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
             } catch (GenericServiceException exc) {
                 return ServiceUtil.returnError(exc.getMessage());
             } catch (Exception exc) {
@@ -1829,7 +1994,10 @@ public class ProductionRunServices {
         serviceContext.put("actualCompletionDate", UtilDateTime.nowTimestamp());
         serviceContext.put("userLogin", userLogin);
         try {
-            dispatcher.runSync("updateWorkEffort", serviceContext);
+            Map<String, Object> serviceResult = dispatcher.runSync("updateWorkEffort", serviceContext);
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+            }
         } catch (GenericServiceException e) {
             Debug.logError(e, "Problem calling the updateWorkEffort service", module);
             return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -1885,9 +2053,9 @@ public class ProductionRunServices {
                         serviceContext.put("issueRequiredComponents", Boolean.TRUE);
                         serviceContext.put("componentsLocationMap", componentsLocationMap);
                         serviceContext.put("userLogin", userLogin);
-                        Map<String, Object> resultService = dispatcher.runSync("updateProductionRunTask", serviceContext);
-                        if (ServiceUtil.isError(resultService)) {
-                            return ServiceUtil.returnError(ServiceUtil.getErrorMessage(resultService));
+                        Map<String, Object> serviceResult = dispatcher.runSync("updateProductionRunTask", serviceContext);
+                        if (ServiceUtil.isError(serviceResult)) {
+                            return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
                         }
                     } catch (GenericServiceException e) {
                         Debug.logError(e, "Problem calling the changeProductionRunTaskStatus service", module);
@@ -1901,6 +2069,9 @@ public class ProductionRunServices {
             inputMap.putAll(context);
             inputMap.remove("componentsLocationMap");
             result = dispatcher.runSync("productionRunProduce", inputMap);
+            if (ServiceUtil.isError(result)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(result));
+            }
         } catch (GenericServiceException e) {
             Debug.logError(e, "Problem calling the changeProductionRunTaskStatus service", module);
             return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -1957,26 +2128,38 @@ public class ProductionRunServices {
                     serviceContext.put("uomId", uomId);
                     serviceContext.put("userLogin", userLogin);
                     serviceContext.put("isReturned", isReturned);
-                    Map<String, Object> resultService = dispatcher.runSync("createInventoryItem", serviceContext);
-                    String inventoryItemId = (String)resultService.get("inventoryItemId");
+                    Map<String, Object> serviceResult = dispatcher.runSync("createInventoryItem", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
+                    String inventoryItemId = (String)serviceResult.get("inventoryItemId");
                     serviceContext.clear();
                     serviceContext.put("inventoryItemId", inventoryItemId);
                     serviceContext.put("workEffortId", productionRunTaskId);
                     serviceContext.put("availableToPromiseDiff", BigDecimal.ONE);
                     serviceContext.put("quantityOnHandDiff", BigDecimal.ONE);
                     serviceContext.put("userLogin", userLogin);
-                    resultService = dispatcher.runSync("createInventoryItemDetail", serviceContext);
+                    serviceResult = dispatcher.runSync("createInventoryItemDetail", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
                     serviceContext.clear();
                     serviceContext.put("userLogin", userLogin);
                     serviceContext.put("workEffortId", productionRunTaskId);
                     serviceContext.put("inventoryItemId", inventoryItemId);
-                    resultService = dispatcher.runSync("createWorkEffortInventoryProduced", serviceContext);
+                    serviceResult = dispatcher.runSync("createWorkEffortInventoryProduced", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
                     inventoryItemIds.add(inventoryItemId);
                     // Recompute reservations
                     serviceContext = new HashMap<String, Object>();
                     serviceContext.put("inventoryItemId", inventoryItemId);
                     serviceContext.put("userLogin", userLogin);
-                    resultService = dispatcher.runSync("balanceInventoryItems", serviceContext);
+                    serviceResult = dispatcher.runSync("balanceInventoryItems", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
                 }
             } catch (GenericServiceException exc) {
                 return ServiceUtil.returnError(exc.getMessage());
@@ -1999,8 +2182,11 @@ public class ProductionRunServices {
                 serviceContext.put("uomId",uomId);
                 serviceContext.put("userLogin", userLogin);
                 serviceContext.put("isReturned", isReturned);
-                Map<String, Object> resultService = dispatcher.runSync("createInventoryItem", serviceContext);
-                String inventoryItemId = (String)resultService.get("inventoryItemId");
+                Map<String, Object> serviceResult = dispatcher.runSync("createInventoryItem", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
+                String inventoryItemId = (String)serviceResult.get("inventoryItemId");
 
                 serviceContext.clear();
                 serviceContext.put("inventoryItemId", inventoryItemId);
@@ -2008,18 +2194,27 @@ public class ProductionRunServices {
                 serviceContext.put("availableToPromiseDiff", quantity);
                 serviceContext.put("quantityOnHandDiff", quantity);
                 serviceContext.put("userLogin", userLogin);
-                resultService = dispatcher.runSync("createInventoryItemDetail", serviceContext);
+                serviceResult = dispatcher.runSync("createInventoryItemDetail", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
                 serviceContext.clear();
                 serviceContext.put("userLogin", userLogin);
                 serviceContext.put("workEffortId", productionRunTaskId);
                 serviceContext.put("inventoryItemId", inventoryItemId);
-                resultService = dispatcher.runSync("createWorkEffortInventoryProduced", serviceContext);
+                serviceResult = dispatcher.runSync("createWorkEffortInventoryProduced", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
                 inventoryItemIds.add(inventoryItemId);
                 // Recompute reservations
                 serviceContext = new HashMap<String, Object>();
                 serviceContext.put("inventoryItemId", inventoryItemId);
                 serviceContext.put("userLogin", userLogin);
-                resultService = dispatcher.runSync("balanceInventoryItems", serviceContext);
+                serviceResult = dispatcher.runSync("balanceInventoryItems", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
             } catch (GenericServiceException exc) {
                 return ServiceUtil.returnError(exc.getMessage());
             } catch (Exception exc) {
@@ -2213,10 +2408,10 @@ public class ProductionRunServices {
                                 serviceContext.put("failIfItemsAreNotAvailable", componentsLocation.get("failIfItemsAreNotAvailable"));
                             }
                             serviceContext.put("userLogin", userLogin);
-                            Map<String, Object> resultService = dispatcher.runSync("issueProductionRunTaskComponent", 
+                            Map<String, Object> serviceResult = dispatcher.runSync("issueProductionRunTaskComponent", 
                                     serviceContext);
-                            if (ServiceUtil.isError(resultService)) {
-                                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(resultService));
+                            if (ServiceUtil.isError(serviceResult)) {
+                                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
                             }
                        }
                     }
@@ -2250,7 +2445,10 @@ public class ProductionRunServices {
             serviceContext.put("quantityProduced", totalQuantityProduced);
             serviceContext.put("quantityRejected", totalQuantityRejected);
             serviceContext.put("userLogin", userLogin);
-            dispatcher.runSync("updateWorkEffort", serviceContext);
+            Map<String, Object> serviceResult = dispatcher.runSync("updateWorkEffort", serviceContext);
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+            }
         } catch (GenericServiceException exc) {
             return ServiceUtil.returnError(exc.getMessage());
         } catch (Exception exc) {
@@ -2280,10 +2478,13 @@ public class ProductionRunServices {
             return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingRequirementNotExists", locale));
         }
         try {
-            dispatcher.runSync("updateRequirement", 
+            Map<String, Object> serviceResult = dispatcher.runSync("updateRequirement",
                     UtilMisc.<String, Object>toMap("requirementId", requirementId, 
                             "statusId", "REQ_APPROVED", "requirementTypeId", requirement.getString("requirementTypeId"), 
                             "userLogin", userLogin));
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+            }
         } catch (GenericServiceException e) {
             return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingRequirementNotUpdated", locale));
         }
@@ -2336,17 +2537,20 @@ public class ProductionRunServices {
         }
         serviceContext.put("workEffortName", workEffortName);
         serviceContext.put("userLogin", userLogin);
-        Map<String, Object> resultService = null;
+        Map<String, Object> serviceResult = null;
         try {
-            resultService = dispatcher.runSync("createProductionRunsForProductBom", serviceContext);
+            serviceResult = dispatcher.runSync("createProductionRunsForProductBom", serviceContext);
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunNotCreated", locale) + ": " + ServiceUtil.getErrorMessage(serviceResult));
+            }
         } catch (GenericServiceException e) {
             return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunNotCreated", locale) + ": " + e.getMessage());
         }
-        if (ServiceUtil.isError(resultService)) {
-            return ServiceUtil.returnError(ServiceUtil.getErrorMessage(resultService));
+        if (ServiceUtil.isError(serviceResult)) {
+            return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
         }
 
-        String productionRunId = (String)resultService.get("productionRunId");
+        String productionRunId = (String)serviceResult.get("productionRunId");
         result.put("productionRunId", productionRunId);
 
         result.put(ModelService.SUCCESS_MESSAGE, UtilProperties.getMessage(resource, "ManufacturingProductionRunCreated",UtilMisc.toMap("productionRunId", productionRunId), locale));
@@ -2395,13 +2599,16 @@ public class ProductionRunServices {
         serviceContext.put("startDate", UtilDateTime.nowTimestamp());
         serviceContext.put("facilityId", facilityId);
         serviceContext.put("userLogin", userLogin);
-        Map<String, Object> resultService = null;
+        Map<String, Object> serviceResult = null;
         try {
-            resultService = dispatcher.runSync("createProductionRun", serviceContext);
+            serviceResult = dispatcher.runSync("createProductionRun", serviceContext);
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunNotCreated", locale));
+            }
         } catch (GenericServiceException e) {
             return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunNotCreated", locale));
         }
-        String productionRunId = (String)resultService.get("productionRunId");
+        String productionRunId = (String)serviceResult.get("productionRunId");
         result.put("productionRunId", productionRunId);
 
         Map<String, BigDecimal> components = new HashMap<String, BigDecimal>();
@@ -2445,11 +2652,14 @@ public class ProductionRunServices {
                     serviceContext.put("startDate", UtilDateTime.nowTimestamp());
                     serviceContext.put("facilityId", facilityId);
                     serviceContext.put("userLogin", userLogin);
-                    resultService = null;
+                    serviceResult = null;
                     try {
-                        resultService = dispatcher.runSync("createProductionRunsForProductBom", serviceContext);
+                        serviceResult = dispatcher.runSync("createProductionRunsForProductBom", serviceContext);
+                        if (ServiceUtil.isError(serviceResult)) {
+                            return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                        }
                         GenericValue workEffortPreDecessor = delegator.makeValue("WorkEffortAssoc", UtilMisc.toMap(
-                                "workEffortIdTo", productionRunId, "workEffortIdFrom", resultService.get("productionRunId"),
+                                "workEffortIdTo", productionRunId, "workEffortIdFrom", serviceResult.get("productionRunId"),
                                 "workEffortAssocTypeId", "WORK_EFF_PRECEDENCY", "fromDate", UtilDateTime.nowTimestamp()));
                         workEffortPreDecessor.create();
                     } catch (GenericServiceException e) {
@@ -2465,7 +2675,7 @@ public class ProductionRunServices {
                 //  create production run notes from comments
                 String comments = co.getComments();
                 if (UtilValidate.isNotEmpty(comments)) {
-                    resultService.clear();
+                    serviceResult.clear();
                     serviceContext.clear();
                     serviceContext.put("workEffortId", productionRunId);
                     serviceContext.put("internalNote", "Y");
@@ -2474,7 +2684,10 @@ public class ProductionRunServices {
                     serviceContext.put("userLogin", userLogin);
                     serviceContext.put("noteParty", userLogin.getString("partyId"));
                     try {
-                        resultService = dispatcher.runSync("createWorkEffortNote", serviceContext);
+                        serviceResult = dispatcher.runSync("createWorkEffortNote", serviceContext);
+                        if (ServiceUtil.isError(serviceResult)) {
+                            return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                        }
                     } catch (GenericServiceException e) {
                         Debug.logWarning(e.getMessage(), module);
                         return ServiceUtil.returnError(e.getMessage());
@@ -2489,14 +2702,17 @@ public class ProductionRunServices {
             if (componentQuantity == null) {
                 componentQuantity = BigDecimal.ONE;
             }
-            resultService = null;
+            serviceResult = null;
             serviceContext = new HashMap<String, Object>();
             serviceContext.put("productionRunId", productionRunId);
             serviceContext.put("productId", productId);
             serviceContext.put("estimatedQuantity", componentQuantity);
             serviceContext.put("userLogin", userLogin);
             try {
-                resultService = dispatcher.runSync("addProductionRunComponent", serviceContext);
+                serviceResult = dispatcher.runSync("addProductionRunComponent", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunNotCreated", locale));
+                }
             } catch (GenericServiceException e) {
                 return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunNotCreated", locale));
             }
@@ -2555,6 +2771,9 @@ public class ProductionRunServices {
             Map<String, Object> tmpResults = dispatcher.runSync("getInventoryAvailableByFacility", 
                     UtilMisc.<String, Object>toMap("productId", orderItem.getString("productId"), 
                             "facilityId", facilityId, "userLogin", userLogin));
+            if (ServiceUtil.isError(tmpResults)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(tmpResults));
+            }
             if (tmpResults.get("availableToPromiseTotal") != null) {
                 existingAtp = (BigDecimal) tmpResults.get("availableToPromiseTotal");
             }
@@ -2573,8 +2792,11 @@ public class ProductionRunServices {
                 serviceContext.put("productId", orderItem.getString("productId"));
                 serviceContext.put("facilityId", facilityId);
                 serviceContext.put("userLogin", userLogin);
-                Map<String, Object> resultService = dispatcher.runSync("getMktgPackagesAvailable", serviceContext);
-                BigDecimal mktgPackagesAvailable = (BigDecimal) resultService.get("availableToPromiseTotal");
+                Map<String, Object> serviceResult = dispatcher.runSync("getMktgPackagesAvailable", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
+                BigDecimal mktgPackagesAvailable = (BigDecimal) serviceResult.get("availableToPromiseTotal");
 
                 BigDecimal qtyToProduce = qtyRequired.min(mktgPackagesAvailable);
 
@@ -2583,9 +2805,11 @@ public class ProductionRunServices {
 
                     serviceContext.put("pRQuantity", qtyToProduce);
                     serviceContext.put("startDate", UtilDateTime.nowTimestamp());
-                    resultService = dispatcher.runSync("createProductionRun", serviceContext);
-
-                    String productionRunId = (String)resultService.get("productionRunId");
+                    serviceResult = dispatcher.runSync("createProductionRun", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
+                    String productionRunId = (String)serviceResult.get("productionRunId");
                     result.put("productionRunId", productionRunId);
 
                     try {
@@ -2599,11 +2823,17 @@ public class ProductionRunServices {
                         serviceContext.put("productionRunId", productionRunId);
                         serviceContext.put("statusId", "PRUN_COMPLETED");
                         serviceContext.put("userLogin", userLogin);
-                        resultService = dispatcher.runSync("quickChangeProductionRunStatus", serviceContext);
+                        serviceResult = dispatcher.runSync("quickChangeProductionRunStatus", serviceContext);
+                        if (ServiceUtil.isError(serviceResult)) {
+                            return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                        }
                         serviceContext.clear();
                         serviceContext.put("workEffortId", productionRunId);
                         serviceContext.put("userLogin", userLogin);
-                        resultService = dispatcher.runSync("productionRunProduce", serviceContext);
+                        serviceResult = dispatcher.runSync("productionRunProduce", serviceContext);
+                        if (ServiceUtil.isError(serviceResult)) {
+                            return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                        }
                     } catch (GenericServiceException e) {
                         return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunNotCreated", locale));
                     }
@@ -2804,7 +3034,7 @@ public class ProductionRunServices {
 
         try {
             Map<String, Object> serviceContext = new HashMap<String, Object>();
-            Map<String, Object> resultService = null;
+            Map<String, Object> serviceResult = null;
             GenericValue task = EntityQuery.use(delegator).from("WorkEffort").where("workEffortId", taskId).queryOne();
             String currentStatusId = task.getString("currentStatusId");
             String prevStatusId = "";
@@ -2813,8 +3043,11 @@ public class ProductionRunServices {
                 serviceContext.put("workEffortId", taskId);
                 serviceContext.put("issueAllComponents", Boolean.TRUE);
                 serviceContext.put("userLogin", userLogin);
-                resultService = dispatcher.runSync("changeProductionRunTaskStatus", serviceContext);
-                currentStatusId = (String)resultService.get("newStatusId");
+                serviceResult = dispatcher.runSync("changeProductionRunTaskStatus", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
+                currentStatusId = (String)serviceResult.get("newStatusId");
                 if (currentStatusId.equals(prevStatusId)) {
                     return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunUnableToProgressTaskStatus", UtilMisc.toMap("prevStatusId", prevStatusId, "taskId", taskId), locale));
                 } else {
@@ -2866,7 +3099,10 @@ public class ProductionRunServices {
                 serviceContext.put("productionRunId", productionRunId);
                 serviceContext.put("taskId", taskId);
                 serviceContext.put("userLogin", userLogin);
-                dispatcher.runSync("quickRunProductionRunTask", serviceContext);
+                Map<String, Object> serviceResult = dispatcher.runSync("quickRunProductionRunTask", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
             } catch (GenericServiceException e) {
                 Debug.logError(e, "Problem calling the quickRunProductionRunTask service", module);
                 return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -2903,7 +3139,10 @@ public class ProductionRunServices {
                     serviceContext.put("statusId", "PRUN_RUNNING");
                     serviceContext.put("issueAllComponents", Boolean.FALSE);
                     serviceContext.put("userLogin", userLogin);
-                    dispatcher.runSync("changeProductionRunTaskStatus", serviceContext);
+                    Map<String, Object> serviceResult = dispatcher.runSync("changeProductionRunTaskStatus", serviceContext);
+                    if (ServiceUtil.isError(serviceResult)) {
+                        return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                    }
                 } catch (GenericServiceException e) {
                     Debug.logError(e, "Problem calling the changeProductionRunTaskStatus service", module);
                     return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunStatusNotChanged", locale));
@@ -2925,7 +3164,7 @@ public class ProductionRunServices {
         LocalDispatcher dispatcher = ctx.getDispatcher();
         Locale locale = (Locale) context.get("locale");
         GenericValue userLogin = (GenericValue) context.get("userLogin");
-
+        Map<String, Object> serviceResult = new HashMap<String, Object>();
         String productionRunId = (String) context.get("productionRunId");
         String statusId = (String) context.get("statusId");
         String startAllTasks = (String) context.get("startAllTasks");
@@ -2941,37 +3180,55 @@ public class ProductionRunServices {
                 serviceContext.put("productionRunId", productionRunId);
                 serviceContext.put("statusId", "PRUN_DOC_PRINTED");
                 serviceContext.put("userLogin", userLogin);
-                dispatcher.runSync("changeProductionRunStatus", serviceContext);
+                serviceResult = dispatcher.runSync("changeProductionRunStatus", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
             }
             if ("PRUN_RUNNING".equals(statusId) && "Y".equals(startAllTasks)) {
                 serviceContext.clear();
                 serviceContext.put("productionRunId", productionRunId);
                 serviceContext.put("userLogin", userLogin);
-                dispatcher.runSync("quickStartAllProductionRunTasks", serviceContext);
+                serviceResult = dispatcher.runSync("quickStartAllProductionRunTasks", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
             }
             if ("PRUN_COMPLETED".equals(statusId) ||
                        "PRUN_CLOSED".equals(statusId)) {
                 serviceContext.clear();
                 serviceContext.put("productionRunId", productionRunId);
                 serviceContext.put("userLogin", userLogin);
-                dispatcher.runSync("quickRunAllProductionRunTasks", serviceContext);
+                serviceResult = dispatcher.runSync("quickRunAllProductionRunTasks", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
             }
             if ("PRUN_CLOSED".equals(statusId)) {
                 // Put in warehouse the products manufactured
                 serviceContext.clear();
                 serviceContext.put("workEffortId", productionRunId);
                 serviceContext.put("userLogin", userLogin);
-                dispatcher.runSync("productionRunProduce", serviceContext);
+                serviceResult = dispatcher.runSync("productionRunProduce", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
                 serviceContext.clear();
                 serviceContext.put("productionRunId", productionRunId);
                 serviceContext.put("statusId", "PRUN_CLOSED");
                 serviceContext.put("userLogin", userLogin);
-                dispatcher.runSync("changeProductionRunStatus", serviceContext);
+                serviceResult = dispatcher.runSync("changeProductionRunStatus", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
             } else {
                 serviceContext.put("productionRunId", productionRunId);
                 serviceContext.put("statusId", statusId);
                 serviceContext.put("userLogin", userLogin);
-                dispatcher.runSync("changeProductionRunStatus", serviceContext);
+                serviceResult = dispatcher.runSync("changeProductionRunStatus", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
             }
         } catch (GenericServiceException e) {
             Debug.logError(e, "Problem calling the changeProductionRunStatus service", module);
@@ -3038,6 +3295,7 @@ public class ProductionRunServices {
         GenericValue userLogin = (GenericValue) context.get("userLogin");
         String inventoryItemId = (String)context.get("inventoryItemId");
         Locale locale = (Locale) context.get("locale");
+        Map<String, Object> serviceResult = new HashMap<String, Object>();
         try {
             GenericValue inventoryItem = EntityQuery.use(delegator).from("InventoryItem").where("inventoryItemId", inventoryItemId).queryOne();
             if (inventoryItem == null) {
@@ -3053,7 +3311,10 @@ public class ProductionRunServices {
             if (EntityTypeUtil.hasParentType(delegator, "ProductType", "productTypeId", product.getString("productTypeId"), "parentTypeId", "MARKETING_PKG_AUTO")) {
                 Map<String, Object> serviceContext = UtilMisc.toMap("inventoryItemId", inventoryItemId,
                                                     "userLogin", userLogin);
-                dispatcher.runSync("decomposeInventoryItem", serviceContext);
+                serviceResult = dispatcher.runSync("decomposeInventoryItem", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
             }
         } catch (GenericEntityException e) {
             Debug.logError(e, "Problem accessing the InventoryItem entity", module);
@@ -3093,8 +3354,11 @@ public class ProductionRunServices {
             serviceContext.put("facilityId", inventoryItem.getString("facilityId"));
             serviceContext.put("estimatedStartDate", now);
             serviceContext.put("userLogin", userLogin);
-            Map<String, Object> resultService = dispatcher.runSync("createWorkEffort", serviceContext);
-            String workEffortId = (String)resultService.get("workEffortId");
+            Map<String, Object> serviceResult = dispatcher.runSync("createWorkEffort", serviceContext);
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+            }
+            String workEffortId = (String)serviceResult.get("workEffortId");
             // the inventory (marketing package) is issued
             serviceContext.clear();
             serviceContext = UtilMisc.toMap("inventoryItem", inventoryItem,
@@ -3102,8 +3366,11 @@ public class ProductionRunServices {
             if (quantity != null) {
                 serviceContext.put("quantity", quantity);
             }
-            resultService = dispatcher.runSync("issueInventoryItemToWorkEffort", serviceContext);
-            BigDecimal issuedQuantity = (BigDecimal)resultService.get("quantityIssued");
+            serviceResult = dispatcher.runSync("issueInventoryItemToWorkEffort", serviceContext);
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+            }
+            BigDecimal issuedQuantity = (BigDecimal)serviceResult.get("quantityIssued");
             if (issuedQuantity.compareTo(ZERO) == 0) {
                 return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunCannotDecomposingInventoryItemNoMarketingPackagesFound", UtilMisc.toMap("inventoryItemId", inventoryItem.getString("inventoryItemId")), locale));
             }
@@ -3114,8 +3381,11 @@ public class ProductionRunServices {
                                  "currencyUomId", inventoryItem.getString("currencyUomId"),
                                  "costComponentTypePrefix", "EST_STD",
                                  "userLogin", userLogin);
-            resultService = dispatcher.runSync("getProductCost", serviceContext);
-            BigDecimal packageCost = (BigDecimal)resultService.get("productCost");
+            serviceResult = dispatcher.runSync("getProductCost", serviceContext);
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+            }
+            BigDecimal packageCost = (BigDecimal)serviceResult.get("productCost");
             BigDecimal inventoryItemCost = inventoryItem.getBigDecimal("unitCost");
             BigDecimal costCoefficient = null;
             if (packageCost == null || packageCost.compareTo(ZERO) == 0 || inventoryItemCost == null) {
@@ -3134,8 +3404,11 @@ public class ProductionRunServices {
             serviceContext = UtilMisc.toMap("productId", inventoryItem.getString("productId"),
                                  "quantity", issuedQuantity,
                                  "userLogin", userLogin);
-            resultService = dispatcher.runSync("getManufacturingComponents", serviceContext);
-            List<Map<String, Object>> components = UtilGenerics.checkList(resultService.get("componentsMap"));
+            serviceResult = dispatcher.runSync("getManufacturingComponents", serviceContext);
+            if (ServiceUtil.isError(serviceResult)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+            }
+            List<Map<String, Object>> components = UtilGenerics.checkList(serviceResult.get("componentsMap"));
             if (UtilValidate.isEmpty(components)) {
                 return ServiceUtil.returnError(UtilProperties.getMessage(resource, "ManufacturingProductionRunCannotDecomposingInventoryItemNoComponentsFound", UtilMisc.toMap("productId", inventoryItem.getString("productId")), locale));
             }
@@ -3146,8 +3419,11 @@ public class ProductionRunServices {
                                      "currencyUomId", inventoryItem.getString("currencyUomId"),
                                      "costComponentTypePrefix", "EST_STD",
                                      "userLogin", userLogin);
-                resultService = dispatcher.runSync("getProductCost", serviceContext);
-                BigDecimal componentCost = (BigDecimal)resultService.get("productCost");
+                serviceResult = dispatcher.runSync("getProductCost", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
+                BigDecimal componentCost = (BigDecimal)serviceResult.get("productCost");
 
                 // return the component to inventory at its standard cost multiplied by the cost coefficient from above
                 BigDecimal componentInventoryItemCost = costCoefficient.multiply(componentCost);
@@ -3158,8 +3434,11 @@ public class ProductionRunServices {
                                      "unitCost", componentInventoryItemCost,
                                      "userLogin", userLogin);
                 serviceContext.put("workEffortId", workEffortId);
-                resultService = dispatcher.runSync("productionRunTaskProduce", serviceContext);
-                List<String> newInventoryItemIds = UtilGenerics.checkList(resultService.get("inventoryItemIds"));
+                serviceResult = dispatcher.runSync("productionRunTaskProduce", serviceContext);
+                if (ServiceUtil.isError(serviceResult)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(serviceResult));
+                }
+                List<String> newInventoryItemIds = UtilGenerics.checkList(serviceResult.get("inventoryItemIds"));
                 inventoryItemIds.addAll(newInventoryItemIds);
             }
             // the components are put in warehouse