You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by as...@apache.org on 2017/07/22 09:59:31 UTC

svn commit: r1802667 - in /ofbiz/ofbiz-framework/trunk/applications/content: config/ servicedef/

Author: ashish
Date: Sat Jul 22 09:59:31 2017
New Revision: 1802667

URL: http://svn.apache.org/viewvc?rev=1802667&view=rev
Log:
Improved: OFBIZ-7471: Improve all the service level error messages for missing required field for content component.(OFBIZ-8713)
Thanks Jagpreet and Shikha for the contribution.

Modified:
    ofbiz/ofbiz-framework/trunk/applications/content/config/ContentErrorUiLabels.xml
    ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services.xml
    ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_commevent.xml
    ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_content.xml
    ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_data.xml
    ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_output.xml
    ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_survey.xml
    ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_website.xml

Modified: ofbiz/ofbiz-framework/trunk/applications/content/config/ContentErrorUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/config/ContentErrorUiLabels.xml?rev=1802667&r1=1802666&r2=1802667&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/content/config/ContentErrorUiLabels.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/content/config/ContentErrorUiLabels.xml Sat Jul 22 09:59:31 2017
@@ -60,6 +60,147 @@
     <property key="ContentNoProductContentFound">
         <value xml:lang="en">No ProductContent found for productId: ${productId}</value>
     </property>
+    <property key="ContentRequiredFieldMissingAcroFieldMap">
+        <value xml:lang="en">Required Field Missing : Acro Field Map.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingAnswers">
+        <value xml:lang="en">Required Field Missing : Answers.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingBlogContentId">
+        <value xml:lang="en">Required Field Missing : Blog Content Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingCommunicationEventId">
+        <value xml:lang="en">Required Field Missing : Communication Event Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingContentAssocTypeId">
+        <value xml:lang="en">Required Field Missing : Content Assoc Type Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingContent">
+        <value xml:lang="en">Required Field Missing : Content.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingContentApprovalId">
+        <value xml:lang="en">Required Field Missing : Content Approval Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingContentIdFrom">
+        <value xml:lang="en">Required Field Missing : Content Id From.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingContentIdTo">
+        <value xml:lang="en">Required Field Missing : Content Id To.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingContentRevisionSeqId">
+        <value xml:lang="en">Required Field Missing : Content Revision Seq Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingCurrentContent">
+        <value xml:lang="en">Required Field Missing : Current Content.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingDataResourceId">
+        <value xml:lang="en">Required Field Missing : Data Resource Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingEntityName">
+        <value xml:lang="en">Required Field Missing : Entity Name.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingFile">
+        <value xml:lang="en">Required Field Missing : File.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingFileName">
+        <value xml:lang="en">Required Field Missing : File Name.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingFromDate">
+        <value xml:lang="en">Required Field Missing : From Date.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingImageData">
+        <value xml:lang="en">Required Field Missing : Image Data.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingInputList">
+        <value xml:lang="en">Required Field Missing : Input List.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingMapIn">
+        <value xml:lang="en">Required Field Missing : Map In.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingMapKeys">
+        <value xml:lang="en">Required Field Missing : Map Keys.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingMasterRevisionContentId">
+        <value xml:lang="en">Required Field Missing : Master Revision Content Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingNewTopicId">
+        <value xml:lang="en">Required Field Missing : New Topic Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingOrderId">
+        <value xml:lang="en">Required Field Missing : Order Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingOutWriter">
+        <value xml:lang="en">Required Field Missing : Out Writer.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingPartyId">
+        <value xml:lang="en">Required Field Missing : Party Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingPkFieldCount">
+        <value xml:lang="en">Required Field Missing : Pk Field Count.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingPlainBody">
+        <value xml:lang="en">Required Field Missing : Plain Body.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingPrefix">
+        <value xml:lang="en">Required Field Missing : Prefix.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingProdCatalogId">
+        <value xml:lang="en">Required Field Missing : Prod Catalog Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingProductId">
+        <value xml:lang="en">Required Field Missing : Product Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingPubPtContentId">
+        <value xml:lang="en">Required Field Missing : Publish Point Content Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingQuantity">
+        <value xml:lang="en">Required Field Missing : Quantity.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingRoleTypeId">
+        <value xml:lang="en">Required Field Missing : Role Type Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingRootContentId">
+        <value xml:lang="en">Required Field Missing : Root Content Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingScreenLocation">
+        <value xml:lang="en">Required Field Missing : Screen Location.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingServiceName">
+        <value xml:lang="en">Required Field Missing : Service Name.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingStatusId">
+        <value xml:lang="en">Required Field Missing : Status Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingSubject">
+        <value xml:lang="en">Required Field Missing : Content Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingSurveyResponseId">
+        <value xml:lang="en">Required Field Missing : Survey Response Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingTemplateContext">
+        <value xml:lang="en">Required Field Missing : Template Context.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingText">
+        <value xml:lang="en">Required Field Missing : Text.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingTypeGenerate">
+        <value xml:lang="en">Required Field Missing : Type Generate.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingUserLogin">
+        <value xml:lang="en">Required Field Missing : User Login.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingUseTime">
+        <value xml:lang="en">Required Field Missing : Use Time.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingUseTimeUomId">
+        <value xml:lang="en">Required Field Missing : Use Time Uom Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingWebSiteContentTypeId">
+        <value xml:lang="en">Required Field Missing : WebSite Content Type Id.</value>
+    </property>
+    <property key="ContentRequiredFieldMissingWebSiteId">
+        <value xml:lang="en">Required Field Missing : WebSite Id.</value>
+    </property>
     <property key="ContentSearchNotIndexed">
         <value xml:lang="en">Cannot find content search document. Please index all content.</value>
         <value xml:lang="fr">Les contenus ne sont pas encore indexés, aucun résultat possible.</value>

Modified: ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services.xml?rev=1802667&r1=1802666&r2=1802667&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services.xml Sat Jul 22 09:59:31 2017
@@ -44,7 +44,11 @@
             location="component://content/minilang/content/ContentServices.xml" invoke="getSubContentWithPermCheck">
         <description>Get Content and resource information</description>
         <permission-service service-name="genericContentPermission" main-action="VIEW"/>
-        <attribute mode="IN" name="contentId" optional="false" type="String"/>
+        <attribute mode="IN" name="contentId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
         <attribute mode="IN" name="contentAssocTypeId" optional="true" type="String"/>
         <attribute mode="IN" name="mapKey" optional="true" type="String"/>
         <attribute mode="IN" name="mainAction" optional="true" type="String"/>
