BPC validation rules based on member properties

Hi all,
validation rules seem to be very helpful in BPC NW but all examples I have found use members to define the rules. Is possible to use a member property to define a rule?
For example, my ENTITY dimension has a STATUS property. I want to ensure that the user cannot save data when this property is equal to "CLOSED".
thanks for your help,
Alex

Hi,
You can acheive this by using Use BADI implementation under Validation maintenance.
hope it helps...
regards,
Raju

Similar Messages

  • Validation Rule Error :Invalid Member Name In Lookup ({|0|}) value

    We defined fdm validation rule as follows.
    |Actual, April, 2010, YTD, ENTITY CURRENCY, Mumbai, TotalAssets, [NONE], [NONE], [NONE], [NONE], [NONE]|-|Actual, April, 2010, YTD, ENTITY CURRENCY, Mumbai, TotalLiabilities, [NONE], [NONE], [NONE], [NONE], [NONE]|= 0
    After testing the above rule definition, it gives below error message.
    Err = Invalid Member Name In Lookup ({|0|}) value in ID indicates invalid member)
    Scenario: ACTUAL [1]
    Year: 2010 [2010]
    Period: APRIL [83886080]
    View: YTD [2]
    Entity: MUMBAI [7]
    Parent Entity: MUMBAI [7]
    Value: ENTITY CURRENCY [-1]
    Account: TOTALASSETS [150]
    ICP: [NONE] [-1]
    C1: [MISSING_VALUE] [-1]
    C2: [NONE] [0]
    C3: [NONE] [0]
    C4: [NONE] [0]
    Lookup Error (2)
    Err = Invalid Member Name In Lookup ({|0|}) value in ID indicates invalid member)
    Scenario: ACTUAL [1]
    Year: 2010 [2010]
    Period: APRIL [83886080]
    View: YTD [2]
    Entity: MUMBAI [7]
    Parent Entity: MUMBAI [7]
    Value: ENTITY CURRENCY [-1]
    Account: TOTALLIABILITIES [-1]
    ICP: [NONE] [-1]
    C1: [MISSING_VALUE] [-1]
    C2: [NONE] [0]
    C3: [NONE] [0]
    C4: [NONE] [0]
    Also we could see in the Expression after lookup substitution (scratch pad): we are getting 0-0=0.
    Please provide you inputs.

    I have not looked closely, but C1 is showing as "Missing Value". Have you checked to see if [None] is a valid member for the account you have selected (TotalLiabilities)?

  • BPC Validation Rules and Reports

    We have validation rules set up, however, the client wants a report that shows the information that does not validate.  Does such a report exist? or do I need to write a script?

    Hi,
    You can acheive this by using Use BADI implementation under Validation maintenance.
    hope it helps...
    regards,
    Raju

  • Sorting dimension member based on two properties

    Hello,
    I am using SP BPC NW 10.0 SP04 (801).
    I have a query regarding sorting dimension member based on two properties. In Report Editor under Sorting and Grouping tab there is option for grouping based on single propery only.
    I have taken Profitcenter in Row axis. There are two properties TYPE and SEGMENT I have taken along with it as local member. A SEGMENT can have multiple TYPE(defined in TYPE property). I have sorted SEGMENT using Report Editor Sorting and Grouping. Now I want to sort TYPE of a segment also.
    Same thing is possible in MS version with SortCol1, SortCol2 etc.. How this can be possible in NW version. Can anyone help in this.
    Thanks & Regards,
    Deepak Palsaniya

    Hi Raju,
    Thanks for reply.
    I am using EPM add-in SP-18 Patch01, Although this is not possible in this patch also.
    Any help in this?
    Best Regards,
    Deepak

  • BPC 7.5 - Member properties disabled (grey marked)

    Since the upgrade to BPC 7.5 some of the member properties are greyed (disabled).
    Is it possible to change this setting somewhere?

    Hello Martin,
    now it's clear your question. The greyed properties don't have the check on the InApp properties of the dimension, so they aren't available in the OLAP and you can't use they in MDX functions or instructions.
    If you need some of these properties on the OLAP you must go on admin console\modify dimension, check "modify dimension property" on step 2, click on step 3 and check the InApp for these properties, so they will be black.
    Kind regards
    Roberto
    Edited by: Roberto Vidotti on Jan 31, 2012 12:06 PM

  • Restricting TDS based on validation rules for vendor invoice posting

    I have two Tax Types assigned in the vendor master. If at the time of invoicing user do not delete the unwanted tax types, system posts both the amounts related to both the tax types.
    User has to necessarily delete one tax type which is not required and then proceed with simulating the vendor invoice.
    Can this be controlled thru validation rules ? Even if the user forgets to delete the unwanted tax type while passing vendor invoice, validation rule must throw an error asking to delete the unwanted tax types before simulating the vendor invoice.
    Please help how to build such validation rule with detailed procedure.
    Thanks
    Ravi

    Hi Ravi,
    I hope you have selected both withholding tax type and code at the vendor master level itself.
    It is generally advisable to select withholding tax type at vendor master level and leave the field withholding tax code to be in display mode. Hence during vendor master creation, they can only select withholding tax type and not the withholding tax code. Ensure liable to tax should be ticked against all withholding tax types.
    During invoice entry creation either in FB60 or in MIRO, they can select the withholding tax code next to the withholding tax type and simulate and post.
    In your case, you cannot delete the withholding tax types at invoice entry level. Ensure to delete the unwanted withholding tax type from your vendor master itself, I mean delete only the withholding tax codes pertaining to that unwanted withholding tax type.
    Hope this helps. Assign points if useful
    Regards,
    Dwarak.

  • Validation rules problem

    Hi,
    I am trying to create some validation rules, the rules works just fine for me. I am struggling with the "Other Source Dimensions Members" column in the Validation rules definition. As I understand this column is that I can filter out specific data that should be used in this validation. In my case I want to filter out specific entities.
    To select those entities I would like to either use a property from my entity dimension or where entity is not equal to a specified value...
    What I have tried:
    ENTITY.DIMLIST_PPC<>""
    ENTITY.DIMLIST_PPC="X"
    [ENTITY].properties("DIMLIST_PPC")="X"
    I can't get any of above to work the only thing I can get to work is to use for example:
    ENTITY=ABC123
    it would also work for me to use
    ENTITY<>XYZ123 but I can't get that to work either.
    Would really appreciate any input/ideas on this.
    I'm on BPC 10 MS SP15.
    Brgds
    Mattias

    Hi Mattias,
    sorry to confirm you that "Other Source Dimensions Members" field does not support properties also in 7.5 version.
    So if you are not able to filter these entities using another dimension (e.g. ACCTDetail) (all dims condition separate by a comma) I think you have to use some script.
    Regards
         Roberto

  • Validation Rules problems

    Hello.
    I've got some strange results for Validation Rules (business rules):
    1. When i ran this rule it didn't sum up account that was defined via dimension logic formula. It summed up base member accounts and parents account but didn't sum up accounts defined via dimension logic formula. Had anyone the same problem? Is it ok or not?
    2. When the number of account_r or account_l are different i receive error when validating rules: "Record ( Seq = 4 ): Field ACCOUNT_R value cannot be blank " and "Record ( Seq = 4 ): Field SUBTABLES_R value cannot be blank". Is it ok or not? As far as i know it works in BPC for MS.
    Please, help to clarify what is right and wrong.

    There are already some threads on this topic.
    Unfortunately, they don't give solutions - not yet ;)
    Custom Method Validator
    addVetoableChangeListener for attribute doesn't seem to get fired
    HTH,
    Adrian

  • Issue with simple validation rule

    Hi All,
    Environment: HP app which is EPMA deployed
    Version: 11.1.2.1
    I have a strange issue writing a validation rule through calc mgr.
    scenario: We are performing allocations over entity dimension based on %ages entered on a specific account member say 'Input%age' on total to be allocated value. For example: consider a parent entity P with 4 children as mentioned below.
    P         (parent) (Type: Dynamic)
    --A         (child) (Type: Store)
    --B         (child) (Type: Store)
    --C         (child) (Type: Store)
    --D         (child) (Type: Store)
    Need: The allocation should happen only when the sum of  %ages on each of the child roll up to 1 for their respective parent. Else allocation should not happen and message should be displayed to users.
    The current snippet:
    FIX(@Relative("P'',0))
    "AllocValue"
    IF('P"->'Input%age' == 1)
         'Allocvalue" = 'Input%age' * "TotalEntityValue";
    ENDIF
    ENFIX
    Issue:
    1. The script never works correctly even if the sum of %ages for all child is 1. I have tried making '1.0', '1.00' ,'100','100.00' etc but it didn't work. (Note: If user enters 0.2 as %age, the web-form shows it as 20%)
    2. In case the sum of %ages is not equal to 1, allocation happens only for last child D.
    3. If %age condition is removed, allocation happens as expected.
    Any input or suggestion is highly appreciated.
    Thanks in advance..

    Perform the following check:
    1. during the time of calculation the "Input%age" is one (i mean aggregated).
    2. Is  your condition is valid. I mean if you have missed "BegBalance" or any valid combination.
         Best way is to try excel retrieve and match the combination with the if condition

  • Not able to run validation using validation.xml & validator-rules.xml

    Hello Friends,
    I am not able to run validation using validation.xml & validator-rules.xml.
    Entire code in running prefectly but no error messages are prompted.
    Following is my code:
    File Name : struts-config.xml
    <struts-config>
    <!-- Form Beans Configuration -->
    <form-beans>
    <form-bean name="searchForm"
    type="com.solversa.SearchForm"/>
    </form-beans>
    <!-- Global Forwards Configuration -->
    <global-forwards>
    <forward name="search" path="/search.jsp"/>
    </global-forwards>
    <!-- Action Mappings Configuration -->
    <action-mappings>
    <action path="/search"
    type="com.solversa.SearchAction"
    name="searchForm"
    scope="request"
    validate="true"
    input="/search.jsp">
    </action>
    </action-mappings>
    <!-- Message Resources Configuration -->
    <message-resources
    parameter="ApplicationResources"/>
    <!-- Validator Configuration -->
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames"
    value="/WEB-INF/validator-rules.xml,
    /WEB-INF/validation.xml"/>
    </plug-in>
    </struts-config>
    <br> File Name : <b> validation.xml </b>
    <form-validation>
    <formset>
    <form name="searchForm">
    <field property="name" depends="minlength">
    <arg key="label.search.name" position = "0"/>
    <arg1 name="minlength" key="${var:minlength}" resource="false"/>
    <var>
    <var-name>minlength</var-name>
    <var-value>5</var-value>
    </var>
    </field>
    <field property="ssNum" depends="mask">
    <arg0 key="label.search.ssNum"/>
    <var>
    <var-name>mask</var-name>
    <var-value>^\d{3}-\d{2}-\d{4}$</var-value>
    </var>
    </field>
    </form>
    </formset>
    </form-validation>
    <br> File Name : <b> SearchForm.java </b>
    package com.jamesholmes.minihr;
    import java.util.List;
    import org.apache.struts.validator.ValidatorForm;
    public class SearchForm extends ValidatorForm
    private String name = null;
    private String ssNum = null;
    private List results = null;
    public void setName(String name) {
    this.name = name;
    public String getName() {
    return name;
    public void setSsNum(String ssNum) {
    this.ssNum = ssNum;
    public String getSsNum() {
    return ssNum;
    public void setResults(List results) {
    this.results = results;
    public List getResults() {
    return results;
    <br> File Name : <b> SearchAction.java </b>
    package com.jamesholmes.minihr;
    import java.util.ArrayList;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    public final class SearchAction extends Action
    public ActionForward execute(ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response)
    throws Exception
    EmployeeSearchService service = new EmployeeSearchService();
    ArrayList results;
    SearchForm searchForm = (SearchForm) form;
    // Perform employee search based on what criteria was entered.
    String name = searchForm.getName();
    if (name != null && name.trim().length() > 0) {
    results = service.searchByName(name);
    } else {
    results = service.searchBySsNum(searchForm.getSsNum().trim());
    // Place search results in SearchForm for access by JSP.
    searchForm.setResults(results);
    // Forward control to this Action's input page.
    return mapping.getInputForward();
    <br> File Name : <b> EmployeeSearchService.java </b>
    package com.jamesholmes.minihr;
    import java.util.ArrayList;
    public class EmployeeSearchService
    /* Hard-coded sample data. Normally this would come from a real data
    source such as a database. */
    private static Employee[] employees =
    new Employee("Bob Davidson", "123-45-6789"),
    new Employee("Mary Williams", "987-65-4321"),
    new Employee("Jim Smith", "111-11-1111"),
    new Employee("Beverly Harris", "222-22-2222"),
    new Employee("Thomas Frank", "333-33-3333"),
    new Employee("Jim Davidson", "444-44-4444")
    // Search for employees by name.
    public ArrayList searchByName(String name) {
    ArrayList resultList = new ArrayList();
    for (int i = 0; i < employees.length; i++) {
    if (employees.getName().toUpperCase().indexOf(name.toUpperCase()) != -1) {
    resultList.add(employees[i]);
    return resultList;
    // Search for employee by social security number.
    public ArrayList searchBySsNum(String ssNum) {
    ArrayList resultList = new ArrayList();
    for (int i = 0; i < employees.length; i++) {
    if (employees[i].getSsNum().equals(ssNum)) {
    resultList.add(employees[i]);
    return resultList;
    <br> File Name : <b> Employee.java </b>
    package com.solversa;
    public class Employee
         private String name;
         private String ssNum;
         public Employee(String name, String ssNum) {
         this.name = name;
         this.ssNum = ssNum;
         public void setName(String name) {
         this.name = name;
         public String getName() {
         return name;
         public void setSsNum(String ssNum) {
         this.ssNum = ssNum;
         public String getSsNum() {
         return ssNum;
    Pls help me out.
    Not able to prompt errors.

    Hello Friends,
    I am not able to run validation using
    validation.xml & validator-rules.xml.
    Entire code in running prefectly but no error
    messages are prompted.
    Following is my code:
    File Name : struts-config.xml
    <struts-config>
    <!-- Form Beans Configuration -->
    <form-beans>
    <form-bean name="searchForm"
    type="com.solversa.SearchForm"/>
    ans>
    <!-- Global Forwards Configuration -->
    <global-forwards>
    <forward name="search" path="/search.jsp"/>
    global-forwards>
    <!-- Action Mappings Configuration -->
    <action-mappings>
    <action path="/search"
    type="com.solversa.SearchAction"
    name="searchForm"
    scope="request"
    validate="true"
    input="/search.jsp">
    tion>
    </action-mappings>
    <!-- Message Resources Configuration -->
    <message-resources
    parameter="ApplicationResources"/>
    <!-- Validator Configuration -->
    <plug-in
    className="org.apache.struts.validator.ValidatorPlugI
    ">
    <set-property property="pathnames"
    value="/WEB-INF/validator-rules.xml,
    /WEB-INF/validation.xml"/>
    >
    </struts-config>
    <br> File Name : <b> validation.xml </b>
    <form-validation>
    <formset>
    <form name="searchForm">
    <field property="name" depends="minlength">
    <arg key="label.search.name" position = "0"/>
    <arg1 name="minlength" key="${var:minlength}"
    resource="false"/>
    <var>
    <var-name>minlength</var-name>
    <var-value>5</var-value>
    </var>
    </field>
    <field property="ssNum" depends="mask">
    <arg0 key="label.search.ssNum"/>
    <var>
    <var-name>mask</var-name>
    <var-value>^\d{3}-\d{2}-\d{4}$</var-value>
    </var>
    </field>
    /form>
    </formset>
    form-validation>
    <br> File Name : <b> SearchForm.java </b>
    package com.jamesholmes.minihr;
    import java.util.List;
    import org.apache.struts.validator.ValidatorForm;
    public class SearchForm extends ValidatorForm
    private String name = null;
    private String ssNum = null;
    private List results = null;
    public void setName(String name) {
    this.name = name;
    public String getName() {
    return name;
    public void setSsNum(String ssNum) {
    this.ssNum = ssNum;
    public String getSsNum() {
    return ssNum;
    public void setResults(List results) {
    this.results = results;
    public List getResults() {
    return results;
    <br> File Name : <b> SearchAction.java </b>
    package com.jamesholmes.minihr;
    import java.util.ArrayList;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    public final class SearchAction extends Action
    public ActionForward execute(ActionMapping
    mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response)
    throws Exception
    EmployeeSearchService service = new
    EmployeeSearchService();
    ArrayList results;
    SearchForm searchForm = (SearchForm) form;
    // Perform employee search based on what criteria
    was entered.
    String name = searchForm.getName();
    if (name != null && name.trim().length() > 0) {
    results = service.searchByName(name);
    else {
    results =
    service.searchBySsNum(searchForm.getSsNum().trim());
    // Place search results in SearchForm for access
    by JSP.
    searchForm.setResults(results);
    // Forward control to this Action's input page.
    return mapping.getInputForward();
    <br> File Name : <b> EmployeeSearchService.java </b>
    package com.jamesholmes.minihr;
    import java.util.ArrayList;
    public class EmployeeSearchService
    /* Hard-coded sample data. Normally this would come
    from a real data
    source such as a database. */
    ivate static Employee[] employees =
    new Employee("Bob Davidson", "123-45-6789"),
    new Employee("Mary Williams", "987-65-4321"),
    new Employee("Jim Smith", "111-11-1111"),
    new Employee("Beverly Harris", "222-22-2222"),
    new Employee("Thomas Frank", "333-33-3333"),
    new Employee("Jim Davidson", "444-44-4444")
    // Search for employees by name.
    public ArrayList searchByName(String name) {
    ArrayList resultList = new ArrayList();
    for (int i = 0; i < employees.length; i++) {
    if
    (employees.getName().toUpperCase().indexOf(name.toU
    pperCase()) != -1) {
    resultList.add(employees[i]);
    return resultList;
    // Search for employee by social security number.
    public ArrayList searchBySsNum(String ssNum) {
    ArrayList resultList = new ArrayList();
    for (int i = 0; i < employees.length; i++) {
    if (employees[i].getSsNum().equals(ssNum)) {
    resultList.add(employees[i]);
    return resultList;
    <br> File Name : <b> Employee.java </b>
    package com.solversa;
    public class Employee
         private String name;
         private String ssNum;
         public Employee(String name, String ssNum) {
         this.name = name;
         this.ssNum = ssNum;
         public void setName(String name) {
         this.name = name;
         public String getName() {
         return name;
         public void setSsNum(String ssNum) {
         this.ssNum = ssNum;
         public String getSsNum() {
         return ssNum;
    Pls help me out.
    Not able to prompt errors.
    Hi,
    Your error message are not displaying because u does not made Message-Resoucrce property file (Resource Bundle) when you make it .
    give it entry in
    struts-config.xml
    <message-resources parameter="ApplicationResources" />
    and
    define key and corresponding error message to key in this ApplicationResources i.e
    #Error Resources
    label.search.ssNum=Plz Enter correct ssNum

  • Dynamic Rule based implementation in PL/SQL

    Hi,
    We are trying to implement a dynamic rule based application in Oracle 9i. Its simple logic where we store expressions as case statments and actions seperated by commas as follows.
    Rule: 'Age > 18 and Age <65'
    True Action: 'Status = ''Valid'' , description = ''age in range'''
    False Action: 'Status =''Invalid'', Description=''Age not in range'''
    Where Age,Status, description are all part of one table.
    One way of implementing this is fire rule for each record in the table and then based on true or false call action as update.
    i.e
    select (case when 'Age > 18 and Age <65' then 1 else 0 end) age_rule from tableX
    (above query will in in a cursor xcur)
    Then we search for
    if age_rule = 1 then
    update tablex set Status = ''Valid'' , description = ''age in range'' where id=xcur.id;
    else
    update tablex set Status =''Invalid'', Description=''Age not in range'' where id=xcur.id;
    end if;
    This method will result in very slow performance due to high i/o. We want to implement this in collection based method.
    Any ideas on how to dynamically check rules and apply actions to collection without impact on performance. (we have nearly 3million rows and 80 rules to be applied)
    Thanks in advance

    Returning to your original question, first of all, there is a small flaw in the requirements, because if you apply all the rules to the same table/cols, than the table will have results of only last rule that was processed.
    Suppose rule#1:
    Rule: 'Age > 18 and Age <65'
    True Action: 'Status = ''Valid'' , description = ''age in range'''
    False Action: 'Status =''Invalid'', Description=''Age not in range'''
    and Rule#2:
    Rule: 'Name like ''A%'''
    True Action: 'Status = 'Invalid'' , description = ''name begins with A'''
    False Action: 'Status =''Invalid'', Description=''name not begins with A'''
    Then after applying of rule#1 and rule#2, results of the rule#1 will be lost, because second rule will modify the results of the first rule.
    Regarding to using collections instead of row by row processing, I think that a better approach would be to move that evaluating cursor inside an update statement, in my tests this considerably reduced processed block count and response time.
    Regarding to the expression filter, even so, that you are not going to move to 10g, you still can test this feature and see how it is implemented, to get some ideas of how to better implement your solution. There is a nice paper http://www-db.cs.wisc.edu/cidr2003/program/p27.pdf that describes expression filter implementation.
    Here is my example of two different methods for expression evaluation that I've benchmarked, first is similar to your original example and second is with expression evaluation moved inside an update clause.
    -- fist create two tables rules and data.
    drop table rules;
    drop table data;
    create table rules( id number not null primary key, rule varchar(255), true_action varchar(255), false_action varchar(255) );
    create table data( id integer not null primary key, name varchar(255), age number, status varchar(255), description varchar(255) );
    -- populate this tables with information.
    insert into rules
    select rownum id
    , 'Age > '||least(a,b)||' and Age < '||greatest(a,b) rule
    , 'Status = ''Valid'', description = ''Age in Range''' true_action
    , 'Status = ''Invalid'', description = ''Age not in Range''' false_action
    from (
    select mod(abs(dbms_random.random),60)+10 a, mod(abs(dbms_random.random),60)+10 b
    from all_objects
    where rownum <= 2
    insert into data
    select rownum, object_name, mod(abs(dbms_random.random),60)+10 age, null, null
    from all_objects
    commit;
    -- this is method #1, evaluate rule against every record in the data and do the action
    declare
    eval number;
    id number;
    data_cursor sys_refcursor;
    begin
    execute immediate 'alter session set cursor_sharing=force';
    for rules in ( select * from rules ) loop
    open data_cursor for 'select case when '||rules.rule||' then 1 else 0 end eval, id from data';
    loop
    fetch data_cursor into eval, id;
    exit when data_cursor%notfound;
    if eval = 1 then
    execute immediate 'update data set '||rules.true_action|| ' where id = :id' using id;
    else
    execute immediate 'update data set '||rules.false_action|| ' where id = :id' using id;
    end if;
    end loop;
    end loop;
    end;
    -- this is method #2, evaluate rule against every record in the data and do the action in update, not in select
    begin
    execute immediate 'alter session set cursor_sharing=force';
    for rules in ( select * from rules ) loop
    execute immediate 'update data set '||rules.true_action|| ' where id in (
    select id
    from (
    select case when '||rules.rule||' then 1 else 0 end eval, id
    from data
    where eval = 1 )';
    execute immediate 'update data set '||rules.false_action|| ' where id in (
    select id
    from (
    select case when '||rules.rule||' then 1 else 0 end eval, id
    from data
    where eval = 0 )';
    end loop;
    end;
    Here are SQL_TRACE results for method#1:
    call count cpu elapsed disk query current rows
    Parse 37 0.01 0.04 0 0 0 0
    Execute 78862 16.60 17.50 0 187512 230896 78810
    Fetch 78884 3.84 3.94 2 82887 1 78913
    total 157783 20.46 21.49 2 270399 230897 157723
    and this is results for method#2:
    call count cpu elapsed disk query current rows
    Parse 6 0.00 0.00 0 0 0 0
    Execute 6 1.93 12.77 0 3488 170204 78806
    Fetch 1 0.00 0.00 0 7 0 2
    total 13 1.93 12.77 0 3495 170204 78808
    You can compare this two methods using SQL_TRACE.

  • How to Enforce Sharepoint 2013 content type validation rules when modifying document using Word 2013

    Good day,
    I have two date columns (Start Date and End Date) in a content type in Sharepoint 2013.  A file library uses this content type.
    In the document template I have the two dates (Start Date and End Date) showing in the Document Panel.  I can edit them well enough and they show in the document correctly.
    In the content type I have validation rules that the End Date must be greater than the Start Date. 
    The question is, how can I enforce this validation on the client side in Word.  Is there anyway to achieve this?
    The user will not have access to change the document properties in Sharepoint. (Not my call)
    Thank-you!

    The "panel" is called the Document Information Panel in SharePoint. You can customize this using InfoPath from the page where you created / edited your Content Type. Go to Settings, Site Settings Content Types, edit your content type, click Document
    Information Panel and then click "Edit this template". In InfoPath you can create a Rule to enforce your dates.
    This may require the Enterprise Edition of SharePoint to support the InfoPath Forms Services.
    Mike Smith TechTrainingNotes.blogspot.com
    Books:
    SharePoint 2007 2010 Customization for the Site Owner,
    SharePoint 2010 Security for the Site Owner

  • How can I use database constraints in entity attribute validation rules

    I am interested in using database constraints to validate attributes in entity objects.
    I would like to implement a JboValidatorInterface in a way that I can use an operator like "GreaterOrEqualTo" to compare with values retrieved from the database for a column associated with an entity object attribute.
    I have used this pattern with success in other environments, where the user community decides the minimum value for a thing should change from x to y, and simply changing a database object also changes the validation methods of all applications which access it.
    I am not certain that column constraints are the appropriate vehicle, but so far that seems to be the case.
    I see that you can create a validation rule which makes comparisons against a view object attribute. I am wondering if there is a generic way to use standardized names for column constraints along with ADF hooks into properties of database columns, to avoid writing individual queries for each attribute.
    Thanks in advance!!!

    Jeffrey,
    If you already have constraints on the underlying tables, why do you need to validate them in ADF BC? You can certainly use some framework extension classes to give the user nicely formatted error messages - see ER: ADF BC - allow custom error msgs for common exceptions (e.g. DML) for more details.
    I am using this method so that anything that is enforced in the database (check constraints, foreign keys, unique constraints, etc) are not enforced in the ADF BC layer as well - after all, there's more than one way to get data into a table, and DB constraints ensure that even if data gets in through another mechanism (apart from the ADF application), it is valid. My 2 cents, of course.
    Hope this helps,
    John

  • Conditional Execution of Validation Rule defined in EO

    Hi All
    I'm developing a web application using jdeveloper 11.1.0.3
    I have a drop down list with some values. There is a compare validation rule defined in EO object for an attribute. But I dont want to fire this validation only when a certain value from the drop down list is selected.
    When we go to edit option of this validation rule there is a tsb called validation execution. I want to know how to fill conditional execution area to full fill my problem

    You can create a Groovy expression in the 'Validation Execution' tab to return true based on which the validation rule will be applied. The new value of the attribute can be accessed via the attribute context validation variable 'newValue'
    Check this blog for more details on validation rules:
    http://blogs.oracle.com/workingwithadf/2010/11/adf-bc_business_rulesvalidation_eovo.html
    hope this helps.
    Regards,
    ~K

  • Validation rule for expense type

    Hi,
    I'd like to know if it's possible to create a validation rule for expense type and personnel number.
    I need to lock some expense types for some personnel number.
    Thanks in advance.
    Osmar Tardivo.

    Hello,
    Sorry to say but I am not aware of any customization which restrict an expenses type based on personal number..
    There is a setting which can restrict Travel Expense Types based on Employee Grouping. Please go through below path.
    Travel Management-> Travel Expenses-> Control Parameters for Travel Expenses-> Control Parameters from Travel Privileges-> Define Employee Grouping for Travel Expense Types
    Hope this help you!
    Thanks,
    Vaibhav

Maybe you are looking for