[ofbiz-framework] branch trunk updated: Improved: All the service level error messages for missing required field for party component. (OFBIZ-7735) Thanks Ratnesh Upadhyay for reporting and Kirti Arora for providing the updated patch.

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[ofbiz-framework] branch trunk updated: Improved: All the service level error messages for missing required field for party component. (OFBIZ-7735) Thanks Ratnesh Upadhyay for reporting and Kirti Arora for providing the updated patch.

surajk
This is an automated email from the ASF dual-hosted git repository.

surajk pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/trunk by this push:
     new d21bb75  Improved: All the service level error messages for missing required field for party component. (OFBIZ-7735) Thanks Ratnesh Upadhyay for reporting and Kirti Arora for providing the updated patch.
d21bb75 is described below

commit d21bb752f0b1e1691f67b3205fbcb84ddaccf28e
Author: Suraj Khurana <[hidden email]>
AuthorDate: Sat Apr 25 18:50:22 2020 +0530

    Improved: All the service level error messages for missing required field for party component.
    (OFBIZ-7735)
    Thanks Ratnesh Upadhyay for reporting and Kirti Arora for providing the updated patch.
---
 applications/party/config/PartyErrorUiLabels.xml |  72 +++++++
 applications/party/servicedef/services.xml       | 228 +++++++++++++++++++----
 applications/party/servicedef/services_view.xml  |  42 ++++-
 3 files changed, 297 insertions(+), 45 deletions(-)

diff --git a/applications/party/config/PartyErrorUiLabels.xml b/applications/party/config/PartyErrorUiLabels.xml
index b01c812..86db4ae 100644
--- a/applications/party/config/PartyErrorUiLabels.xml
+++ b/applications/party/config/PartyErrorUiLabels.xml
@@ -53,6 +53,78 @@
     <property key="PartyRequiredFieldMissingWorkEffortTypeId">
         <value xml:lang="en">Required Field Missing : WorkEffort Type Id.</value>
     </property>
+    <property key="PartyRequiredFieldMissingAddress">
+            <value xml:lang="en">Required Field Missing : Address</value>
+        </property>
+    <property key="PartyRequiredFieldMissingChildRoleTypeIdList">
+        <value xml:lang="en">Required Field Missing : ChildRole Type Id List</value>
+    </property>
+    <property key="PartyRequiredFieldMissingContactMechId">
+        <value xml:lang="en">Required Field Missing : Contact Mech Id</value>
+    </property>
+    <property key="PartyRequiredFieldMissingContactMechPurposeTypeId">
+        <value xml:lang="en">Required Field Missing : Contact Mech Purpose Type Id</value>
+    </property>
+    <property key="PartyRequiredFieldMissingContactMechTypeId">
+        <value xml:lang="en">Required Field Missing : Contact Mech Type Id</value>
+    </property>
+    <property key="PartyRequiredFieldMissingEmailAddress">
+        <value xml:lang="en">Required Field Missing : Email Address</value>
+    </property>
+    <property key="PartyRequiredFieldMissingFirstName">
+        <value xml:lang="en">Required Field Missing : First Name</value>
+    </property>
+    <property key="PartyRequiredFieldMissingLastName">
+        <value xml:lang="en">Required Field Missing : Last Name</value>
+    </property>
+    <property key="PartyRequiredFieldMissingLookupResult">
+        <value xml:lang="en">Required Field Missing : Lookup Result</value>
+    </property>
+    <property key="PartyRequiredFieldMissingNewUserLogin">
+        <value xml:lang="en">Required Field Missing : New User Login</value>
+    </property>
+    <property key="PartyRequiredFieldMissingOldContactMechId">
+        <value xml:lang="en">Required Field Missing : Old Contact Mech Id</value>
+    </property>
+    <property key="PartyRequiredFieldMissingOrganizationPartyId">
+        <value xml:lang="en">Required Field Missing : Organization Party Id</value>
+    </property>
+    <property key="PartyRequiredFieldMissingParentOrganizationPartyIdList">
+        <value xml:lang="en">Required Field Missing : Organization Party Id List</value>
+    </property>
+    <property key="PartyRequiredFieldMissingPartyId">
+        <value xml:lang="en">Required Field Missing : Party Id</value>
+    </property>
+    <property key="PartyRequiredFieldMissingPartyIdFrom">
+        <value xml:lang="en">Required Field Missing : Party Id From</value>
+    </property>
+    <property key="PartyRequiredFieldMissingPartyIdTo">
+        <value xml:lang="en">Required Field Missing : Party Id To</value>
+    </property>
+    <property key="PartyRequiredFieldMissingPartyInvitationId">
+        <value xml:lang="en">Required Field Missing : Party Invitation Id</value>
+    </property>
+    <property key="PartyRequiredFieldMissingProductStoreId">
+        <value xml:lang="en">Required Field Missing : Product Store Id</value>
+    </property>
+    <property key="PartyRequiredFieldMissingRelatedPartyIdList">
+        <value xml:lang="en">Required Field Missing : Related Party Id List</value>
+    </property>
+    <property key="PartyRequiredFieldMissingRoleTypeId">
+        <value xml:lang="en">Required Field Missing : Role Type Id</value>
+    </property>
+    <property key="PartyRequiredFieldMissingStatusId">
+        <value xml:lang="en">Required Field Missing : Status Id</value>
+    </property>
+    <property key="PartyRequiredFieldMissingTelno">
+        <value xml:lang="en">Required Field Missing : Tel no.</value>
+    </property>
+    <property key="PartyRequiredFieldMissingUserLoginId">
+        <value xml:lang="en">Required Field Missing : User Login Id</value>
+    </property>
+    <property key="PartyRequiredFieldMissingVerifyHash">
+        <value xml:lang="en">Required Field Missing : Verify Hash</value>
+    </property>
     <property key="PartyUploadedFileDataNotFound">
         <value xml:lang="en">Uploaded file data not found</value>
     </property>