@@ -143,8 +147,16 @@
     <service name="createEmailContent" engine="simple" location="component://content/minilang/content/ContentServices.xml" invoke="createEmailContent">
         <permission-service service-name="contentManagerPermission" main-action="CREATE"/>
         <auto-attributes mode="IN" entity-name="Content" optional="true"/>
-        <attribute name="subject" type="String" mode="IN" optional="false"/>
-        <attribute name="plainBody" type="String" mode="IN" optional="false"/>
+        <attribute name="subject" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingSubject"/>
+            </type-validate>
+        </attribute>
+        <attribute name="plainBody" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingPlainBody"/>
+            </type-validate>
+        </attribute>
         <attribute name="htmlBody" type="String" mode="IN" optional="true" allow-html="any"/>
         <override name="contentId" mode="INOUT"/>
     </service>
@@ -161,7 +173,11 @@
     <service name="createDownloadContent" engine="simple" location="component://content/minilang/content/ContentServices.xml" invoke="createDownloadContent">
         <permission-service service-name="contentManagerPermission" main-action="CREATE"/>
         <auto-attributes mode="IN" entity-name="Content" optional="true"/>
-        <attribute name="file" type="String" mode="IN" optional="false"/>
+        <attribute name="file" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingFile"/>
+            </type-validate>
+        </attribute>
         <override name="contentId" mode="INOUT"/>
     </service>
     <service name="updateDownloadContent" engine="simple" location="component://content/minilang/content/ContentServices.xml" invoke="updateDownloadContent">
@@ -173,7 +189,11 @@
     <service name="createSimpleTextContent" engine="simple" location="component://content/minilang/content/ContentServices.xml" invoke="createSimpleTextContent">
         <permission-service service-name="contentManagerPermission" main-action="CREATE"/>
         <auto-attributes mode="IN" entity-name="Content" optional="true"/>
-        <attribute name="text" type="String" mode="IN" optional="false" allow-html="any"/>
+        <attribute name="text" type="String" mode="IN" optional="false" allow-html="any">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingText"/>
+            </type-validate>
+        </attribute>
         <override name="contentId" mode="INOUT"/>
     </service>
     <service name="updateSimpleTextContent" engine="simple" location="component://content/minilang/content/ContentServices.xml" invoke="updateSimpleTextContent">
@@ -185,8 +205,16 @@
     <!-- Util -->
     <service name="findAssocContent" engine="simple"
             location="component://content/minilang/content/ContentServices.xml" invoke="findAssocContent" auth="true">
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
-        <attribute name="mapKeys" type="List" mode="IN" optional="false"/>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="mapKeys" type="List" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingMapKeys"/>
+            </type-validate>
+        </attribute>
         <attribute name="contentAssocs" type="List" mode="OUT" optional="true"/>
     </service>
 
@@ -259,7 +287,11 @@
     <service name="traverseContent" auth="false" engine="java" invoke="traverseContent"
         location="org.apache.ofbiz.content.content.ContentServices">
         <description>Follow a content and return descendants</description>
-        <attribute mode="IN" name="contentId" optional="false" type="String"/>
+        <attribute mode="IN" name="contentId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
         <attribute mode="IN" name="fromDateStr" optional="true" type="String"/>
         <attribute mode="IN" name="thruDateStr" optional="true" type="String"/>
         <attribute mode="IN" name="followWhen" optional="true" type="String"/>
@@ -389,14 +421,26 @@
         transaction-timeout="7200"
             location="org.apache.ofbiz.content.ContentManagementServices" invoke="persistContentWithRevision" auth="true">
         <implements service="persistContentAndAssoc"/>
-        <attribute mode="IN" name="masterRevisionContentId" optional="false" type="String"/>
+        <attribute mode="IN" name="masterRevisionContentId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingMasterRevisionContentId"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <service name="findContentParents" engine="java"
         transaction-timeout="7200"
             location="org.apache.ofbiz.content.content.ContentServices" invoke="findContentParents" auth="true">
-        <attribute mode="IN" name="contentId" optional="false" type="String"/>
-        <attribute mode="IN" name="contentAssocTypeId" optional="false" type="String"/>
+        <attribute mode="IN" name="contentId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
+        <attribute mode="IN" name="contentAssocTypeId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentAssocTypeId"/>
+            </type-validate>
+        </attribute>
         <attribute mode="IN" name="direction" optional="true" type="String"/>
         <attribute mode="OUT" name="parentList" optional="true" type="List"/>
     </service>
@@ -404,11 +448,19 @@
     <service name="deactivateAssocs" engine="java"
             location="org.apache.ofbiz.content.content.ContentServices" invoke="deactivateAssocs" auth="true">
         <description>Supply thruDate to all ContentAssoc that come "before" current one</description>
-        <attribute mode="IN" name="contentIdTo" optional="false" type="String"/>
+        <attribute mode="IN" name="contentIdTo" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentIdTo"/>
+            </type-validate>
+        </attribute>
         <attribute mode="IN" name="mapKey" optional="true" type="String"/>
         <attribute mode="IN" name="activeContentId" optional="true" type="String"/>
         <attribute mode="IN" name="contentId" optional="true" type="String"/>
-        <attribute mode="IN" name="contentAssocTypeId" optional="false" type="String"/>
+        <attribute mode="IN" name="contentAssocTypeId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentAssocTypeId"/>
+            </type-validate>
+        </attribute>
         <attribute mode="IN" name="fromDate" optional="true" type="Timestamp"/>
         <attribute mode="OUT" name="deactivatedList" optional="false" type="List"/>
     </service>
@@ -428,8 +480,16 @@
         <description>Creates content records for a blog entry</description>
         <implements service="createContentFromUploadedFile" optional="true"/>
         <implements service="createTextContent" optional="true"/>
-        <attribute name="contentIdFrom" type="String" mode="IN" optional="false"/>
-        <attribute name="pubPtContentId" type="String" mode="IN" optional="false"/>
+        <attribute name="contentIdFrom" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentIdFrom"/>
+            </type-validate>
+        </attribute>
+        <attribute name="pubPtContentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingPubPtContentId"/>
+            </type-validate>
+        </attribute>
         <attribute name="threadContentId" type="String" mode="IN" optional="true"/>
         <attribute name="summaryData" type="String" mode="IN" optional="true"/>
     </service>
@@ -439,9 +499,17 @@
         <description>Get the subcontent and render</description>
         <attribute mode="IN" name="contentId" optional="true" type="String"/>
         <attribute mode="IN" name="mapKey" optional="true" type="String"/>
