<?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"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods-v2.xsd">
        
    <simple-method method-name="migrateWorkEffortContactMech" short-description="Migrate data from OldWorkEffortContactMech to WorkEffortContactMech">
        <entity-condition entity-name="OldWorkEffortContactMech" list="oldWorkEffortContactMechs"/>
        <now-timestamp field="fromDate"/>
        <iterate list="oldWorkEffortContactMechs" entry="oldWorkEffortContactMech">
            <make-value entity-name="WorkEffortContactMech" value-field="workEffortContactMech"/>
            <set field="workEffortContactMech.workEffortId" from-field="oldWorkEffortContactMech.workEffortId"/>
            <set field="workEffortContactMech.contactMechId" from-field="oldWorkEffortContactMech.contactMechId"/>
            <set field="workEffortContactMech.fromDate" from-field="fromDate"/>
            <create-value value-field="workEffortContactMech"/>
        </iterate>
    </simple-method>
</simple-methods>