diff --git a/applications/party/servicedef/services.xml b/applications/party/servicedef/services.xml
index fc71f8e..39fe18c 100644
--- a/applications/party/servicedef/services.xml
+++ b/applications/party/servicedef/services.xml
@@ -85,7 +85,11 @@ under the License.
         <auto-attributes entity-name="Person" mode="IN" include="nonpk" optional="true"/>
         <auto-attributes entity-name="Party" mode="IN" include="nonpk" optional="true"/>
         <attribute name="partyId" type="String" mode="INOUT" optional="true" entity-name="Person"/>
-        <attribute name="newUserLogin" type="Map" mode="OUT" optional="false"/>
+        <attribute name="newUserLogin" type="Map" mode="OUT" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingNewUserLogin"/>
+            </type-validate>
+        </attribute>
     </service>
     <service name="updatePerson" engine="java" default-entity-name="Person"
             location="org.apache.ofbiz.party.party.PartyServices" invoke="updatePerson" auth="true">
@@ -144,7 +148,11 @@ under the License.
     <service name="getPartyNameForDate" engine="groovy"
         location="component://party/groovyScripts/party/PartyServices.groovy" invoke="getPartyNameForDate" auth="true">
         <description>Get Party Name For Date</description>
-        <attribute name="partyId" type="String" mode="IN" optional="false"/>
+        <attribute name="partyId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyId"/>
+            </type-validate>
+        </attribute>
         <attribute name="compareDate" type="Timestamp" mode="IN" optional="true"><!-- defaults to now --></attribute>
         <attribute name="lastNameFirst" type="String" mode="IN" optional="true"><!-- Y or N, defaults to N --></attribute>
         <attribute name="groupName" type="String" mode="OUT" optional="true"/>
@@ -242,7 +250,11 @@ under the License.
         </deprecated>
         <attribute name="firstName" type="String" form-display="true" form-label="First name" mode="IN" optional="true"/>
         <attribute name="lastName" type="String" form-display="true" form-label="Last name" mode="IN" optional="true"/>