-        <attribute mode="IN" name="outWriter" optional="false" type="java.io.Writer"/>
+        <attribute mode="IN" name="outWriter" optional="false" type="java.io.Writer">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingOutWriter"/>
+            </type-validate>
+        </attribute>
         <attribute mode="IN" name="subContentId" optional="true" type="String"/>
-        <attribute mode="IN" name="templateContext" optional="false" type="Map"/>
+        <attribute mode="IN" name="templateContext" optional="false" type="Map">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingTemplateContext"/>
+            </type-validate>
+        </attribute>
         <attribute mode="IN" name="locale" optional="true" type="String"/>
         <attribute mode="IN" name="mimeTypeId" optional="true" type="String"/>
         <attribute mode="IN" name="fromDate" optional="true" type="Timestamp"/>
@@ -463,9 +531,21 @@
     <service name="renderDataResourceAsText" engine="java"
             location="org.apache.ofbiz.content.data.DataServices" invoke="renderDataResourceAsText" auth="false">
         <description>Get the dataResource and render</description>
-        <attribute mode="IN" name="dataResourceId" optional="false" type="String"/>
-        <attribute mode="IN" name="outWriter" optional="false" type="java.io.Writer"/>
-        <attribute mode="IN" name="templateContext" optional="false" type="Map"/>
+        <attribute mode="IN" name="dataResourceId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingDataResourceId"/>
+            </type-validate>
+        </attribute>
+        <attribute mode="IN" name="outWriter" optional="false" type="java.io.Writer">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingOutWriter"/>
+            </type-validate>
+        </attribute>
+        <attribute mode="IN" name="templateContext" optional="false" type="Map">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingTemplateContext"/>
+            </type-validate>
+        </attribute>
         <attribute mode="IN" name="locale" optional="true" type="String"/>
         <attribute mode="IN" name="mimeTypeId" optional="true" type="String"/>
         <attribute mode="IN" name="subContentDataResourceView" optional="true" type="org.apache.ofbiz.entity.GenericValue"/>
@@ -475,7 +555,11 @@
         auth="true" engine="simple" invoke="createTopic"
         location="component://content/minilang/content/ContentServices.xml" >
         <description>Create a TOPIC type Content </description>
-        <attribute mode="IN" name="newTopicId" optional="false" type="String"/>
+        <attribute mode="IN" name="newTopicId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingNewTopicId"/>
+            </type-validate>
+        </attribute>
         <attribute mode="IN" name="newTopicDescription" optional="true" type="String"/>
     </service>
 
@@ -499,8 +583,16 @@
     <service name="linkContentToPubPt" engine="java"
             location="org.apache.ofbiz.content.content.ContentServices" invoke="linkContentToPubPt" auth="true" >
     <description>Attach content to publish point</description>
-        <attribute mode="IN" name="contentId" optional="false" type="String"/>
-        <attribute mode="IN" name="contentIdTo" optional="false" type="String"/>
+        <attribute mode="IN" name="contentId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
+        <attribute mode="IN" name="contentIdTo" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentIdTo"/>
+            </type-validate>
+        </attribute>
         <attribute mode="IN" name="publish" optional="true" type="String"/>
         <attribute mode="IN" name="statusId" optional="true" type="String"/>
         <attribute mode="IN" name="privilegeEnumId" optional="true" type="String"/>
@@ -518,9 +610,17 @@
     <service name="updateOrRemove" engine="java"
         location="org.apache.ofbiz.content.ContentManagementServices" invoke="updateOrRemove" auth="true" validate="false">
         <description>Update or remove a child entity based on value of "action"</description>
-        <attribute name="entityName" type="String" mode="IN" optional="false"/>
+        <attribute name="entityName" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingEntityName"/>
+            </type-validate>
+        </attribute>
         <attribute name="action" type="String" mode="IN" optional="true"/>
-        <attribute name="pkFieldCount" type="String" mode="IN" optional="false"/>
+        <attribute name="pkFieldCount" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingPkFieldCount"/>
+            </type-validate>
+        </attribute>
         <attribute name="fieldName0" type="String" mode="IN" optional="true"/>
         <attribute name="fieldValue1" type="String" mode="IN" optional="true"/>
         <attribute name="fieldName2" type="String" mode="IN" optional="true"/>
@@ -534,7 +634,11 @@
     <service name="resequence" auth="true" engine="java" validate="true" transaction-timeout="7200"
         location="org.apache.ofbiz.content.ContentManagementServices" invoke="resequence">
         <description>Reorder sequence numbers in ContentAssoc entities for a given parent id</description>
-        <attribute mode="IN" name="contentIdTo" optional="false" type="String"/>
+        <attribute mode="IN" name="contentIdTo" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentIdTo"/>
+            </type-validate>
+        </attribute>
         <attribute mode="IN" name="seqInc" optional="true" type="Integer"/>
         <attribute mode="IN" name="typeList" optional="true" type="List"/>
         <attribute mode="IN" name="contentId" optional="true" type="String"/>
@@ -544,21 +648,33 @@
     <service name="changeLeafToNode" validate="true" auth="true" engine="java" transaction-timeout="7200"
         location="org.apache.ofbiz.content.ContentManagementServices" invoke="changeLeafToNode">
         <description>Moves dataResource to separate content associated with current content so that node can have only children, no content of its own</description>
-        <attribute mode="IN" name="contentId" optional="false" type="String"/>
+        <attribute mode="IN" name="contentId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
         <attribute mode="IN" name="userLogin" optional="true" type="org.apache.ofbiz.entity.GenericValue"/>
     </service>
 
     <service name="updatePageType" auth="true" engine="java" validate="true" transaction-timeout="7200"
             location="org.apache.ofbiz.content.ContentManagementServices" invoke="updatePageType">
         <description>Change contentTypeId to OUTLINE/PAGE/SUBPAGE_NODE</description>
-        <attribute mode="IN" name="contentId" optional="false" type="String"/>
+        <attribute mode="IN" name="contentId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
         <attribute mode="IN" name="pageMode" optional="true" type="String"/>
     </service>
 
     <service name="resetToOutlineMode" auth="true" engine="java" validate="true" transaction-timeout="7200"
             location="org.apache.ofbiz.content.ContentManagementServices" invoke="resetToOutlineMode">
         <description>Set content and kids to OUTLINE_NODE</description>
-        <attribute mode="IN" name="contentId" optional="false" type="String"/>
+        <attribute mode="IN" name="contentId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
         <attribute mode="IN" name="pageMode" optional="true" type="String"/>
     </service>
 
