http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/client-core/src/test/resources/org/apache/olingo/client/core/annotations.xml
----------------------------------------------------------------------
diff --git 
a/lib/client-core/src/test/resources/org/apache/olingo/client/core/annotations.xml
 
b/lib/client-core/src/test/resources/org/apache/olingo/client/core/annotations.xml
new file mode 100644
index 0000000..a89467d
--- /dev/null
+++ 
b/lib/client-core/src/test/resources/org/apache/olingo/client/core/annotations.xml
@@ -0,0 +1,1276 @@
+<?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.
+
+-->
+<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx"; Version="4.0">
+  <edmx:Reference Uri="../v4.0/cs02/vocabularies/Org.OData.Common.V1.xml">
+    <edmx:Include Namespace="Org.OData.Common.V1" Alias="Common"/>
+  </edmx:Reference>
+  <edmx:Reference Uri="../v4.0/cs02/vocabularies/Org.OData.UI.V1.xml">
+    <edmx:Include Namespace="Org.OData.UI.V1" Alias="UI"/>
+  </edmx:Reference>
+  <edmx:Reference 
Uri="../v4.0/cs02/vocabularies/Org.OData.Communication.V1.xml">
+    <edmx:Include Namespace="Org.OData.Communication.V1" 
Alias="Communication"/>
+  </edmx:Reference>
+  <edmx:DataServices>
+    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm"; 
Namespace="sepmra_so_man2_anno_mdl.v1">
+    <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/I_DraftAdministrativeData/ComplexProperty/PropertyInt16">
+        <Annotation Term="UI.AdditionalInfo"/>
+    </Annotations>
+    <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/I_DraftAdministrativeData/ComplexProperty/NavPropertyDraftAdministrativeDataType">
+        <Annotation Term="UI.AdditionalInfo"/>
+    </Annotations>
+    <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SINav/ComplexProperty/NavPropertyDraftAdministrativeDataType">
+        <Annotation Term="UI.AdditionalInfo"/>
+    </Annotations>
+    <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderCustCntctVH/to_Customer">
+        <Annotation Term="UI.AdditionalInfo"/>
+    </Annotations>
+    <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderCustCntctVH/to_Customer">
+        <Annotation Term="UI.HeaderInfo"/>
+    </Annotations>
+    <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/I_DraftAdministrativeData/DraftUUID">
+        <Annotation Term="UI.AdditionalInfo"/>
+    </Annotations>
+    <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/I_DraftAdministrativeData/DraftUUID">
+        <Annotation Term="UI.HeaderInfo"/>
+    </Annotations>
+    <Annotations 
Target="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType/DraftUUID">
+        <Annotation Term="UI.HeaderInfo"/>
+      </Annotations>
+    <Annotations Target="SEPMRA_SO_MAN2.BA_RTCountryVHType">
+        <Annotation Term="UI.HeaderInfo"/>
+    </Annotations>
+    <Annotations Target="SEPMRA_SO_MAN2.BA_RTCountryVHType/ParameterCTPrim">
+        <Annotation Term="UI.HeaderInfo"/>
+    </Annotations>
+    <Annotations Target="SEPMRA_SO_MAN2._FC_RTTimeOfDay_">
+        <Annotation Term="UI.HeaderInfo"/>
+    </Annotations>
+    <Annotations Target="SEPMRA_SO_MAN2._FC_RTTimeOfDay_/ParameterTimeOfDay">
+        <Annotation Term="UI.HeaderInfo"/>
+    </Annotations>
+    <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/AIRTString">
+        <Annotation Term="UI.HeaderInfo"/>
+      </Annotations>
+    <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SINav">
+      <Annotation Term="UI.HeaderInfo"/>
+    </Annotations>
+    <Annotations Target="SEPMRA_SO_MAN2.TDString">
+        <Annotation Term="UI.HeaderInfo"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.CTPrim">
+        <Annotation Term="UI.HeaderInfo"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.CTPrim/PropertyInt16">
+        <Annotation Term="UI.HeaderInfo"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.CTPrim/NavPropertyDraftAdministrativeDataType">
+        <Annotation Term="UI.HeaderInfo"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/I_DraftAdministrativeData">
+        <Annotation Term="UI.HeaderInfo"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities">
+        <Annotation Term="UI.HeaderInfo"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType/DraftEntityType">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType/DraftAccessType">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType/ProcessingStartDateTime">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType/DraftIsKeptByUser">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType/EnqueueStartDateTime">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType/DraftIsCreatedByMe">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType/DraftIsLastChangedByMe">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType/DraftIsProcessedByMe">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType/CreatedByUserDescription">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType/LastChangedByUserDescription">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType/InProcessByUserDescription">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_CountryVHType">
+        <Annotation Term="UI.HeaderInfo">
+          <Record>
+            <PropertyValue Property="TypeName" String="Country"/>
+            <PropertyValue Property="TypeNamePlural" String="Countries"/>
+            <PropertyValue Property="Title">
+              <Record Type="UI.DataField">
+                <PropertyValue Property="Value" Path="Country"/>
+              </Record>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustCntctVHType/"/>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustCntctVHType/EmailAddress">
+        <Annotation Term="Common.IsEmailAddress"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustCntctVHType/Customer">
+        <Annotation Term="UI.HiddenFilter"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustCntctVHType/to_Customer">
+        <Annotation Term="UI.ThingPerspective"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustCntctVHType">
+        <Annotation Term="UI.FieldGroup" Qualifier="ContactPerson">
+          <Record>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="ContactPerson"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="FirstName"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="LastName"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="EmailAddress"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="Label" String="Contact Person"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.HeaderInfo">
+          <Record>
+            <PropertyValue Property="TypeName" String="Contact Person"/>
+            <PropertyValue Property="TypeNamePlural" String="Contact Persons"/>
+            <PropertyValue Property="Title">
+              <Record Type="UI.DataField">
+                <PropertyValue Property="Value" Path="ContactPerson"/>
+              </Record>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.Identification">
+          <Collection>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="ContactPerson"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.LineItem">
+          <Collection>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="ContactPerson"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+          <Annotation Term="UI.Criticality" Path="abc"/>
+        </Annotation>
+        <Annotation Term="Communication.Contact">
+          <Record>
+            <PropertyValue Property="n">
+              <Record>
+                <PropertyValue Property="given" Path="FirstName"/>
+                <PropertyValue Property="surname" Path="LastName"/>
+              </Record>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustContactType/"/>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustContactType/EmailAddress">
+        <Annotation Term="Common.IsEmailAddress"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustContactType">
+        <Annotation Term="UI.FieldGroup" Qualifier="ContactDetails">
+          <Record>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataFieldForAnnotation">
+                  <PropertyValue Property="Target" 
AnnotationPath="@Communication.Contact"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="PhoneNumber"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="EmailAddress"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="Label" String="Contact"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.HeaderInfo">
+          <Record>
+            <PropertyValue Property="TypeName" String="Contact"/>
+            <PropertyValue Property="TypeNamePlural" String="Contacts"/>
+            <PropertyValue Property="Title">
+              <Record Type="UI.DataField">
+                <PropertyValue Property="Value" Path="FullName"/>
+              </Record>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.Identification">
+          <Collection>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="ContactPerson"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="Communication.Contact">
+          <Record>
+            <PropertyValue Property="fn" Path="FullName"/>
+            <PropertyValue Property="n">
+              <Record>
+                <PropertyValue Property="given" Path="FirstName"/>
+                <PropertyValue Property="surname" Path="LastName"/>
+              </Record>
+            </PropertyValue>
+            <PropertyValue Property="adr">
+              <Collection>
+                <Record>
+                  <PropertyValue Property="type" 
EnumMember="Communication.ContactInformationType/preferred"/>
+                  <PropertyValue Property="label" Path="Address"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="tel">
+              <Collection>
+                <Record>
+                  <PropertyValue Property="type" 
EnumMember="Communication.PhoneType/fax"/>
+                  <PropertyValue Property="uri" Path="FaxNumber"/>
+                </Record>
+                <Record>
+                  <PropertyValue Property="type" 
EnumMember="Communication.PhoneType/cell"/>
+                  <PropertyValue Property="uri" Path="MobilePhoneNumber"/>
+                </Record>
+                <Record>
+                  <PropertyValue Property="type" 
EnumMember="Communication.PhoneType/preferred Communication.PhoneType/work"/>
+                  <PropertyValue Property="uri" Path="PhoneNumber"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Communication.Address">
+          <Record>
+            <PropertyValue Property="type" 
EnumMember="Communication.ContactInformationType/preferred"/>
+            <PropertyValue Property="label" Path="Address"/>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustomerType/"/>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustomerType/EmailAddress">
+        <Annotation Term="Common.IsEmailAddress"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustomerType/Customer">
+        <Annotation Term="Common.Text" Path="CompanyName">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustomerType">
+        <Annotation Term="Communication.Contact">
+          <Record>
+            <PropertyValue Property="fn" Path="CompanyName"/>
+            <PropertyValue Property="adr">
+              <Collection>
+                <Record>
+                  <PropertyValue Property="type" 
EnumMember="Communication.ContactInformationType/preferred"/>
+                  <PropertyValue Property="label" Path="Address"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="tel">
+              <Collection>
+                <Record>
+                  <PropertyValue Property="type" 
EnumMember="Communication.PhoneType/fax"/>
+                  <PropertyValue Property="uri" Path="FaxNumber"/>
+                </Record>
+                <Record>
+                  <PropertyValue Property="type" 
EnumMember="Communication.PhoneType/preferred Communication.PhoneType/work"/>
+                  <PropertyValue Property="uri" Path="PhoneNumber"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Communication.Address">
+          <Record>
+            <PropertyValue Property="type" 
EnumMember="Communication.ContactInformationType/preferred"/>
+            <PropertyValue Property="label" Path="Address"/>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustomerVHType/Country">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustomerVHType/CountryT">
+        <Annotation Term="UI.HiddenFilter"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustomerVHType">
+        <Annotation Term="Communication.Contact">
+          <Record>
+            <PropertyValue Property="adr">
+              <Collection>
+                <Record>
+                  <PropertyValue Property="type" 
EnumMember="Communication.ContactInformationType/preferred"/>
+                  <PropertyValue Property="locality" Path="CityName"/>
+                  <PropertyValue Property="country" Path="Country"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Communication.Address">
+          <Record>
+            <PropertyValue Property="type" 
EnumMember="Communication.ContactInformationType/preferred"/>
+            <PropertyValue Property="locality" Path="CityName"/>
+            <PropertyValue Property="country" Path="Country"/>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/DraftUUID">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/HasActiveEntity">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/HasDraftEntity">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/IsActiveEntity">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/DraftEntityCreationDateTime">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/DraftEntityLastChangeDateTime">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/ParentDraftUUID">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/Preparation_ac">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/Validation_ac">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/Product">
+        <Annotation Term="Common.SemanticObject" String="EPMProduct"/>
+        <Annotation Term="Common.SemanticObjectMapping">
+          <Collection>
+            <Record>
+              <PropertyValue Property="LocalProperty" PropertyPath="Product"/>
+              <PropertyValue Property="SemanticObjectProperty" 
String="Product"/>
+            </Record>
+          </Collection>
+        </Annotation>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType">
+        <Annotation Term="UI.DataPoint" 
Qualifier="NetAmountInTransactionCurrency">
+          <Record>
+            <PropertyValue Property="Value" 
Path="NetAmountInTransactionCurrency"/>
+            <PropertyValue Property="Title" String="Net Amount"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.HeaderFacets">
+          <Collection>
+            <Record Type="UI.ReferenceFacet">
+              <PropertyValue Property="Target" 
AnnotationPath="@UI.DataPoint#NetAmountInTransactionCurrency"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.Facets">
+          <Collection>
+            <Record Type="UI.CollectionFacet">
+              <PropertyValue Property="Label" String="Sales Order Item"/>
+              <PropertyValue Property="ID" String="SalesOrderItemStableID"/>
+              <PropertyValue Property="Facets">
+                <Collection>
+                  <Record Type="UI.ReferenceFacet">
+                    <PropertyValue Property="Label" String="General 
Information"/>
+                    <PropertyValue Property="Target" 
AnnotationPath="@UI.Identification"/>
+                    <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                  </Record>
+                </Collection>
+              </PropertyValue>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.HeaderInfo">
+          <Record>
+            <PropertyValue Property="TypeName" String="Sales Order Item"/>
+            <PropertyValue Property="TypeNamePlural" String="Sales Order 
Items"/>
+            <PropertyValue Property="ImageUrl" 
Path="to_Product/ProductPictureURL"/>
+            <PropertyValue Property="Title">
+              <Record Type="UI.DataField">
+                <PropertyValue Property="Value" Path="Product"/>
+              </Record>
+            </PropertyValue>
+            <PropertyValue Property="Description">
+              <Record Type="UI.DataField">
+                <PropertyValue Property="Value" Path="SalesOrderItem"/>
+              </Record>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.Identification">
+          <Collection>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="SalesOrderItem"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="Product"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="to_ScheduleLine/Quantity"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" 
Path="to_ScheduleLine/DeliveryDate"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.LineItem">
+          <Collection>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" 
Path="to_Product/ProductPictureURL"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="Product"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" 
Path="to_ScheduleLine/DeliveryDate"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="to_ScheduleLine/Quantity"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="to_Product/Price"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" 
Path="NetAmountInTransactionCurrency"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+          <Annotation Term="UI.Criticality" Path="abc"/>
+        </Annotation>
+        <Annotation Term="UI.LineItem" Qualifier="QuickCreate">
+          <Collection>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="Product"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="to_ScheduleLine/Quantity"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.LineItem" Qualifier="QuickView">
+          <Collection>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="Product"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="to_ScheduleLine/Quantity"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+        </Annotation>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderPartyType/HouseNumber">
+        <Annotation Term="UI.HiddenFilter"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderPartyType">
+        <Annotation Term="UI.HeaderInfo">
+          <Record>
+            <PropertyValue Property="TypeName" String="Party"/>
+            <PropertyValue Property="TypeNamePlural" String="Parties"/>
+            <PropertyValue Property="Title">
+              <Record Type="UI.DataField">
+                <PropertyValue Property="Value" Path="PartyName"/>
+              </Record>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.Identification">
+          <Collection>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="Party"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="Address"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Medium"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="Communication.Contact">
+          <Record>
+            <PropertyValue Property="fn" Path="PartyName"/>
+            <PropertyValue Property="adr">
+              <Collection>
+                <Record>
+                  <PropertyValue Property="type" 
EnumMember="Communication.ContactInformationType/preferred"/>
+                  <PropertyValue Property="locality" Path="CityName"/>
+                  <PropertyValue Property="street" Path="StreetName"/>
+                  <PropertyValue Property="country" Path="Country"/>
+                  <PropertyValue Property="code" Path="PostalCode"/>
+                  <PropertyValue Property="label" Path="Address"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Communication.Address">
+          <Record>
+            <PropertyValue Property="type" 
EnumMember="Communication.ContactInformationType/preferred"/>
+            <PropertyValue Property="locality" Path="CityName"/>
+            <PropertyValue Property="street" Path="StreetName"/>
+            <PropertyValue Property="country" Path="Country"/>
+            <PropertyValue Property="code" Path="PostalCode"/>
+            <PropertyValue Property="label" Path="Address"/>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderPartyVHType/Customer">
+        <Annotation Term="UI.HiddenFilter"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderPartyVHType/Country">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderPartyVHType/CountryT">
+        <Annotation Term="UI.HiddenFilter"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderPartyVHType">
+        <Annotation Term="UI.HeaderInfo">
+          <Record>
+            <PropertyValue Property="TypeName" String="Party"/>
+            <PropertyValue Property="TypeNamePlural" String="Parties"/>
+            <PropertyValue Property="Title">
+              <Record Type="UI.DataField">
+                <PropertyValue Property="Value" Path="Party"/>
+              </Record>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.Identification">
+          <Collection>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="Party"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.LineItem">
+          <Collection>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="Party"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+          <Annotation Term="UI.Criticality" Path="abc"/>
+        </Annotation>
+        <Annotation Term="Communication.Contact">
+          <Record>
+            <PropertyValue Property="fn" Path="PartyName"/>
+            <PropertyValue Property="adr">
+              <Collection>
+                <Record>
+                  <PropertyValue Property="type" 
EnumMember="Communication.ContactInformationType/preferred"/>
+                  <PropertyValue Property="locality" Path="CityName"/>
+                  <PropertyValue Property="country" Path="Country"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="Communication.Address">
+          <Record>
+            <PropertyValue Property="type" 
EnumMember="Communication.ContactInformationType/preferred"/>
+            <PropertyValue Property="locality" Path="CityName"/>
+            <PropertyValue Property="country" Path="Country"/>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderProductType/ProductPictureURL">
+        <Annotation Term="UI.IsImageURL"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderProductType/Product">
+        <Annotation Term="Common.SemanticObject" String="EPMProduct"/>
+        <Annotation Term="Common.Text" Path="Product_Text">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderProductType">
+        <Annotation Term="Common.SemanticObject" String="EPMProduct"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderProductVHType/Product">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="Common.SemanticObject" String="EPMProduct"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderProductVHType/Name">
+        <Annotation Term="UI.HiddenFilter"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderProductVHType/MainProductCategory">
+        <Annotation Term="UI.HiddenFilter"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderProductVHType/Supplier">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="Common.SemanticObject" String="EPMSupplier"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderProductVHType/SupplierName">
+        <Annotation Term="UI.HiddenFilter"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderProductVHType">
+        <Annotation Term="UI.FieldGroup" Qualifier="Product">
+          <Record>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="Product"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="Name"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="MainProductCategory"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="Label" String="Product"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.FieldGroup" Qualifier="Supplier">
+          <Record>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="Supplier"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="SupplierName"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="Label" String="Supplier"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="Communication.Contact">
+          <Record>
+            <PropertyValue Property="fn" Path="SupplierName"/>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderReviserType/"/>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderReviserType/EmailAddress">
+        <Annotation Term="Common.IsEmailAddress"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderReviserType">
+        <Annotation Term="Communication.Contact">
+          <Record>
+            <PropertyValue Property="fn" Path="FullName"/>
+            <PropertyValue Property="tel">
+              <Collection>
+                <Record>
+                  <PropertyValue Property="type" 
EnumMember="Communication.PhoneType/cell"/>
+                  <PropertyValue Property="uri" Path="MobilePhoneNumber"/>
+                </Record>
+                <Record>
+                  <PropertyValue Property="type" 
EnumMember="Communication.PhoneType/preferred Communication.PhoneType/work"/>
+                  <PropertyValue Property="uri" Path="PhoneNumber"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderStatusType/SalesOrderOverallStatus">
+        <Annotation Term="Common.Text" Path="SalesOrderOverallStatus_Text">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderStatusType">
+        <Annotation Term="UI.DataPoint" Qualifier="SalesOrderOverallStatus">
+          <Record>
+            <PropertyValue Property="Value" Path="SalesOrderOverallStatus"/>
+            <PropertyValue Property="Title" String="Status"/>
+            <PropertyValue Property="Criticality" Path="StatusCriticality"/>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/DraftUUID">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/HasActiveEntity">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/HasDraftEntity">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/IsActiveEntity">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/DraftEntityCreationDateTime">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/DraftEntityLastChangeDateTime">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/Activation_ac">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/Copy_ac">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/Edit_ac">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/Preparation_ac">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/Validation_ac">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/BillToParty_fc">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/CustomerContact_fc">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/ShipToParty_fc">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/SoldToParty_fc">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/Delete_mc">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/Update_mc">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/SalesOrder">
+        <Annotation Term="Common.SemanticObject" String="EPMSalesOrder"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/CustomerContact">
+        <Annotation Term="Common.Text" Path="to_CustomerContact/FullName">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/SalesOrderOverallStatus">
+        <Annotation Term="Common.Text" 
Path="to_OverallStatus/SalesOrderOverallStatus_Text">
+          <Annotation Term="UI.TextArrangement" 
EnumMember="UI.TextArrangementType/TextOnly"/>
+        </Annotation>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType">
+        <Annotation Term="UI.DataPoint" 
Qualifier="NetAmountInTransactionCurrency">
+          <Record>
+            <PropertyValue Property="Value" 
Path="NetAmountInTransactionCurrency"/>
+            <PropertyValue Property="Title" String="Order Volume"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.QuickCreateFacets">
+          <Collection>
+            <Record Type="UI.ReferenceFacet">
+              <PropertyValue Property="Label" String="Create Sales Order"/>
+              <PropertyValue Property="Target" 
AnnotationPath="@UI.FieldGroup#QuickCreate"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.ReferenceFacet">
+              <PropertyValue Property="Label" String="Create Sales Order 
Item"/>
+              <PropertyValue Property="Target" 
AnnotationPath="to_SalesOrderItem/@UI.LineItem#QuickCreate"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.QuickViewFacets">
+          <Collection>
+            <Record Type="UI.ReferenceFacet">
+              <PropertyValue Property="Label" String="Sales Order"/>
+              <PropertyValue Property="Target" 
AnnotationPath="@UI.FieldGroup#QuickView"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.ReferenceFacet">
+              <PropertyValue Property="Label" String="Sales Order Item"/>
+              <PropertyValue Property="Target" 
AnnotationPath="to_SalesOrderItem/@UI.LineItem#QuickView"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.HeaderFacets">
+          <Collection>
+            <Record Type="UI.ReferenceFacet">
+              <PropertyValue Property="Target" 
AnnotationPath="@UI.FieldGroup#HeaderInfoCustomer"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.ReferenceFacet">
+              <PropertyValue Property="Target" 
AnnotationPath="@UI.DataPoint#NetAmountInTransactionCurrency"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.ReferenceFacet">
+              <PropertyValue Property="Target" 
AnnotationPath="to_OverallStatus/@UI.DataPoint#SalesOrderOverallStatus"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.ReferenceFacet">
+              <PropertyValue Property="Target" 
AnnotationPath="@UI.FieldGroup#AdminDataCreated"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.Facets">
+          <Collection>
+            <Record Type="UI.CollectionFacet">
+              <PropertyValue Property="Label" String="Customer Details"/>
+              <PropertyValue Property="ID" String="SalesOrderStableID"/>
+              <PropertyValue Property="Facets">
+                <Collection>
+                  <Record Type="UI.ReferenceFacet">
+                    <PropertyValue Property="Label" String="Customer Details"/>
+                    <PropertyValue Property="Target" 
AnnotationPath="@UI.FieldGroup#Customer"/>
+                    <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                  </Record>
+                  <Record Type="UI.ReferenceFacet">
+                    <PropertyValue Property="Label" String="Contact Details"/>
+                    <PropertyValue Property="Target" 
AnnotationPath="@UI.FieldGroup#CustomerContact"/>
+                    <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                  </Record>
+                </Collection>
+              </PropertyValue>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.CollectionFacet">
+              <PropertyValue Property="Label" String="General Information"/>
+              <PropertyValue Property="ID" String="GeneralInformationFacetID"/>
+              <PropertyValue Property="Facets">
+                <Collection>
+                  <Record Type="UI.ReferenceFacet">
+                    <PropertyValue Property="Label" String="Payment Details"/>
+                    <PropertyValue Property="Target" 
AnnotationPath="@UI.FieldGroup#Payment"/>
+                    <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                  </Record>
+                  <Record Type="UI.ReferenceFacet">
+                    <PropertyValue Property="Label" String="Billing Details"/>
+                    <PropertyValue Property="Target" 
AnnotationPath="@UI.FieldGroup#BillTo"/>
+                    <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                  </Record>
+                  <Record Type="UI.ReferenceFacet">
+                    <PropertyValue Property="Label" String="Shipping Details"/>
+                    <PropertyValue Property="Target" 
AnnotationPath="@UI.FieldGroup#ShipTo"/>
+                    <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                  </Record>
+                  <Record Type="UI.ReferenceFacet">
+                    <PropertyValue Property="Label" String="Modified"/>
+                    <PropertyValue Property="Target" 
AnnotationPath="@UI.FieldGroup#AdminDataLastChanged"/>
+                    <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                  </Record>
+                </Collection>
+              </PropertyValue>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.ReferenceFacet">
+              <PropertyValue Property="Label" String="Products"/>
+              <PropertyValue Property="ID" String="LineItemFacet"/>
+              <PropertyValue Property="Target" 
AnnotationPath="to_SalesOrderItem/@UI.LineItem"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.FieldGroup" Qualifier="AdminDataCreated">
+          <Record>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="CreationDateTime"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Medium"/>
+                </Record>
+                <Record Type="UI.DataFieldForAnnotation">
+                  <PropertyValue Property="Label" String="Created By"/>
+                  <PropertyValue Property="Target" 
AnnotationPath="to_CreatedByUser/@Communication.Contact"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Medium"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.FieldGroup" Qualifier="AdminDataLastChanged">
+          <Record>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="LastChangedDateTime"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="LastChangedByUser"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.FieldGroup" Qualifier="BillTo">
+          <Record>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="BillToParty"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" 
Path="to_BillToParty/Address"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.FieldGroup" Qualifier="Customer">
+          <Record>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="SoldToParty"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="to_Customer/Address"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Low"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.FieldGroup" Qualifier="CustomerContact">
+          <Record>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="CustomerContact"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" 
Path="to_CustomerContact/PhoneNumber"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Low"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" 
Path="to_CustomerContact/EmailAddress"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Low"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.FieldGroup" Qualifier="HeaderInfoCustomer">
+          <Record>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataFieldForAnnotation">
+                  <PropertyValue Property="Label" String="Customer"/>
+                  <PropertyValue Property="Target" 
AnnotationPath="to_Customer/@Communication.Contact"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Medium"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.FieldGroup" Qualifier="Payment">
+          <Record>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" 
Path="SalesOrderPaymentMethod"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" 
Path="SalesOrderPaymentTerms"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.FieldGroup" Qualifier="QuickCreate">
+          <Record>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="SoldToParty"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Label" String="Customer Name"/>
+                  <PropertyValue Property="Value" Path="to_Customer/Customer"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="Label" String="Create Sales Order"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.FieldGroup" Qualifier="QuickView">
+          <Record>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="SoldToParty"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="CustomerContact"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="BillToParty"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="Label" String="Sales Order"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.FieldGroup" Qualifier="ShipTo">
+          <Record>
+            <PropertyValue Property="Data">
+              <Collection>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" Path="ShipToParty"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+                <Record Type="UI.DataField">
+                  <PropertyValue Property="Value" 
Path="to_ShipToParty/Address"/>
+                  <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.HeaderInfo">
+          <Record>
+            <PropertyValue Property="TypeName" String="Sales Order"/>
+            <PropertyValue Property="TypeNamePlural" String="Sales Orders"/>
+            <PropertyValue Property="Title">
+              <Record Type="UI.DataField">
+                <PropertyValue Property="Value" Path="SalesOrder"/>
+              </Record>
+            </PropertyValue>
+            <PropertyValue Property="Description">
+              <Record Type="UI.DataField">
+                <PropertyValue Property="Value" 
Path="to_Customer/CompanyName"/>
+              </Record>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.Identification">
+          <Collection>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Label" String="Sales Order"/>
+              <PropertyValue Property="Value" Path="SalesOrder"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataFieldForAction">
+              <PropertyValue Property="Label" String="Copy"/>
+              <PropertyValue Property="Action" 
String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTPCopy"/>
+              <PropertyValue Property="InvocationGrouping" 
EnumMember="UI.OperationGroupingType/Isolated"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Medium"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.LineItem">
+          <Collection>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="SalesOrder"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="SalesOrderOverallStatus"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataFieldForAction">
+              <PropertyValue Property="Label" String="Copy"/>
+              <PropertyValue Property="Action" 
String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTPCopy"/>
+              <PropertyValue Property="InvocationGrouping" 
EnumMember="UI.OperationGroupingType/Isolated"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/Medium"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="LastChangedDateTime"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="SoldToParty"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="CustomerContact"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="Quantity"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" 
Path="NetAmountInTransactionCurrency"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+          <Annotation Term="UI.Criticality" Path="abc"/>
+        </Annotation>
+        <Annotation Term="UI.PresentationVariant">
+          <Record>
+            <PropertyValue Property="SortOrder">
+              <Collection>
+                <Record Type="Common.SortOrderType">
+                  <PropertyValue Property="Property" 
PropertyPath="LastChangedDateTime"/>
+                  <PropertyValue Property="Descending" Bool="true"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="Visualizations">
+              <Collection>
+                <AnnotationPath>@UI.LineItem</AnnotationPath>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.SelectionFields">
+          <Collection>
+            <PropertyPath>SalesOrder</PropertyPath>
+            <PropertyPath>SalesOrderOverallStatus</PropertyPath>
+            <PropertyPath>LastChangedDateTime</PropertyPath>
+          </Collection>
+        </Annotation>
+        <Annotation Term="Common.SemanticObject" String="EPMSalesOrder"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/DraftUUID">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/HasActiveEntity">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/HasDraftEntity">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/IsActiveEntity">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/DraftEntityCreationDateTime">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/DraftEntityLastChangeDateTime">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/ParentDraftUUID">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/RootDraftUUID">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/Preparation_ac">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/Validation_ac">
+        <Annotation Term="UI.Hidden"/>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_I_QuantityUnitType/UnitOfMeasureISOCode">
+        <Annotation Term="UI.HiddenFilter"/>
+      </Annotations>
+      <Annotations Target="SEPMRA_SO_MAN2.SEPMRA_I_QuantityUnitType">
+        <Annotation Term="UI.HeaderInfo">
+          <Record>
+            <PropertyValue Property="TypeName" String="Quantity Unit"/>
+            <PropertyValue Property="TypeNamePlural" String="Quantity Units"/>
+            <PropertyValue Property="Title">
+              <Record Type="UI.DataField">
+                <PropertyValue Property="Value" Path="UnitOfMeasure"/>
+              </Record>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+        <Annotation Term="UI.Identification">
+          <Collection>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="UnitOfMeasure"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+        </Annotation>
+        <Annotation Term="UI.LineItem">
+          <Collection>
+            <Record Type="UI.DataField">
+              <PropertyValue Property="Value" Path="UnitOfMeasure"/>
+              <Annotation Term="UI.Importance" 
EnumMember="UI.ImportanceType/High"/>
+            </Record>
+          </Collection>
+          <Annotation Term="UI.Criticality" Path="abc"/>
+        </Annotation>
+      </Annotations>
+      <Annotations 
Target="SEPMRA_SO_MAN2.SEPMRA_I_SalesOrderAgeType/SalesOrder">
+        <Annotation Term="UI.HiddenFilter"/>
+        <Annotation Term="Common.SemanticObject" String="EPMSalesOrder"/>
+      </Annotations>
+    </Schema>
+  </edmx:DataServices>
+</edmx:Edmx>

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java
index 1efdaca..b24f82a 100644
--- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java
+++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java
@@ -92,6 +92,16 @@ public interface Edm {
   EdmEntityType getEntityType(FullQualifiedName name);
 
   /**
+   * Get entity type with annotations by full qualified name.
+   * <br/>
+   * See {@link EdmEntityType} for more information.
+   *
+   * @param name full qualified name of entity type
+   * @return {@link EdmEntityType}
+   */
+  EdmEntityType getEntityTypeWithAnnotations(FullQualifiedName name);
+  
+  /**
    * Get complex type by full qualified name..
    * <br/>
    * See {@link EdmComplexType} for more information.
@@ -102,6 +112,16 @@ public interface Edm {
   EdmComplexType getComplexType(FullQualifiedName name);
 
   /**
+   * Get complex type with annotations by full qualified name..
+   * <br/>
+   * See {@link EdmComplexType} for more information.
+   *
+   * @param name full qualified name of complex type
+   * @return {@link EdmComplexType}
+   */
+  EdmComplexType getComplexTypeWithAnnotations(FullQualifiedName name);
+  
+  /**
    * Get unbound Action by full qualified name.
    *
    * @param actionName must not be null

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java
index 48c2078..dc7df5e 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java
@@ -58,4 +58,11 @@ public interface EdmBindingTarget extends EdmNamed, 
EdmAnnotatable, EdmMappable
    * @return {@link EdmEntityType}
    */
   EdmEntityType getEntityType();
+  
+  /**
+   * Get the entity type with annotations defined in external file.
+   *
+   * @return {@link EdmEntityType}
+   */
+  EdmEntityType getEntityTypeWithAnnotations();
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmEntityContainer.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmEntityContainer.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmEntityContainer.java
index f84b9ed..c65eae2 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmEntityContainer.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmEntityContainer.java
@@ -76,6 +76,14 @@ public interface EdmEntityContainer extends EdmNamed, 
EdmAnnotatable {
    * @return returns all entity sets for this container.
    */
   List<EdmEntitySet> getEntitySets();
+  
+  /**
+   * This method <b>DOES NOT</b> support lazy loading
+   *
+   * @return returns all entity sets for this container with 
+   * annotations defined in external file.
+   */
+  List<EdmEntitySet> getEntitySetsWithAnnotations();
 
   /**
    * This method <b>DOES NOT</b> support lazy loading

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmProperty.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmProperty.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmProperty.java
index a351e48..6d4baec 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmProperty.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmProperty.java
@@ -75,4 +75,11 @@ public interface EdmProperty extends EdmElement, 
EdmMappable, EdmAnnotatable {
    * @return the default value as a String or null if not specified
    */
   String getDefaultValue();
+  
+  /**
+   * See {@link EdmType} for more information about possible types.
+   *
+   * @return {@link EdmType}
+   */
+  EdmType getTypeWithAnnotations();
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlAnnotation.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlAnnotation.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlAnnotation.java
index eb551aa..e24671b 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlAnnotation.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlAnnotation.java
@@ -103,4 +103,51 @@ public class CsdlAnnotation extends CsdlAbstractEdmItem 
implements CsdlAnnotatab
   public List<CsdlAnnotation> getAnnotations() {
     return annotations;
   }
+  
+  @Override
+  public boolean equals (Object obj) {
+    if (obj == null) {
+      return false;
+    }
+    if (!(obj instanceof CsdlAnnotation)) {
+      return false;
+    }
+    CsdlAnnotation csdlAnnot = (CsdlAnnotation) obj;
+    return (this.getTerm() == null ? csdlAnnot.getTerm() == null : 
+      this.getTerm().equals(csdlAnnot.getTerm()))
+        && (this.getQualifier() == null ? csdlAnnot.getQualifier() == null :
+          this.getQualifier().equals(csdlAnnot.getQualifier()))
+        && (this.getExpression() == null ? csdlAnnot.getExpression() == null :
+          this.getExpression().equals(csdlAnnot.getExpression()))
+        && (this.getAnnotations() == null ? csdlAnnot.getAnnotations() == null 
: 
+          checkAnnotations(csdlAnnot.getAnnotations()));
+  }
+  
+  private boolean checkAnnotations(List<CsdlAnnotation> csdlAnnots) {
+    if (csdlAnnots == null) {
+      return false;
+    }
+    if (this.getAnnotations().size() == csdlAnnots.size()) {
+      for (int i = 0; i < this.getAnnotations().size(); i++) {
+        if (!this.getAnnotations().get(i).equals(csdlAnnots.get(i))) {
+          return false;
+        }
+      }
+    } else {
+      return false;
+    }
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    final int prime = 31;
+    int result = 1;
+    result = prime * result + ((term == null) ? 0 : term.hashCode());
+    result = prime * result + ((qualifier == null) ? 0 : qualifier.hashCode());
+    result = prime * result + ((annotationExpression == null) ? 0 : 
+      annotationExpression.hashCode());
+    result = prime * result + ((annotations == null) ? 0 : 
annotations.hashCode());
+    return result;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlAnnotationPath.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlAnnotationPath.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlAnnotationPath.java
index 1a9935a..0efad60 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlAnnotationPath.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlAnnotationPath.java
@@ -37,4 +37,26 @@ public class CsdlAnnotationPath extends 
CsdlDynamicExpression {
   public String getValue() {
     return value;
   }
+  
+  @Override
+  public boolean equals (Object obj) {
+    if (obj == null) {
+      return false;
+    }
+    if (!(obj instanceof CsdlAnnotationPath)) {
+      return false;
+    }
+    CsdlAnnotationPath csdlAnnotPath = (CsdlAnnotationPath) obj;
+     
+    return this.getValue() == null ? csdlAnnotPath.getValue() == null : 
+      this.getValue().equals(csdlAnnotPath.getValue());
+  }
+  
+  @Override
+  public int hashCode() {
+    final int prime = 31;
+    int result = 1;
+    result = prime * result + ((value == null) ? 0 : value.hashCode());
+    return result;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlApply.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlApply.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlApply.java
index 8bfb596..929165b 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlApply.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlApply.java
@@ -73,4 +73,63 @@ public class CsdlApply extends CsdlDynamicExpression 
implements CsdlAnnotatable
     this.parameters = parameters;
     return this;
   }
+  
+  @Override
+  public boolean equals (Object obj) {
+    if (obj == null) {
+      return false;
+    }
+    if (!(obj instanceof CsdlApply)) {
+      return false;
+    }
+    CsdlApply annotApply = (CsdlApply) obj;
+    return (this.getFunction() == null ? annotApply.getFunction() == null :
+      this.getFunction().equals(annotApply.getFunction()))
+      && (this.getParameters() == null ? annotApply.getParameters() == null :
+        checkParamaters(annotApply.getParameters()))
+        && (this.getAnnotations() == null ? annotApply.getAnnotations() == 
null :
+          checkAnnotations(annotApply.getAnnotations()));
+  }
+  
+  private boolean checkAnnotations(List<CsdlAnnotation> annotApplyannotations) 
{
+    if (annotApplyannotations == null) {
+      return false;
+    }
+    if (this.getAnnotations().size() == annotApplyannotations.size()) {
+      for (int i = 0; i < this.getAnnotations().size(); i++) {
+        if 
(!this.getAnnotations().get(i).equals(annotApplyannotations.get(i))) {
+          return false;
+        }
+      }
+    } else {
+      return false;
+    }
+    return true;
+  }
+
+  private boolean checkParamaters(List<CsdlExpression> annotApplyParams) {
+    if (annotApplyParams == null) {
+      return false;
+    }
+    if (this.getParameters().size() == annotApplyParams.size()) {
+      for (int i = 0; i < this.getParameters().size(); i++) {
+        if (!this.getParameters().get(i).equals(annotApplyParams.get(i))) {
+          return false;
+        }
+      }
+    } else {
+      return false;
+    }
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    final int prime = 31;
+    int result = 1;
+    result = prime * result + ((function == null) ? 0 : function.hashCode());
+    result = prime * result + ((parameters == null) ? 0 : 
parameters.hashCode());
+    result = prime * result + ((annotations == null) ? 0 : 
annotations.hashCode());
+    return result;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlCast.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlCast.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlCast.java
index d3b650c..806718b 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlCast.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlCast.java
@@ -126,4 +126,59 @@ public class CsdlCast extends CsdlDynamicExpression 
implements CsdlAnnotatable {
     this.value = value;
     return this;
   }
+  
+  @Override
+  public boolean equals (Object obj) {
+    if (obj == null) {
+      return false;
+    }
+    if (!(obj instanceof CsdlCast)) {
+      return false;
+    }
+    CsdlCast csdlCast = (CsdlCast) obj;
+    return (this.getValue() == null ? csdlCast.getValue() == null :
+      this.getValue().equals(csdlCast.getValue()))
+        && (this.getType() == null ? csdlCast.getType() == null :
+        this.getType().equals(csdlCast.getType()))
+        && (this.getMaxLength() == null ? csdlCast.getMaxLength() == null :
+          this.getMaxLength().equals(csdlCast.getMaxLength()))
+        && (this.getPrecision() == null ? csdlCast.getPrecision() == null :
+          this.getPrecision().equals(csdlCast.getPrecision()))
+        && (this.getScale() == null ? csdlCast.getScale() == null :
+         this.getScale().equals(csdlCast.getScale()))
+        && (this.getSrid() == null ? csdlCast.getSrid() == null :
+          
String.valueOf(this.getSrid()).equals(String.valueOf(csdlCast.getSrid())))
+        && (this.getAnnotations() == null ? csdlCast.getAnnotations() == null :
+          checkAnnotations(csdlCast.getAnnotations()));
+  }
+  
+  private boolean checkAnnotations(List<CsdlAnnotation> csdlCastAnnotations) {
+    if (csdlCastAnnotations == null) {
+      return false;
+    }
+    if (this.getAnnotations().size() == csdlCastAnnotations.size()) {
+      for (int i = 0; i < this.getAnnotations().size(); i++) {
+        if (!this.getAnnotations().get(i).equals(csdlCastAnnotations.get(i))) {
+          return false;
+        }
+      }
+    } else {
+      return false;
+    }
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    final int prime = 31;
+    int result = 1;
+    result = prime * result + ((type == null) ? 0 : type.hashCode());
+    result = prime * result + ((maxLength == null) ? 0 : maxLength.hashCode());
+    result = prime * result + ((precision == null) ? 0 : precision.hashCode());
+    result = prime * result + ((scale == null) ? 0 : scale.hashCode());
+    result = prime * result + ((srid == null) ? 0 : srid.hashCode());
+    result = prime * result + ((value == null) ? 0 : value.hashCode());
+    result = prime * result + ((annotations == null) ? 0 : 
annotations.hashCode());
+    return result;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlCollection.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlCollection.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlCollection.java
index 285508b..926c660 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlCollection.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlCollection.java
@@ -46,4 +46,41 @@ public class CsdlCollection extends CsdlDynamicExpression {
     this.items = items;
     return this;
   }
+  
+  @Override
+  public boolean equals (Object obj) {
+    if (obj == null) {
+      return false;
+    }
+    if (!(obj instanceof CsdlCollection)) {
+      return false;
+    }
+    CsdlCollection annotColl = (CsdlCollection) obj;
+    return (this.getItems() == null ? annotColl.getItems() == null :
+      checkItems(annotColl.getItems()));
+  }
+  
+  private boolean checkItems(List<CsdlExpression> annotCollItems) {
+    if (annotCollItems == null) {
+      return false;
+    }
+    if (this.getItems().size() == annotCollItems.size()) {
+      for (int i = 0; i < this.getItems().size(); i++) {
+        if (!this.getItems().get(i).equals(annotCollItems.get(i))) {
+          return false;
+        }
+      }
+    } else {
+      return false;
+    }
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    final int prime = 31;
+    int result = 1;
+    result = prime * result + ((items == null) ? 0 : items.hashCode());
+    return result;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlConstantExpression.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlConstantExpression.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlConstantExpression.java
index e8090e0..23f1a84 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlConstantExpression.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlConstantExpression.java
@@ -128,4 +128,28 @@ public class CsdlConstantExpression extends CsdlExpression 
{
     return this;
   }
 
+  @Override
+  public boolean equals (Object obj) {
+    if (obj == null) {
+      return false;
+    }
+    if (!(obj instanceof CsdlConstantExpression)) {
+      return false;
+    }
+    CsdlConstantExpression csdlConstExp = (CsdlConstantExpression) obj;
+    
+    return (this.getValue() == null ? csdlConstExp.getValue() == null :
+      this.getValue().equals(csdlConstExp.getValue()))
+        && (this.getType() == null ? csdlConstExp.getType() == null :
+          this.getType().equals(csdlConstExp.getType()));
+  }
+  
+  @Override
+  public int hashCode() {
+    final int prime = 31;
+    int result = 1;
+    result = prime * result + ((type == null) ? 0 : type.hashCode());
+    result = prime * result + ((value == null) ? 0 : value.hashCode());
+    return result;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlIf.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlIf.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlIf.java
index fa191b3..789fdc4 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlIf.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlIf.java
@@ -90,4 +90,50 @@ public class CsdlIf extends CsdlDynamicExpression implements 
CsdlAnnotatable {
     this._else = _else;
     return this;
   }
+  
+  @Override
+  public boolean equals (Object obj) {
+    if (obj == null) {
+      return false;
+    }
+    if (!(obj instanceof CsdlIf)) {
+      return false;
+    }
+    CsdlIf csdlIf = (CsdlIf) obj;
+    return (this.getGuard() == null ? csdlIf.getGuard() == null :
+      this.getGuard().equals(csdlIf.getGuard()))
+        && (this.getThen() == null ? csdlIf.getThen() == null :
+          this.getThen().equals(csdlIf.getThen()))
+        && (this.getElse() == null ? csdlIf.getElse() == null :
+          this.getElse().equals(csdlIf.getElse()))
+        && (this.getAnnotations() == null ? csdlIf.getAnnotations() == null :
+            checkAnnotations(csdlIf.getAnnotations()));
+  }
+  
+  private boolean checkAnnotations(List<CsdlAnnotation> csdlIfAnnotations) {
+    if (csdlIfAnnotations == null) {
+      return false;
+    }
+    if (this.getAnnotations().size() == csdlIfAnnotations.size()) {
+      for (int i = 0; i < this.getAnnotations().size(); i++) {
+        if (!this.getAnnotations().get(i).equals(csdlIfAnnotations.get(i))) {
+          return false;
+        }
+      }
+    } else {
+      return false;
+    }
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    final int prime = 31;
+    int result = 1;
+    result = prime * result + ((guard == null) ? 0 : guard.hashCode());
+    result = prime * result + ((_then == null) ? 0 : _then.hashCode());
+    result = prime * result + ((_else == null) ? 0 : _else.hashCode());
+    result = prime * result + ((annotations == null) ? 0 : 
annotations.hashCode());
+    return result;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlIsOf.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlIsOf.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlIsOf.java
index 5785f6b..0c0022f 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlIsOf.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlIsOf.java
@@ -126,4 +126,58 @@ return this;
     return this;
   }
 
+  @Override
+  public boolean equals (Object obj) {
+    if (obj == null) {
+      return false;
+    }
+    if (!(obj instanceof CsdlIsOf)) {
+      return false;
+    }
+    CsdlIsOf csdlIsOf = (CsdlIsOf) obj;
+    return (this.getType() == null ? csdlIsOf.getType() == null :
+      this.getType().equals(csdlIsOf.getType()))
+        && (this.getMaxLength() == null ? csdlIsOf.getMaxLength() == null :
+          this.getMaxLength().equals(csdlIsOf.getMaxLength()))
+        && (this.getPrecision() == null ? csdlIsOf.getPrecision() == null : 
+          this.getPrecision().equals(csdlIsOf.getPrecision()))
+        && (this.getScale() == null ? csdlIsOf.getScale() == null :
+          this.getScale().equals(csdlIsOf.getScale()))
+        && (this.getSrid() == null ? csdlIsOf.getSrid() == null :
+          this.getSrid().equals(csdlIsOf.getSrid()))
+        && (this.getValue() == null ? csdlIsOf.getValue() == null :
+          this.getValue().equals(csdlIsOf.getValue()))
+        && (this.getAnnotations() == null ? csdlIsOf.getAnnotations() == null :
+            checkAnnotations(csdlIsOf.getAnnotations()));
+  }
+  
+  private boolean checkAnnotations(List<CsdlAnnotation> csdlIsOfannot) {
+    if (csdlIsOfannot == null) {
+      return false;
+    }
+    if (this.getAnnotations().size() == csdlIsOfannot.size()) {
+      for (int i = 0; i < this.getAnnotations().size(); i++) {
+        if (!this.getAnnotations().get(i).equals(csdlIsOfannot.get(i))) {
+          return false;
+        }
+      }
+    } else {
+      return false;
+    }
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    final int prime = 31;
+    int result = 1;
+    result = prime * result + ((type == null) ? 0 : type.hashCode());
+    result = prime * result + ((maxLength == null) ? 0 : maxLength.hashCode());
+    result = prime * result + ((precision == null) ? 0 : precision.hashCode());
+    result = prime * result + ((scale == null) ? 0 : scale.hashCode());
+    result = prime * result + ((srid == null) ? 0 : srid.hashCode());
+    result = prime * result + ((value == null) ? 0 : value.hashCode());
+    result = prime * result + ((annotations == null) ? 0 : 
annotations.hashCode());
+    return result;
+  }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlLabeledElement.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlLabeledElement.java
 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlLabeledElement.java
index 2c31698..022c421 100644
--- 
a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlLabeledElement.java
+++ 
b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/annotation/CsdlLabeledElement.java
@@ -69,4 +69,48 @@ public class CsdlLabeledElement extends 
CsdlDynamicExpression implements CsdlAnn
     this.value = value;
     return this;
   }
+  
+  @Override
+  public boolean equals (Object obj) {
+    if (obj == null) {
+      return false;
+    }
+    if (!(obj instanceof CsdlLabeledElement)) {
+      return false;
+    }
+    CsdlLabeledElement csdlLabelledEle = (CsdlLabeledElement) obj;
+    return (this.getName() == null ? csdlLabelledEle.getName() == null :
+      this.getName().equals(csdlLabelledEle.getName()))
+        && (this.getValue() == null ? csdlLabelledEle.getValue() == null :
+          this.getValue().equals(csdlLabelledEle.getValue()))
+        && (this.getAnnotations() == null ? csdlLabelledEle.getAnnotations() 
== null :
+            checkAnnotations(csdlLabelledEle.getAnnotations()));
+  }
+  
+  private boolean checkAnnotations(List<CsdlAnnotation> 
csdlLabelledEleAnnotations) {
+    if (csdlLabelledEleAnnotations == null) {
+      return false;
+    }
+    if (this.getAnnotations().size() == csdlLabelledEleAnnotations.size()) {
+      for (int i = 0; i < this.getAnnotations().size() ; i++) {
+        if (!this.getAnnotations().get(i).equals(
+            csdlLabelledEleAnnotations.get(i))) {
+          return false;
+        }
+      }
+    } else {
+      return false;
+    }
+    return true;
+  }
+
+  @Override
+  public int hashCode() {
+    final int prime = 31;
+    int result = 1;
+    result = prime * result + ((name == null) ? 0 : name.hashCode());
+    result = prime * result + ((value == null) ? 0 : value.hashCode());
+    result = prime * result + ((annotations == null) ? 0 : 
annotations.hashCode());
+    return result;
+  }
 }

Reply via email to