-        <attribute name="lookupResult" type="List" mode="OUT" optional="false"/>
+        <attribute name="lookupResult" type="List" mode="OUT" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingLookupResult"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <service name="findPartiesById" engine="java"  auth="true"
@@ -272,24 +284,44 @@ under the License.
     <service name="ensurePartyRole" engine="simple"
             location="component://party/minilang/party/PartySimpleMethods.xml" invoke="ensureNaPartyRole" auth="false">
         <description>Ensure that the party is in the specified role.</description>
-        <attribute name="partyId" type="String" mode="IN" optional="false"/>
-        <attribute name="roleTypeId" type="String" mode="IN" optional="false"/>
+        <attribute name="partyId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="roleTypeId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingRoleTypeId"/>
+            </type-validate>
+        </attribute>
     </service>
     <service name="ensureNaPartyRole" engine="simple"
             location="component://party/minilang/party/PartySimpleMethods.xml" invoke="ensureNaPartyRole" auth="false">
         <description>Ensure that the party is in the _NA_ role.</description>
-        <attribute name="partyId" type="String" mode="IN" optional="false"/>
+        <attribute name="partyId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyId"/>
+            </type-validate>
+        </attribute>
     </service>
     <service name="ensurePartyRoleFrom" engine="simple"
             location="component://party/minilang/party/PartySimpleMethods.xml" invoke="ensureNaPartyRole" auth="true">
         <description>Ensure that the party indicate by partyIdFrom is in the roleTypeIdFrom specifc role. If roleTypeIdFrom isn't present use _NA_</description>
-        <attribute name="partyIdFrom" type="String" mode="IN" optional="false"/>
+        <attribute name="partyIdFrom" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyIdFrom"/>
+            </type-validate>
+        </attribute>
         <attribute name="roleTypeIdFrom" type="String" mode="IN" optional="true"/>
     </service>
     <service name="ensurePartyRoleTo" engine="simple"
             location="component://party/minilang/party/PartySimpleMethods.xml" invoke="ensureNaPartyRole" auth="true">
         <description>Ensure that the party indicate by partyIdTo is in the roleTypeIdTo specific role. If roleTypeIdTo isn't present use _NA_</description>
-        <attribute name="partyIdTo" type="String" mode="IN" optional="false"/>
+        <attribute name="partyIdTo" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyIdTo"/>
+            </type-validate>
+        </attribute>
         <attribute name="roleTypeIdTo" type="String" mode="IN" optional="true"/>
     </service>
 
@@ -395,8 +427,16 @@ under the License.
         <description>Update a PartyContactMech</description>
         <permission-service service-name="partyContactMechPermissionCheck" main-action="UPDATE"/>
         <auto-attributes entity-name="PartyContactMech" include="all" mode="IN" optional="true"/>
-        <attribute name="contactMechId" type="String" mode="INOUT" optional="false"/>
-        <attribute name="contactMechTypeId" type="String" mode="IN" optional="false"/>
+        <attribute name="contactMechId" type="String" mode="INOUT" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingContactMechId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="contactMechTypeId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingContactMechTypeId"/>
+            </type-validate>
+        </attribute>
         <attribute name="infoString" type="String" mode="IN" optional="true"/>
         <attribute name="newContactMechId" type="String" mode="IN" optional="true"/>
     </service>
@@ -405,13 +445,21 @@ under the License.
         <description>Delete a PartyContactMech</description>
         <permission-service service-name="partyContactMechPermissionCheck" main-action="DELETE"/>
         <attribute name="partyId" type="String" mode="IN" optional="true"/>
-        <attribute name="contactMechId" type="String" mode="IN" optional="false"/>
+        <attribute name="contactMechId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingContactMechId"/>
+            </type-validate>
+        </attribute>
     </service>
     <!-- Party ContachMech reverse find -->
     <service name="findPartyFromEmailAddress" engine="simple"
         location="component://party/minilang/contact/PartyContactMechServices.xml" invoke="findPartyFromEmailAddress" auth="true">
         <description>Find the partyId/contactMechId for a specific email address, if not found do not return a value</description>