@@ -576,84 +692,160 @@
     <service name="findSubNodes" auth="false" engine="java" validate="true" transaction-timeout="7200"
             location="org.apache.ofbiz.content.ContentManagementServices" invoke="findSubNodes">
         <description>Get children of content</description>
-        <attribute mode="IN" name="contentId" optional="false" type="String"/>
+        <attribute mode="IN" name="contentId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
         <attribute mode="OUT" name="_LIST_" optional="true" type="List"/>
     </service>
 
     <service name="initContentChildCounts" engine="java"
             location="org.apache.ofbiz.content.ContentManagementServices" invoke="initContentChildCounts">
         <description>Set childLeafCount and childBranchCount to appropriate values</description>
-        <attribute name="content" type="org.apache.ofbiz.entity.GenericValue" mode="IN" optional="false"/>
+        <attribute name="content" type="org.apache.ofbiz.entity.GenericValue" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContent"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <service name="incrementContentChildStats" engine="java"
             location="org.apache.ofbiz.content.ContentManagementServices" invoke="incrementContentChildStats">
         <description>Set childLeafCount and childBranchCount in parent Content entities</description>
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
         <attribute name="contentAssocTypeId" type="String" mode="IN" optional="true"/>
     </service>
 
     <service name="decrementContentChildStats" engine="java"
             location="org.apache.ofbiz.content.ContentManagementServices" invoke="decrementContentChildStats">
         <description>Set childLeafCount and childBranchCount in parent Content entities</description>
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
         <attribute name="contentAssocTypeId" type="String" mode="IN" optional="true"/>
     </service>
 
     <service name="updateContentChildStats" engine="java" transaction-timeout="7200"
             location="org.apache.ofbiz.content.ContentManagementServices" invoke="updateContentChildStats">
         <description>Set childLeafCount and childBranchCount in passed id and those below</description>
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentIdTo"/>
+            </type-validate>
+        </attribute>
         <attribute name="contentAssocTypeId" type="String" mode="IN" optional="true"/>
     </service>
 
     <service name="updateImage" engine="java" transaction-timeout="7200"
             location="org.apache.ofbiz.content.data.DataServices" invoke="updateImage">
         <description>Update image</description>
-        <attribute name="dataResourceId" type="String" mode="IN" optional="false"/>
-        <attribute name="imageData" type="java.nio.ByteBuffer" mode="IN" optional="false"/>
+        <attribute name="dataResourceId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingDataResourceId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="imageData" type="java.nio.ByteBuffer" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingImageData"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <service name="createImage" engine="java" transaction-timeout="7200"
             location="org.apache.ofbiz.content.data.DataServices" invoke="createImage">
         <description>Create image</description>
-        <attribute name="dataResourceId" type="String" mode="IN" optional="false"/>
-        <attribute name="imageData" type="java.nio.ByteBuffer" mode="IN" optional="false"/>
+        <attribute name="dataResourceId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingDataResourceId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="imageData" type="java.nio.ByteBuffer" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingImageData"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <service name="updateContentSubscription" engine="java" transaction-timeout="7200" auth="true"
             location="org.apache.ofbiz.content.ContentManagementServices" invoke="updateContentSubscription">
         <description>Creates or updates ContentRole</description>
-        <attribute name="partyId" type="String" mode="IN" optional="false"/>
+        <attribute name="partyId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingPartyId"/>
+            </type-validate>
+        </attribute>
         <attribute name="contentId" type="String" mode="IN" optional="true"/>
         <attribute name="useRoleTypeId" type="String" mode="IN" optional="true"/>
-        <attribute name="useTimeUomId" type="String" mode="IN" optional="false"/>
-        <attribute name="useTime" type="Integer" mode="IN" optional="false"/>
+        <attribute name="useTimeUomId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingUseTimeUomId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="useTime" type="Integer" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingUseTime"/>
+            </type-validate>
+        </attribute>
     </service>
     <service name="updateContentSubscriptionByProduct" engine="java" transaction-timeout="7200" auth="true"
             location="org.apache.ofbiz.content.ContentManagementServices" invoke="updateContentSubscriptionByProduct">
         <description>Creates or updates ContentRole</description>
-        <attribute name="partyId" type="String" mode="IN" optional="false"/>
-        <attribute name="productId" type="String" mode="IN" optional="false"/>
+        <attribute name="partyId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingPartyId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="productId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingProductId"/>
+            </type-validate>
+        </attribute>
         <attribute name="orderCreatedDate" type="Timestamp" mode="IN" optional="true"/>
-        <attribute name="quantity" type="Integer" mode="IN" optional="false"/>
+        <attribute name="quantity" type="Integer" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingQuantity"/>
+            </type-validate>
+        </attribute>
     </service>
     <service name="updateContentSubscriptionByOrder" engine="java" transaction-timeout="7200" auth="true"
             location="org.apache.ofbiz.content.ContentManagementServices" invoke="updateContentSubscriptionByOrder">
         <description>Creates or updates ContentRole</description>
-        <attribute name="orderId" type="String" mode="IN" optional="false"/>
+        <attribute name="orderId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingOrderId"/>
+            </type-validate>
+        </attribute>
     </service>
     <service name="followNodeChildren" auth="true" engine="java" transaction-timeout="7200"
             location="org.apache.ofbiz.content.ContentManagementServices" invoke="followNodeChildren">
         <description>Descend thru content tree and execute service at each node</description>
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
-        <attribute name="serviceName" type="String" mode="IN" optional="false"/>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="serviceName" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingServiceName"/>
+            </type-validate>
+        </attribute>
         <attribute name="contentAssocTypeId" type="String" mode="IN" optional="true"/>
     </service>
     <service name="publishContent" auth="true" engine="java" transaction-timeout="7200"
             location="org.apache.ofbiz.content.content.ContentServices" invoke="publishContent">
         <description>Change statusId to published (CTNT_PUBLISHED)</description>
-        <attribute mode="IN" name="content" optional="false" type="org.apache.ofbiz.entity.GenericValue"/>
+        <attribute mode="IN" name="content" optional="false" type="org.apache.ofbiz.entity.GenericValue">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContent"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <!-- these three services are for use in screen widget files -->
@@ -661,7 +853,11 @@
             location="org.apache.ofbiz.content.content.ContentServices" invoke="getPrefixedMembers">
         <description>Gets all the members of the input map that start with the prefix</description>
         <attribute mode="IN" name="mapIn" optional="true" type="java.util.Map"/>
