<?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-map-processors xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods-v2.xsd">
  <simple-map-processor name="person">
    <process field="firstName"><copy/><not-empty><fail-property resource="PartyUiLabels" property="PartyFirstNameMissing"/></not-empty></process>
    <process field="salutation"><copy/></process>
    <process field="middleName"><copy/></process>
    <process field="lastName"><copy/><not-empty><fail-property resource="PartyUiLabels" property="PartyLastNameMissingError"/></not-empty></process>
    <process field="personalTitle"><copy/></process>
    <process field="suffix"><copy/></process>
    <process field="nickname"><copy/></process>
    <process field="gender"><copy/></process>
    <process field="firstNameLocal"><copy/></process>
    <process field="middleNameLocal"><copy/></process>
    <process field="lastNameLocal"><copy/></process>
    <process field="otherLocal"><copy/></process>
    <process field="memberId"><copy/></process>
    <process field="birthDate"><convert type="Date"><fail-property resource="PartyUiLabels" property="PartyBirthDateMissingError"/></convert></process>
    <process field="deceasedDate"><convert type="Date"><fail-property resource="PartyUiLabels" property="PartyDeceasedDateMissingError"/></convert></process>
    <process field="height"><convert type="Double"><fail-property resource="PartyUiLabels" property="PartyHeightNotValidNumber"/></convert></process>
    <process field="weight"><convert type="Double"><fail-property resource="PartyUiLabels" property="PartyWeightNotValidNumber"/></convert></process>
    <process field="mothersMaidenName"><copy/></process>
    <process field="maritalStatus"><copy/></process>
    <process field="socialSecurityNumber"><copy/></process>
    <process field="passportNumber"><copy/></process>
    <process field="passportExpireDate"><convert type="Date"><fail-property resource="PartyUiLabels" property="PartyPassportExpireDateNotValidDate"/></convert></process>
    <process field="totalYearsWorkExperience"><convert type="Double"><fail-property resource="PartyUiLabels" property="PartyTotalYearsWorkNotValidNumber"/></convert></process>
    <process field="comments"><copy/></process>
    <process field="employmentStatusEnumId"><copy/></process>
    <process field="residenceStatusEnumId"><copy/></process>
    <process field="occupation"><copy/></process>
    <process field="yearsWithEmployer"><copy/></process>
    <process field="monthsWithEmployer"><copy/></process>
    <process field="existingCustomer"><copy/></process>
    <process field="cardId"><copy/></process>
  </simple-map-processor>

  <simple-map-processor name="partyGroup">
    <process field="groupName"><copy/><not-empty><fail-property resource="PartyUiLabels" property="PartyGroupNameMissing"/></not-empty></process>
    <process field="partyTypeId"><copy/></process>
    <process field="comments"><copy/></process>
    <process field="officeSiteName"><copy/></process>
    <process field="annualRevenue"><copy/></process>
    <process field="numEmployees"><convert type="Long"><fail-property resource="PartyUiLabels" property="PartyGroupNumEmployeeIsInvalid"/></convert></process>
    <process field="tickerSymbol"><copy/></process>
  </simple-map-processor>
</simple-map-processors>