-        <attribute name="address" type="String" mode="IN" optional="false"/>
+        <attribute name="address" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingAddress"/>
+            </type-validate>
+        </attribute>
         <attribute name="caseInsensitive" type="String" mode="IN" optional="true"/>
         <attribute name="personal" type="String" mode="IN" optional="true"/><!-- field not used -->
         <attribute name="fromDate" type="Timestamp" mode="IN" optional="true"/>
@@ -421,7 +469,11 @@ under the License.
     <service name="findPartyFromTelephone" engine="simple"
         location="component://party/minilang/contact/PartyContactMechServices.xml" invoke="findPartyFromTelephone" auth="true">
         <description>Find the partyId/contactMechId for a specific telephone number, if not found do not return a value</description>
-        <attribute name="telno" type="String" mode="IN" optional="false"/>
+        <attribute name="telno" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingTelno"/>
+            </type-validate>
+        </attribute>
         <attribute name="partyId" type="String" mode="OUT" optional="true"/>
         <attribute name="contactMechId" type="String" mode="OUT" optional="true"/>
     </service>
@@ -431,7 +483,11 @@ under the License.
             Find the partyId/contactMechId for a specific telephone number, if not found do not return a value.
             Same than above but keep the number complete internally.
         </description>
-        <attribute name="telno" type="String" mode="IN" optional="false"/>
+        <attribute name="telno" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingTelno"/>
+            </type-validate>
+        </attribute>
         <attribute name="partyId" type="String" mode="OUT" optional="true"/>
         <attribute name="contactMechId" type="String" mode="OUT" optional="true"/>
     </service>
@@ -443,7 +499,11 @@ under the License.
         <auto-attributes entity-name="PostalAddress" include="nonpk" mode="IN" optional="true"/>
         <attribute name="paymentMethodId" type="String" mode="IN" optional="true"/>
         <attribute name="contactMechPurposeTypeId" type="String" mode="IN" optional="true"/>
-        <attribute name="contactMechId" type="String" mode="OUT" optional="false"/>
+        <attribute name="contactMechId" type="String" mode="OUT" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingContactMechId"/>
+            </type-validate>
+        </attribute>
         <attribute name="latitude" type="String" mode="IN" optional="true"/>
         <attribute name="longitude" type="String" mode="IN" optional="true"/>
         <override name="address1" optional="false"/>
@@ -494,9 +554,21 @@ under the License.
         <description>Update an Email Address</description>
         <permission-service service-name="partyContactMechPermissionCheck" main-action="UPDATE"/>
         <auto-attributes entity-name="PartyContactMech" include="all" mode="IN" optional="true"/>
-        <attribute name="contactMechId" type="String" mode="INOUT" optional="false"/> <!-- the out paramater is the id of the new address -->
-        <attribute name="emailAddress" type="String" mode="IN" optional="false"/>
-        <attribute name="oldContactMechId" type="String" mode="OUT" optional="false"/> <!-- this is the id of the old address -->
+        <attribute name="contactMechId" type="String" mode="INOUT" optional="false"> <!-- the out paramater is the id of the new address -->
+            <type-validate>
+                    <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingContactMechId"/>
+            </type-validate>
++        </attribute>
++        <attribute name="emailAddress" type="String" mode="IN" optional="false">
++            <type-validate>
++                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingEmailAddress"/>
++            </type-validate>
++        </attribute>
++        <attribute name="oldContactMechId" type="String" mode="OUT" optional="false">
++            <type-validate>
++                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingOldContactMechId"/>
++            </type-validate>
++        </attribute>
     </service>
     <service name="copyPartyContactMechs" engine="java"
         location="org.apache.ofbiz.party.contact.ContactMechServices" invoke="copyPartyContactMechs" auth="true">
@@ -966,8 +1038,16 @@ under the License.
     <service name="getPartyEmail" engine="groovy"
         location="component://party/groovyScripts/party/PartyServices.groovy" invoke="getPartyEmail" auth="false">
         <description>Get the main party Email address</description>