-        <attribute name="prefix" type="String" mode="IN" optional="false"/>
+        <attribute name="prefix" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingPrefix"/>
+            </type-validate>
+        </attribute>
         <attribute mode="OUT" name="mapOut" optional="true" type="java.util.Map"/>
     </service>
     <service name="splitString" auth="false" engine="java" transaction-timeout="7200"
@@ -674,14 +870,22 @@
     <service name="joinString" auth="false" engine="java" transaction-timeout="7200"
             location="org.apache.ofbiz.content.content.ContentServices" invoke="joinString">
         <description>Splits input string </description>
-        <attribute name="inputList" type="java.util.List" mode="IN" optional="false"/>
+        <attribute name="inputList" type="java.util.List" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingInputList"/>
+            </type-validate>
+        </attribute>
         <attribute name="delimiter" type="String" mode="IN" optional="true"/>
         <attribute mode="OUT" name="outputString" optional="true" type="String"/>
     </service>
     <service name="urlEncodeArgs" auth="false" engine="java" transaction-timeout="7200"
             location="org.apache.ofbiz.content.content.ContentServices" invoke="urlEncodeArgs">
         <description>URL encodes map</description>
-        <attribute name="mapIn" type="java.util.Map" mode="IN" optional="false"/>
+        <attribute name="mapIn" type="java.util.Map" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingMapIn"/>
+            </type-validate>
+        </attribute>
         <attribute mode="OUT" name="outputString" optional="true" type="String"/>
     </service>
 
@@ -696,7 +900,11 @@
         <auto-attributes entity-name="ContentRevisionItem" include="all" mode="IN" optional="true">
             <exclude field-name="contentRevisionSeqId"/>
         </auto-attributes>
-        <attribute name="contentRevisionSeqId" type="String" mode="OUT" optional="false"/>
+        <attribute name="contentRevisionSeqId" type="String" mode="OUT" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentRevisionSeqId"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <service name="prepForApproval" engine="simple"
@@ -704,7 +912,11 @@
         invoke="prepForApproval" auth="true">
         <description>Set ContentApprovals for approval process</description>
         <permission-service service-name="contentManagerPermission" main-action="CREATE"/>
-        <attribute name="rootContentId" type="String" mode="IN" optional="false"/>
+        <attribute name="rootContentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingRootContentId"/>
+            </type-validate>
+        </attribute>
         <attribute name="rootContentRevisionSeqId" type="String" mode="OUT" optional="false"/>
     </service>
 
@@ -712,7 +924,11 @@
         location="component://content/minilang/compdoc/CompDocServices.xml"
         invoke="getFinalApprovalStatus" auth="true">
         <description>Set ContentApprovals for approval process</description>
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
         <attribute name="contentRevisionSeqId" type="String" mode="INOUT" optional="true"/>
         <attribute name="approvalStatusId" type="String" mode="OUT" optional="true"/>
         <attribute name="contentApprovalList" type="List" mode="OUT" optional="true"/>
@@ -722,9 +938,21 @@
         location="component://content/minilang/compdoc/CompDocServices.xml"
         invoke="getApprovalsWithPermissions" auth="true" >
         <description>Get a list of ContentApprovals and permission indicators</description>
-        <attribute name="rootContentId" type="String" mode="IN" optional="false"/>
-        <attribute name="contentRevisionSeqId" type="String" mode="IN" optional="false"/>
-        <attribute name="userLogin" type="org.apache.ofbiz.entity.GenericValue" mode="IN" optional="false"/>
+        <attribute name="rootContentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingRootContentId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="contentRevisionSeqId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentRevisionSeqId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="userLogin" type="org.apache.ofbiz.entity.GenericValue" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingUserLogin"/>
+            </type-validate>
+        </attribute>
         <attribute name="checkPermission" type="String" mode="IN" optional="true"/>
         <attribute name="contentApprovalList" type="List" mode="OUT" optional="true"/>
     </service>
@@ -733,8 +961,16 @@
         location="component://content/minilang/compdoc/CompDocServices.xml"
         invoke="hasApprovalPermission" auth="true">
         <description>Determine permission status for record</description>
-        <attribute name="contentApprovalId" type="String" mode="IN" optional="false"/>
-        <attribute name="userLogin" type="org.apache.ofbiz.entity.GenericValue" mode="IN" optional="false"/>
+        <attribute name="contentApprovalId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentApprovalId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="userLogin" type="org.apache.ofbiz.entity.GenericValue" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingUserLogin"/>
+            </type-validate>
+        </attribute>
         <attribute name="approvalPermExists" type="String" mode="OUT" optional="true"/>
     </service>
 
@@ -762,8 +998,16 @@
         location="component://content/minilang/compdoc/CompDocServices.xml"
         invoke="cloneTemplateContentApprovals" auth="true">
         <description>Bump the previous ContentApproval approvals up to current CDT</description>
-        <attribute name="contentRevisionSeqId" type="String" mode="IN" optional="false"/>
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
+        <attribute name="contentRevisionSeqId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentRevisionSeqId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <service name="cloneInstanceContentApprovals" engine="simple"
@@ -771,7 +1015,11 @@
         invoke="cloneInstanceContentApprovals" auth="true">
         <description>Bump the previous ContentApproval approvals up to current CDI</description>
         <attribute name="contentRevisionSeqId" type="String" mode="IN" optional="true"/>
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <service name="checkForWaitingApprovals" engine="simple"
@@ -786,7 +1034,11 @@
         location="component://content/minilang/compdoc/CompDocServices.xml"
         invoke="getMostRecentRevision" auth="true">
         <description>Look for most recent revision for contentId</description>
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
         <attribute name="mostRecentRevisionSeqId" type="String" mode="OUT" optional="true"/>
     </service>
 
@@ -795,7 +1047,11 @@
         location="org.apache.ofbiz.content.compdoc.CompDocServices"
         invoke="renderCompDocPdf" auth="true">
         <description>Convert all the CompDoc parts into PDF and concatenate and put in CMS</description>
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
         <attribute name="contentRevisionSeqId" type="String" mode="IN" optional="true"/>
         <attribute name="webSiteId" type="String" mode="IN" optional="true"/>
         <attribute name="https" type="String" mode="IN" optional="true"/>
@@ -807,7 +1063,11 @@
         location="org.apache.ofbiz.content.compdoc.CompDocServices"
         invoke="renderContentPdf" auth="true">
         <description>Convert all the CompDoc parts into PDF and concatenate and put in CMS</description>
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
         <attribute name="contentRevisionSeqId" type="String" mode="IN" optional="true"/>
         <attribute name="webSiteId" type="String" mode="IN" optional="true"/>
         <attribute name="https" type="String" mode="IN" optional="true"/>
