<?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.
-->

<service-group xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/service-group.xsd">

    <group name="updateWorkEffortAndAssoc" send-mode="all"  >
        <invoke name="updateWorkEffort" mode="sync"/>
        <invoke name="updateWorkEffortAssoc" mode="sync"/>
    </group>
    <group name="createWorkEffortRequestItemAndRequestItem" send-mode="all"  >
        <invoke name="checkCustRequestItemExists" mode="sync"  result-to-context="true"/>
        <invoke name="createWorkEffortRequestItem" mode="sync"/>
    </group>
</service-group>