-        <attribute name="partyId" type="String" mode="IN" optional="false"/>
-        <attribute name="contactMechPurposeTypeId" type="String" mode="IN" optional="false" default-value="PRIMARY_EMAIL"/>
+        <attribute name="partyId" type="String" mode="IN" optional="false">
++                <type-validate>
++                    <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyId"/>
++                </type-validate>
++            </attribute>
++        <attribute name="contactMechPurposeTypeId" type="String" mode="IN" optional="false" default-value="PRIMARY_EMAIL">
++            <type-validate>
++                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingContactMechPurposeTypeId"/>
++            </type-validate>
++        </attribute>
         <attribute name="emailAddress" type="String" mode="OUT" optional="true"/>
         <attribute name="contactMechId" type="String" mode="OUT" optional="true"/>
     </service>
@@ -987,7 +1067,11 @@ under the License.
     <service name="getPartyPostalAddress" engine="groovy"
         location="component://party/groovyScripts/party/PartyServices.groovy" invoke="getPartyPostalAddress" auth="false">
         <description>Get the party postal address</description>
-        <attribute name="partyId" type="String" mode="IN" optional="false"/>
+        <attribute name="partyId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyId"/>
+            </type-validate>
+        </attribute>
         <attribute name="contactMechPurposeTypeId" type="String" mode="INOUT" optional="true"/>
         <attribute name="contactMechId" type="String" mode="OUT" optional="true"/>
         <attribute name="address1" type="String" mode="OUT" optional="true"/>
@@ -1022,9 +1106,21 @@ under the License.
     </service>
     <service name="sendCreatePartyEmailNotification" engine="groovy"
             location="component://party/groovyScripts/party/PartyServices.groovy" invoke="sendCreatePartyEmailNotification" auth="false">
-        <attribute name="partyId" type="String" mode="IN" optional="false"/>
-        <attribute name="emailAddress" type="String" mode="IN" optional="false"/>
-        <attribute name="productStoreId" type="String" mode="IN" optional="false"/>
+        <attribute name="partyId" type="String" mode="IN" optional="false">
++            <type-validate>
++                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyId"/>
++            </type-validate>
++        </attribute>
++        <attribute name="emailAddress" type="String" mode="IN" optional="false">
++            <type-validate>
++                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingEmailAddress"/>
++            </type-validate>
++        </attribute>
++        <attribute name="productStoreId" type="String" mode="IN" optional="false">
++            <type-validate>
++                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingProductStoreId"/>
++            </type-validate>
++        </attribute>
     </service>
 
     <!-- Email address verification services-->
@@ -1036,11 +1132,19 @@ under the License.
     </service>
     <service name="sendVerifyEmailAddressNotification" engine="groovy"
              location="component://party/groovyScripts/contact/ContactMechServices.groovy" invoke="sendVerifyEmailAddressNotification">
-        <attribute name="emailAddress" type="String" mode="IN" optional="false"/>
+        <attribute name="emailAddress" type="String" mode="IN" optional="false">
++            <type-validate>
++                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingEmailAddress"/>
++            </type-validate>
++        </attribute>
     </service>
     <service name="verifyEmailAddress" engine="groovy"
              location="component://party/groovyScripts/contact/ContactMechServices.groovy" invoke="verifyEmailAddress">
-        <attribute name="verifyHash" type="String" mode="IN" optional="false"/>
+        <attribute name="verifyHash" type="String" mode="IN" optional="false">
++            <type-validate>
++                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingVerifyHash"/>
++            </type-validate>
++        </attribute>
     </service>
 
     <!-- Party Invitation Services -->
@@ -1085,13 +1189,25 @@ under the License.
     <service name="acceptPartyInvitation" engine="groovy"
             location="component://party/groovyScripts/party/PartyInvitationServices.groovy" invoke="acceptPartyInvitation">
         <permission-service service-name="accAndDecPartyInvitationPermissionCheck"/>
-        <attribute name="partyInvitationId" type="String" mode="IN"/>
-        <attribute name="partyId" type="String" mode="IN"/>
+        <attribute name="partyInvitationId" type="String" mode="IN" optional="false">
++            <type-validate>
++                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyInvitationId"/>
++            </type-validate>
++        </attribute>
++        <attribute name="partyId" type="String" mode="IN" optional="false">
++            <type-validate>
++                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyId"/>
++            </type-validate>
++        </attribute>
     </service>
     <service name="declinePartyInvitation" engine="groovy"
             location="component://party/groovyScripts/party/PartyInvitationServices.groovy" invoke="updatePartyInvitation">
         <permission-service service-name="accAndDecPartyInvitationPermissionCheck"/>