@@ -821,7 +1081,11 @@
         location="component://content/minilang/blog/BlogServices.xml" invoke="createBlogEntry">
         <description>Creates content records for a blog entry</description>
         <implements service="uploadFileInterface" optional="true"/>
-        <attribute name="blogContentId" type="String" mode="INOUT" optional="false"/>
+        <attribute name="blogContentId" type="String" mode="INOUT" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingBlogContentId"/>
+            </type-validate>
+        </attribute>
         <attribute name="contentId" type="String" mode="OUT" optional="false"/>
         <attribute name="contentName" type="String" mode="IN" optional="true"/>
         <attribute name="statusId" type="String" mode="IN" optional="true"/>
@@ -834,8 +1098,16 @@
         location="component://content/minilang/blog/BlogServices.xml" invoke="updateBlogEntry">
         <description>Updates content records for a blog entry</description>
         <implements service="uploadFileInterface" optional="true"/>
-        <attribute name="blogContentId" type="String" mode="INOUT" optional="false"/>
-        <attribute name="contentId" type="String" mode="INOUT" optional="false"/>
+        <attribute name="blogContentId" type="String" mode="INOUT" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingBlogContentId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="contentId" type="String" mode="INOUT" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
         <attribute name="contentName" type="String" mode="IN" optional="true"/>
         <attribute name="statusId" type="String" mode="IN" optional="true"/>
         <attribute name="description" type="String" mode="IN" optional="true"/>
@@ -846,7 +1118,11 @@
     <service name="getBlogEntry" engine="simple" auth="true"
         location="component://content/minilang/blog/BlogServices.xml" invoke="getBlogEntry">
         <description>Retrieves content records for a blog entry</description>
-        <attribute name="blogContentId" type="String" mode="INOUT" optional="false"/>
+        <attribute name="blogContentId" type="String" mode="INOUT" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingBlogContentId"/>
+            </type-validate>
+        </attribute>
         <attribute name="contentId" type="String" mode="INOUT" optional="true"/><!-- also used for new entries, will return with no error with empty contentId -->
         <attribute name="contentName" type="String" mode="OUT" optional="true"/>
         <attribute name="statusId" type="String" mode="OUT" optional="true"/>
@@ -860,8 +1136,16 @@
     </service>
     <service name="getOwnedOrPublishedBlogEntries" engine="simple" location="component://content/minilang/blog/BlogServices.xml" invoke="getOwnedOrPublishedBlogEntries"
          auth="true"  transaction-timeout="7200">
-        <attribute type="String" mode="IN" name="contentId" optional="false"/>
-        <attribute mode="IN" name="userLogin" optional="false" type="org.apache.ofbiz.entity.GenericValue"/>
+        <attribute type="String" mode="IN" name="contentId" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
+        <attribute mode="IN" name="userLogin" optional="false" type="org.apache.ofbiz.entity.GenericValue">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingUserLogin"/>
+            </type-validate>
+        </attribute>
         <attribute mode="OUT" name="blogList" optional="true" type="List"/>
     </service>
 
@@ -870,7 +1154,11 @@
             location="org.apache.ofbiz.content.blog.BlogRssServices" invoke="generateBlogRssFeed">
         <description>Blog RSS Feed</description>
         <implements service="rssFeedInterface"/>
-        <attribute name="blogContentId" type="String" mode="IN" optional="false"/>
+        <attribute name="blogContentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingBlogContentId"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <!-- eca helper services -->

Modified: ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_commevent.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_commevent.xml?rev=1802667&r1=1802666&r2=1802667&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_commevent.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_commevent.xml Sat Jul 22 09:59:31 2017
@@ -39,7 +39,11 @@ under the License.
                 location="component://content/minilang/content/ContentServices.xml" invoke="createCommContentDataResource" auth="true">
         <description>Create CommunicationEvent and Content</description>
         <implements service="persistContentAndAssoc"/>
-        <attribute name="communicationEventId" type="String" mode="IN" optional="false"/>
+        <attribute name="communicationEventId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingCommunicationEventId"/>
+            </type-validate>
+        </attribute>
         <attribute name="contentId" type="String" mode="IN" optional="false">
             <type-validate>
                 <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
@@ -52,8 +56,16 @@ under the License.
                 location="component://content/minilang/content/ContentServices.xml" invoke="updateCommContentDataResource" auth="true">
         <description>Update CommunicationEvent and Content</description>
         <implements service="persistContentAndAssoc"/>
-        <attribute name="communicationEventId" type="String" mode="IN" optional="false"/>
-        <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="false"/>
+        <attribute name="communicationEventId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingCommunicationEventId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingFromDate"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <service name="createCommEventContentAssoc" engine="simple"
@@ -68,9 +80,21 @@ under the License.
 
     <service name="updateCommEventContentAssoc" default-entity-name="CommEventContentAssoc" engine="entity-auto" invoke="update" auth="true">
         <description>Update CommEventContentAssoc</description>
-        <attribute name="communicationEventId" type="String" mode="IN" optional="false"/>
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
-        <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="false"/>
+        <attribute name="communicationEventId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingCommunicationEventId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="fromDate" type="java.sql.Timestamp" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingFromDate"/>
+            </type-validate>
+        </attribute>
         <attribute name="thruDate" type="java.sql.Timestamp" mode="IN" optional="true"/>
          <attribute name="sequenceNum" type="Long" mode="IN" optional="true"/>
     </service>

Modified: ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_content.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_content.xml?rev=1802667&r1=1802666&r2=1802667&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_content.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_content.xml Sat Jul 22 09:59:31 2017
@@ -74,7 +74,11 @@
         <description>Creates content record from data resource and allows all content fields to be set</description>
         <!-- uses createContent internally; additonal permission(s) not necessary -->
         <implements service="createContent" optional="true"/>
-        <attribute name="dataResourceId" type="String" mode="IN" optional="false"/>
+        <attribute name="dataResourceId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingDataResourceId"/>
+            </type-validate>
+        </attribute>
         <attribute name="contentId" type="String" mode="OUT" optional="false"/>
         <attribute name="uploadedFile" type="java.nio.ByteBuffer" mode="IN" optional="true"/>
     </service>
@@ -84,7 +88,11 @@
         <description>Accepts uploaded content and attaches to an existing data resource</description>
         <!-- uses createContent internally; additonal permission(s) not necessary -->
         <implements service="uploadFileInterface"/>
-        <attribute name="dataResourceId" type="String" mode="INOUT" optional="false"/>
+        <attribute name="dataResourceId" type="String" mode="INOUT" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingDataResourceId"/>
+            </type-validate>
+        </attribute>
         <attribute name="dataResourceTypeId" type="String" mode="IN" optional="true"/>
         <!-- mimetype is set from the uploaded file (contentType) when empty -->
         <attribute name="mimeTypeId" type="String" mode="INOUT" optional="true"/>
@@ -201,7 +209,11 @@
     <service name="findRelatedContent" default-entity-name="Content" engine="java"
             location="org.apache.ofbiz.content.content.ContentServices" invoke="findRelatedContent" auth="true">
         <description>Create a Content</description>
-        <attribute mode="IN" name="currentContent" optional="false" type="org.apache.ofbiz.entity.GenericValue"/>
+        <attribute mode="IN" name="currentContent" optional="false" type="org.apache.ofbiz.entity.GenericValue">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingCurrentContent"/>
+            </type-validate>
+        </attribute>
         <attribute mode="IN" name="toFrom" optional="true" type="String"/>
         <attribute mode="IN" name="fromDate" optional="true" type="String"/>
         <attribute mode="IN" name="thruDate" optional="true" type="String"/>
@@ -250,7 +262,11 @@
         <attribute mode="IN" name="fromDate" optional="true" type="String"/>
         <attribute mode="IN" name="thruDate" optional="true" type="String"/>
         <attribute mode="IN" name="entityOperation" optional="true" type="String"/>
-        <attribute mode="IN" name="contentAssocTypeId" optional="false" type="String"/>
+        <attribute mode="IN" name="contentAssocTypeId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentAssocTypeId"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <service name="createContentAssoc" default-entity-name="ContentAssoc" engine="simple" auth="true"
@@ -299,8 +315,16 @@
             location="component://content/minilang/content/ContentServices.xml" invoke="setContentStatus">
         <description>Set the Content Status</description>
         <permission-service service-name="genericContentPermission" main-action="UPDATE"/>
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
-        <attribute name="statusId" type="String" mode="IN" optional="false"/>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="statusId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingStatusId"/>
+            </type-validate>
+        </attribute>
         <attribute name="oldStatusId" type="String" mode="OUT" optional="true"/>
     </service>
 
@@ -322,9 +346,21 @@
             location="component://content/minilang/content/ContentServices.xml" invoke="deactivateAllContentRoles">
         <description>Deactivate all ContentRoles</description>
         <permission-service service-name="genericContentPermission" main-action="UPDATE"/>
-        <attribute mode="IN" name="contentId" optional="false" type="String"/>
-        <attribute mode="IN" name="roleTypeId" optional="false" type="String"/>
-        <attribute mode="IN" name="partyId" optional="false" type="String"/>
+        <attribute mode="IN" name="contentId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
+        <attribute mode="IN" name="roleTypeId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingRoleTypeId"/>
+            </type-validate>
+        </attribute>
+        <attribute mode="IN" name="partyId" optional="false" type="String">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingPartyId"/>
+            </type-validate>
+        </attribute>
     </service>
     <service name="removeContentRole" engine="entity-auto" default-entity-name="ContentRole" auth="true" invoke="delete">
         <description>Remove ContentRole</description>
@@ -468,19 +504,31 @@
             location="component://content/minilang/content/ContentServices.xml" invoke="deleteContentKeywords" auth="true">
         <description>Delete all the keywords of a content</description>
         <permission-service service-name="genericContentPermission" main-action="DELETE"/>
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
     </service>
     <service name="indexContentKeywords" engine="simple"
                 location="component://content/minilang/content/ContentServices.xml" invoke="indexContentKeywords" auth="false">
         <description>Index the Keywords for a Content</description>
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
         <attribute name="contentInstance" type="org.apache.ofbiz.entity.GenericValue" mode="IN" optional="true"/>
     </service>
     <service name="forceIndexContentKeywords" engine="simple"
             location="component://content/minilang/content/ContentServices.xml" invoke="forceIndexContentKeywords" auth="true">
         <description>Induce all the keywords of a content, ignoring the flag in the Content.</description>
         <permission-service service-name="genericContentPermission" main-action="CREATE"/>
-        <attribute name="contentId" type="String" mode="IN" optional="false"/>
+        <attribute name="contentId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <!-- Content Revision services -->

Modified: ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_data.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_data.xml?rev=1802667&r1=1802666&r2=1802667&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_data.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_data.xml Sat Jul 22 09:59:31 2017
@@ -45,14 +45,22 @@
         <description>Create a DataResource and link this data to the content present</description>
         <permission-service service-name="genericDataResourcePermission" main-action="CREATE"/>
         <implements service="createDataResource" optional="true"/>
-        <attribute name="contentId" type="String" mode="INOUT" optional="false"/>
+        <attribute name="contentId" type="String" mode="INOUT" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingContentId"/>
+            </type-validate>
+        </attribute>
         <attribute name="templateDataResource" type="String" mode="IN" optional="true"/>
     </service>
     <service name="updateDataResource" engine="entity-auto" default-entity-name="DataResource" auth="true" invoke="update">
         <description>Update a DataResource</description>
         <permission-service service-name="genericDataResourcePermission" main-action="UPDATE"/>
         <auto-attributes include="nonpk" mode="IN" optional="true"/>
-        <attribute name="dataResourceId" type="String" mode="IN" optional="false"/>
+        <attribute name="dataResourceId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingDataResourceId"/>
+            </type-validate>
+        </attribute>
         <override name="objectInfo" allow-html="any"/>
         <override name="dataResourceName" allow-html="any"/>
     </service>

Modified: ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_output.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_output.xml?rev=1802667&r1=1802666&r2=1802667&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_output.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_output.xml Sat Jul 22 09:59:31 2017
@@ -26,7 +26,11 @@ under the License.
     <service name="sendPrintFromScreen" max-retry="0" engine="java"
         location="org.apache.ofbiz.content.output.OutputServices" invoke="sendPrintFromScreen">
         <description>Send Print From Screen Widget Service</description>
-        <attribute name="screenLocation" type="String" mode="IN" optional="false"/>
+        <attribute name="screenLocation" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingScreenLocation"/>
+            </type-validate>
+        </attribute>
         <attribute name="screenContext" type="Map" mode="IN" optional="true"/>
         <attribute name="contentType" type="String" mode="IN" optional="true"/>
         <attribute name="printerContentType" type="String" mode="IN" optional="true"/>
@@ -38,11 +42,19 @@ under the License.
     <service name="createFileFromScreen" max-retry="0" engine="java"
         location="org.apache.ofbiz.content.output.OutputServices" invoke="createFileFromScreen">
         <description>Create a File From Screen Widget Service</description>