-        <attribute name="partyInvitationId" type="String" mode="IN"/>
+        <attribute name="partyInvitationId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyInvitationId"/>
+            </type-validate>
+        </attribute>
         <attribute name="statusId" type="String" mode="IN" optional="true" default-value="PARTYINV_DECLINED"/>
     </service>
     <service name="cancelPartyInvitation" engine="groovy"
@@ -1188,7 +1304,11 @@ under the License.
             The user with PARTYMGR_UPDATE permission can also perform this function.
         </description>
         <implements service="permissionInterface"/>
-        <attribute name="partyInvitationId" type="String" mode="IN" optional="false"/>
+        <attribute name="partyInvitationId" type="String" mode="IN" optional="false">
++            <type-validate>
++                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyInvitationId"/>
++            </type-validate>
++        </attribute>
     </service>
     <service name="cancelPartyInvitationPermissionCheck" engine="groovy"
             location="component://party/groovyScripts/party/PartyPermissionServices.groovy" invoke="cancelPartyInvitationPermissionCheck">
@@ -1198,7 +1318,11 @@ under the License.
             The user with PARTYMGR_UPDATE permission can also perform this function.
         </description>
         <implements service="permissionInterface"/>
-        <attribute name="partyInvitationId" type="String" mode="IN" optional="false"/>
+        <attribute name="partyInvitationId" type="String" mode="IN" optional="false">
++            <type-validate>
++                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyInvitationId"/>
++            </type-validate>
++        </attribute>
     </service>
     <service name="partyCommunicationEventPermissionCheck" engine="groovy"
             location="component://party/groovyScripts/party/PartyPermissionServices.groovy" invoke="partyCommunicationEventPermissionCheck">
@@ -1299,10 +1423,26 @@ under the License.
     <service name="quickCreateCustomer" engine="groovy"
             location="component://party/groovyScripts/party/PartyServices.groovy" invoke="quickCreateCustomer">
         <description>Create customer profile on basis of First Name ,Last Name and Email Address</description>
-        <attribute name="firstName" type="String" mode="IN" optional="false"/>
-        <attribute name="lastName" type="String" mode="IN" optional="false"/>
-        <attribute name="emailAddress" type="String" mode="IN" optional="false"/>
-        <attribute name="partyId" type="String" mode="OUT" optional="false"/>
+        <attribute name="firstName" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingFirstName"/>
+            </type-validate>
+        </attribute>
+        <attribute name="lastName" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingLastName"/>
+            </type-validate>
+        </attribute>
+        <attribute name="emailAddress" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingEmailAddress"/>
+            </type-validate>
+        </attribute>
+        <attribute name="partyId" type="String" mode="OUT" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyId"/>
+            </type-validate>
+        </attribute>
         <attribute name="contactListId" type="String" mode="IN" optional="true"/>
         <attribute name="subscribeContactList" type="String" mode="IN" optional="true"/>
     </service>
@@ -1310,7 +1450,11 @@ under the License.
     <service name="getPartyMainRole" engine="groovy"
             location="component://party/groovyScripts/party/PartyServices.groovy" invoke="getPartyMainRole">
         <description>Get the main role of this party which is a child of the MAIN_ROLE roletypeId</description>
-        <attribute name="partyId" type="String" mode="IN" optional="false"/>
+        <attribute name="partyId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyId"/>
+            </type-validate>
+        </attribute>
         <attribute name="roleTypeId" type="String" mode="OUT" optional="true"/>
         <attribute name="description" type="String" mode="OUT" optional="true"/>
     </service>
@@ -1336,8 +1480,16 @@ under the License.
     <!-- send account activated email notification -->
     <service name="sendAccountActivatedEmailNotification" engine="groovy"
             location="component://party/groovyScripts/party/PartyServices.groovy" invoke="sendAccountActivatedEmailNotification" auth="false">
-        <attribute name="userLoginId" type="String" mode="IN" optional="false"/>
-        <attribute name="productStoreId" type="String" mode="IN" optional="false"/>
+        <attribute name="userLoginId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingUserLoginId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="productStoreId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingProductStoreId"/>
+            </type-validate>
+        </attribute>
     </service>
     <service name="createAgreementAttribute" default-entity-name="AgreementAttribute" engine="entity-auto" invoke="create" auth="true">
         <description>Create a AgreementAttribute entry</description>
diff --git a/applications/party/servicedef/services_view.xml b/applications/party/servicedef/services_view.xml
index 8b8c05c..46f6689 100644
--- a/applications/party/servicedef/services_view.xml
+++ b/applications/party/servicedef/services_view.xml
@@ -184,7 +184,11 @@ under the License.
             - The includeFromToSwitched and recurse attributes should by "Y" or "N" and default to N.
             - The useCache attribute should be "true" or "false", defaults to "false"
         </description>
-        <attribute name="partyIdFrom" type="String" mode="IN" optional="false"/>
+        <attribute name="partyIdFrom" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingPartyIdFrom"/>
+            </type-validate>
+        </attribute>
         <attribute name="partyRelationshipTypeId" type="String" mode="IN" optional="true"/>
         <attribute name="roleTypeIdFrom" type="String" mode="IN" optional="true"/>
         <attribute name="roleTypeIdFromInclueAllChildTypes" type="String" mode="IN" optional="true"/>
@@ -206,9 +210,17 @@ under the License.
             The getParentsOfParents attribute defaults to Y.
             The parentOrganizationPartyIdList coming out will contain the original organizationPartyId.
         </description>
-        <attribute name="organizationPartyId" type="String" mode="IN" optional="false"/>
+        <attribute name="organizationPartyId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingOrganizationPartyId"/>
+            </type-validate>
+        </attribute>
         <attribute name="getParentsOfParents" type="String" mode="IN" optional="true"/>
-        <attribute name="parentOrganizationPartyIdList" type="List" mode="OUT" optional="false"/>
+        <attribute name="parentOrganizationPartyIdList" type="List" mode="OUT" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingParentOrganizationPartyIdList"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <service name="getChildRoleTypes" engine="groovy"
@@ -217,8 +229,16 @@ under the License.
             Get Child RoleTypes.
             The childRoleTypeIdList coming out will contain the original roleTypeId.
         </description>
-        <attribute name="roleTypeId" type="String" mode="IN" optional="false"/>
-        <attribute name="childRoleTypeIdList" type="List" mode="OUT" optional="false"/>
+        <attribute name="roleTypeId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingRoleTypeId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="childRoleTypeIdList" type="List" mode="OUT" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingChildRoleTypeIdList"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <!-- PostalAddressBoundary -->
@@ -226,7 +246,11 @@ under the License.
             location="component://party/groovyScripts/party/PartyServices.groovy" invoke="getPostalAddressBoundary">
         <description>Get all Postal Address Boundaries</description>
         <permission-service service-name="partyBasePermissionCheck" main-action="VIEW"/>
-        <attribute name="contactMechId" type="String" mode="IN" optional="false"/>
+        <attribute name="contactMechId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingContactMechId"/>
+            </type-validate>
+        </attribute>
         <attribute name="geos" type="java.util.List" mode="OUT" optional="true"/>
     </service>
     
@@ -247,6 +271,10 @@ under the License.
         <attribute name="includeFromToSwitched" type="String" mode="IN" optional="true"/>
         <attribute name="recurse" type="String" mode="IN" optional="true"/>
         <attribute name="useCache" type="String" mode="IN" optional="true"/>
-        <attribute name="relatedPartyIdList" type="List" mode="OUT" optional="false"/>
+        <attribute name="relatedPartyIdList" type="List" mode="OUT" optional="false">
+            <type-validate>
+                <fail-property resource="PartyErrorUiLabels" property="PartyRequiredFieldMissingRelatedPartyIdList"/>
+            </type-validate>
+        </attribute>
     </service>
 </services>