-        <attribute name="screenLocation" type="String" mode="IN" optional="false"/>
+        <attribute name="screenLocation" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingScreenLocation"/>
+            </type-validate>
+        </attribute>
         <attribute name="screenContext" type="Map" mode="IN" optional="true"/>
         <attribute name="contentType" type="String" mode="IN" optional="true"/>
         <attribute name="filePath" type="String" mode="IN" optional="true"/>
-        <attribute name="fileName" type="String" mode="IN" optional="false"/>
+        <attribute name="fileName" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingFileName"/>
+            </type-validate>
+        </attribute>
     </service>
 
 </services>

Modified: ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_survey.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_survey.xml?rev=1802667&r1=1802666&r2=1802667&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_survey.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_survey.xml Sat Jul 22 09:59:31 2017
@@ -257,7 +257,11 @@ under the License.
             location="component://content/minilang/survey/SurveyServices.xml" invoke="createSurveyResponse">
         <description>Create a Survey Response w/ Response Answers</description>
         <auto-attributes mode="IN" entity-name="SurveyResponse" include="nonpk" optional="true"/>
-        <attribute name="answers" type="Map" mode="IN" optional="false" string-map-prefix="answers_"/>
+        <attribute name="answers" type="Map" mode="IN" optional="false" string-map-prefix="answers_">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingAnswers"/>
+            </type-validate>
+        </attribute>
         <attribute name="surveyResponseId" type="String" mode="INOUT" optional="true"/>
         <attribute name="productStoreSurveyId" type="String" mode="INOUT" optional="true"/>
         <attribute name="dataResourceId" type="String" mode="IN" optional="true"/>
@@ -266,7 +270,11 @@ under the License.
 
     <service name="surveyResponseProcessInterface" engine="interface">
         <description>Interface for Survey Response Processing services defined on the Survey</description>
-        <attribute name="surveyResponseId" type="String" mode="IN" optional="false"/>
+        <attribute name="surveyResponseId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingSurveyResponseId"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <service name="buildSurveyFromPdf" engine="java"
@@ -305,7 +313,11 @@ under the License.
         <attribute name="pdfFileNameIn" type="String" mode="IN" optional="true"/>
         <attribute name="contentId" type="String" mode="IN" optional="true"/>
         <attribute name="inputByteBuffer" type="java.nio.ByteBuffer" mode="IN" optional="true"/>
-        <attribute name="surveyResponseId" type="String" mode="IN" optional="false"/>
+        <attribute name="surveyResponseId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingSurveyResponseId"/>
+            </type-validate>
+        </attribute>
         <attribute name="outByteBuffer" type="java.nio.ByteBuffer" mode="OUT" optional="true"/>
     </service>
 
@@ -315,20 +327,32 @@ under the License.
         <attribute name="pdfFileNameIn" type="String" mode="IN" optional="true"/>
         <attribute name="contentId" type="String" mode="IN" optional="true"/>
         <attribute name="inputByteBuffer" type="java.nio.ByteBuffer" mode="IN" optional="true"/>
-        <attribute name="acroFieldMap" type="Map" mode="IN" optional="false"/>
+        <attribute name="acroFieldMap" type="Map" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingAcroFieldMap"/>
+            </type-validate>
+        </attribute>
         <attribute name="outByteBuffer" type="java.nio.ByteBuffer" mode="OUT" optional="true"/>
     </service>
 
     <service name="buildPdfFromSurveyResponse" engine="java"
             location="org.apache.ofbiz.content.survey.PdfSurveyServices" invoke="buildPdfFromSurveyResponse" auth="false">
         <description>Build Pdf From Survey Response</description>
-        <attribute name="surveyResponseId" type="String" mode="IN" optional="false"/>
+        <attribute name="surveyResponseId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingSurveyResponseId"/>
+            </type-validate>
+        </attribute>
         <attribute name="outByteBuffer" type="java.nio.ByteBuffer" mode="OUT" optional="false"/>
     </service>
     <service name="buildSurveyQuestionsAndAnswers" engine="java"
             location="org.apache.ofbiz.content.survey.PdfSurveyServices" invoke="buildSurveyQuestionsAndAnswers" auth="false">
         <description>Build list of questions and answers From Survey Response</description>
-        <attribute name="surveyResponseId" type="String" mode="IN" optional="false"/>
+        <attribute name="surveyResponseId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingSurveyResponseId"/>
+            </type-validate>
+        </attribute>
         <attribute name="questionsAndAnswers" type="List" mode="OUT" optional="false"/>
     </service>
 </services>

Modified: ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_website.xml
URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_website.xml?rev=1802667&r1=1802666&r2=1802667&view=diff
==============================================================================
--- ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_website.xml (original)
+++ ofbiz/ofbiz-framework/trunk/applications/content/servicedef/services_website.xml Sat Jul 22 09:59:31 2017
@@ -136,15 +136,35 @@
     <service name="autoCreateWebSiteContent" engine="simple" auth="true"
             location="component://content/minilang/website/WebSiteServices.xml" invoke="quickCreateWebSiteContent">
         <description>Auto Create Content Publish Points</description>
-        <attribute name="webSiteId" type="String" mode="IN" optional="false"/>
-        <attribute name="webSiteContentTypeId" type="List" mode="IN" optional="false"/>
+        <attribute name="webSiteId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingWebSiteId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="webSiteContentTypeId" type="List" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingWebSiteContentTypeId"/>
+            </type-validate>
+        </attribute>
     </service>
 
     <service name="generateMissingSeoUrlForWebsite" engine="simple" auth="true"
             location="component://content/minilang/website/WebSiteServices.xml" invoke="generateMissingSeoUrlForWebsite" transaction-timeout="36000000">
         <description>Generate Missing Seo URL's for Website</description>
-        <attribute name="webSiteId" type="String" mode="IN" optional="false"/>
-        <attribute name="prodCatalogId" type="String" mode="IN" optional="false"/>
-        <attribute name="typeGenerate" type="List" mode="IN" optional="false"/>
+        <attribute name="webSiteId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingWebSiteId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="prodCatalogId" type="String" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingProdCatalogId"/>
+            </type-validate>
+        </attribute>
+        <attribute name="typeGenerate" type="List" mode="IN" optional="false">
+            <type-validate>
+                <fail-property resource="ContentErrorUiLabels" property="ContentRequiredFieldMissingTypeGenerate"/>
+            </type-validate>
+        </attribute>
     </service>
 </services>