Custom Validator Types in BC4J

HI,
I am having a few problems implementing a custom validator type. Through following the documentation, I have created a new type via the registered rules tabs attached to my business components project. The created class extends oracle.jbo.server.rules.JboCompare Validator.
Once registered, the class appears in the validation tab of the edit Entity wizard as expected.
However, when I try to enforce a validation rule based on the created bean, I get the following :
Cannot create an instance of the validation rule bean or editor.
Validation rule class may not be in classpath.
Exception oracle.jbo.dt.object.JboException(ClassNotFoundException)
The class created is definately in the classpath for my project. I have also tried creating the class inititally, and then adding the class to the registered rules, as opposed to creating a new class via registered rules.
Is this a bug, or have I missed something?
Thanks,
DB
null

Sorry for the delay in response on this -- it took me some time to track down the problem.
When you create a customer validator, the class is added to your current project. However, the IDE doesn't include the myclasses directory as part of it's class path.
The workaround is to edit the [JDeveloper_home]\bin\jdeveloper.ini, and add your current projects class output path to the IDEClassPath (e.g. IDEClassPath=..\lib\jdeveloper_intl.zip;...;..\myclasses)
Thanks for the info. I have logged this as a bug, so hopefully we can resolve it in a future release.
-- Brian

Similar Messages

  • Problem with custom validated data types using domain on 11g

    Hi,
    I ' m on a migration process from 10 to 11 and I notice that a custom domain didn't work correctly anymore
    to be more specific every time that I was submiting a page a was getting an error cannot convert from myclass to oracle.jbo.domain.String
    I search the forum and I saw a similar problem
    Cannot convert type class java.lang.String to class oracle.jbo.domain.Clob
    at which Frank says that it is a known bug and suggests a work around.
    I use the workaround and it worked but some more issues came up:
    1. If the validation fails I get the error that I throw at the validate method not in a popup with just my message
    but in the whole window with the whole error stack, meaning that my custom validation is not handled like native ADF validation errors by
    the framework (at 10.1.3.4 worked OK)
    2 If i dont give a value at the attribute in the validation phase mdata variable is not null but is length is zero (at 10.1.3.4 its value was null)
    public class AFM implements DomainInterface, Serializable {
    public AFM(String val) {
    mData = new String(val);
    validate();
    private String mData;
    protected void validate() {
    // ### Implement custom domain validation logic here. ###
    mData==null // returns false
    mData.length()==0 // returns true
    3. Can i force validation only for new or updated values? I saw that the validation process is taking place every time a row is fetched.
    This is not only a performance issue, the bigger problem is that if a fetched from the DB value fails the validation an error is return but the
    user cannot change the value to correct it.
    TIA
    Tilemahos

    since i don't get any answer I wonder if i should have use a more provocative title like
    "custom domains in 11g don't work"
    is it true?
    Tilemahos

  • SharePoint 2013 Custom Content Type with Site Column custom validations

    Hello,
    Can somebody please suggest me how I can create custom content type with site columns with custom validation to site columns programmatically?
    Thanks,
    Praveen Kumar Padmakaran

    Hi,
    From your description, my understanding is that you want to create content type with site column with validation.
    You could create a site column, and add some validation to the site column. After you could create a custom content type, please add the site column with validation to the content type. Please refer
    to this code below:
    static void Main(string[] args)
    // replace your url
    using (SPSite site = new SPSite("http://sp/sites/sp2013"))
    using (SPWeb web = site.OpenWeb())
    //define the type of the field
    SPFieldType type = SPFieldType.Number;
    // create a site column
    SPField field = CreateSiteColumn(web, "newTest", type, "");
    // add custom formula for the field
    SPFieldNumber fieldNumber = web.Fields.GetField("newTest") as SPFieldNumber;
    fieldNumber.ValidationFormula = "=[newTest]>5";
    fieldNumber.ValidationMessage = ">5";
    fieldNumber.Update();
    SPContentTypeId parentItemCTypeId = web.ContentTypes[0].Id;
    // create custom content type
    SPContentType contentType = CreateSiteContentType(web, "newContent", parentItemCTypeId, "Custom Content Types");
    // add the site column to the content type
    AddFieldToContentType(web, contentType, field);
    // add fiedl to contenttype
    public static void AddFieldToContentType(SPWeb web, SPContentType contentType, SPField field)
    if (contentType == null) return;
    if (contentType.Fields.ContainsField(field.Title)) return;
    SPFieldLink fieldLink = new SPFieldLink(field);
    contentType.FieldLinks.Add(fieldLink);
    contentType.Update();
    // create a custom content type
    public static SPContentType CreateSiteContentType(SPWeb web, string contentTypeName,SPContentTypeId parentItemCTypeId, string group)
    if (web.AvailableContentTypes[contentTypeName] == null)
    SPContentType itemCType = web.AvailableContentTypes[parentItemCTypeId];
    SPContentType contentType =
    new SPContentType(itemCType, web.ContentTypes, contentTypeName) { Group = @group };
    web.ContentTypes.Add(contentType);
    contentType.Update();
    return contentType;
    return web.ContentTypes[contentTypeName];
    // create a site column
    public static SPField CreateSiteColumn(SPWeb web, string displayName,SPFieldType fieldType, string groupDescriptor)
    if (!web.Fields.ContainsField(displayName))
    string fieldName = web.Fields.Add(displayName, fieldType, false);
    SPField field = web.Fields.GetFieldByInternalName(fieldName);
    field.Group = groupDescriptor;
    field.Update();
    return field;
    return web.Fields[displayName];
    You could refer to these articles:
    C# code to create Site Column, Content Type, and add fields to Content Type
    http://spshare.blogspot.jp/2013/10/c-code-to-create-site-column-content.html
    How to do custom validation for site column in SharePoint
    http://www.c-sharpcorner.com/uploadfile/anavijai/how-to-do-custom-validation-for-site-column-in-sharepoint/
    Best Regards,
    Vincent Han
    TechNet Community Support
    Please remember to mark the replies as answers if they help, and unmark the answers if they provide no help. If you have feedback for TechNet Support, contact
    [email protected].

  • How to create Image as Custom Property Type used in Configurable Web Part?

    I wanted to create custom configurable web part property for Image.
    Example - the screenshot of Image property used in Image web part is shown below:
    My goal is to create as many images as possible in custom configurable web part.
    I tried to write the code:
    [WebBrowsable(true),
    WebDisplayName("Example Photo"),
    WebDescription("Example Photo of the user"),
    Category("Custom User Profile"),
    Personalizable(PersonalizationScope.Shared)]
    public Image ExampleUserPhoto { get; set; }
    However, the result does not display Image configurable web part property.
    I wonder why the data type Image does not cause the custom web part to have Image configurable web part property.
    Other data types such as Boolean, Enum, Integer, String and DateTime can be used.
    How can I create Image as Custom Property Type used in Configurable Web Part?

    I have examined that context node __00 has been enhanced,and  has a class name  z___00. But  when I created a new attirubute by right click " Attributes" with wizard under context node __00.There is still  a error message "view is not enhaced or copied with wizard".
    But  when  I created a method  "getvaliation "  in the class of context node zcl__00, the attribute  'valiation' automatically created(at the same time the method "getvaliation' automatically  created for the attribute 'valiation') and I need not to create attibute 'validation' by wizard .  It seemed as if the problem is resloved. But when I make test for it in web ui .There is a runtime erro message.
    Do I need to make some configurations in  the business object layer  for the checkbox? but  the checkbox is only used as a flag  to decide whether a backgoud job is needed to be executed.
    Edited by: samhuman on Jun 22, 2010 10:31 AM

  • Failed to fetch a list of all custom record types

    Hi,
    I tried to fetch a list of all custom record types. I tried with below piece of code, but failed with below error message. Can anybody help me to resolve this issue:
    CustomRecordTypeReadAll_Input cusRecTypeAllIn = new CustomRecordTypeReadAll_Input();
    CustomRecordTypeServiceProxy proxy = new CustomRecordTypeServiceProxy(endpoint);
                   CustomRecordTypeReadAll_Output out = proxy.customRecordTypeReadAll(cusRecTypeAllIn);
    Detail error message:
    AxisFault
    faultCode: {http://xml.apache.org/axis/}HTTP
    faultSubcode:
    faultString: (400)Bad Request
    faultActor:
    faultNode:
    faultDetail:
         {}:return code: 400
    <?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Client</faultcode><faultstring>Client</faultstring><detail><ErrorCode>SBL-ODU-01007</ErrorCode><ErrorMessage>The HTTP request did not contain a valid SOAPAction header. The value of the header was "document/urn:crmondemand/ws/odesabs/CustomRecordType/:CustomRecordTypeReadAll"</ErrorMessage></detail></soap:Fault></soap:Body></soap:Envelope>
         {http://xml.apache.org/axis/}HttpErrorCode:400
    (400)Bad Request
    //////////////////////////////////////////////////////////////////////////////////

    Thank you very much for valuable reply.
    I am now using WS-Security to include credentials in request. I have also ensured that "Customization - Customize Application" setting is enable for my OCOD account. But now, i am getting following exception:
    java.lang.IllegalArgumentException: faultCode argument for createFault was passed NULL at com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl.createFault(SOAPFactory1_1Impl.java:55)
         at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:169)
         at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:111)
         at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
         at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
         at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107)
         at $Proxy28.customRecordTypeRead(Unknown Source)
         at Main.main(Main.java:75)
    I have also tried customRecordTypeReadAll API butgetting the same exception.
    Can you please suggest me what can be the reason behind above exception?
    For reference: The complete SOAP request message:
    <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Header>
    <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" S:mustUnderstand="1">
    <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="XWSSGID-1298986875153522346527">
    <wsse:Username>myusername</wsse:Username>
    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">mypassword</wsse:Password>
    <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">pRkWQ9ZcOrJngcGijmok0skB</wsse:Nonce><wsu:Created>2011-03-01T13:43:19.669Z</wsu:Created></wsse:UsernameToken></wsse:Security></S:Header><S:Body><ns2:CustomRecordTypeRead_Input xmlns="urn:/crmondemand/xml/customrecordtype/data" xmlns:ns2="urn:crmondemand/ws/odesabs/customrecordtype/" xmlns:ns3="urn:/crmondemand/xml/customrecordtype/query">
    <ns3:CustomRecordType>
    <ns3:Name>Custom Object 01</ns3:Name>
    <ns3:SingularName>TestCustom</ns3:SingularName>
    <ns3:PluralName>TestCustom</ns3:PluralName>
    <ns3:ShortName>TestCustom</ns3:ShortName>
    </ns3:CustomRecordType>
    </ns2:CustomRecordTypeRead_Input>
    </S:Body>
    </S:Envelope>
    Thanks
    Ravish
    Edited by: 833189 on Mar 1, 2011 6:02 AM

  • Dependant Validation Type in General Ledger

    Can we make use of Dependant Validation Type in General Ledger, the need arises because we have 2 segments States and Branches. Now the Branches are dependant based on the States. So can I make use of Dependant Validation Type. Since Oracle recommends only Independant Validation will this have any impact
    Regards
    Dinesh

    Hello,
    I create a validation on a new custom field (for example XXX).
    According to the status group this field is mandatory.
    So, when I try to post a FB50L, I enter the accout in the line item and a value is required for this field XXX.
    If I put a value different from one in a specific set (entered in the validation) I have an error message.
    But, if I populate in the header the field Ledger Group with 0L I can populate the field XXX with every value and the validation doesn't work.
    Hope, now is more clear.
    Thanks a lot in advance
    Cheers,
    Emanuela

  • Custom Process Type in PC - ABAP pgm that returns success/fail status

    Hello All,
    I need to create a custom process type so that an ABAP program can return success/failure message to its successor. browsing through the forum posts i came across some links to a How-To document. but that link doesnt seem to be valid anymore.
    I dint get much idea looking into the IF_RSPC_* interfaces and CL_RSPC_ABAP class.
    Please let me know if anybody has documentation on this topic. any help would be appreciated.
    Thanks,
    Rit

    Hi,
    you can goto 'rspc' and then settings->maintain process types. there you can define your possibilities/results.
    i read somewhere in forum like for failure in abap just need to raise error message within abap routine.
    hope it helps,
    regards,
    anil

  • Custom DC types?

    I have a feeling this is impossible, but I'll ask anyway
    I'm wondering if it's possible to create custom DC types.  For instance, we do a lot of Struts development at my company and therefore every one of our web apps need a struts-config file and validation files, etc.  It would be nice if we could create a custom web DC that already had all those files in them so that when a developer created a new DC instead of picking one of type web he could pick one of type, say, Struts and it would have everything a Web DC has, but also all the struts files.
    Any way to do something like that?
    Thanks,
    Jennifer

    Hi Jennifer,
    This is possible when performing local development without NWDI, but requires knowledge of velocity etc. In an NWDI setup I think this is not possible, since you cannot tell CBS how to build those DCs.
    Regards,
    Pascal

  • Custom validation rules

    Using adf/bc with jdev 10.1.3.3. I've created a custom validation rule class according to the instructions in the adf guide. In that class, I've defined just one property, along with its getters/setters. I've registered my rule in the business component project and associated the rule to an entity attribute via the entity object editor. My problem is that I don't see any way for me to set the property/value of the property that's defined in the validation rule class. For example, in the SRDemo app, in the entity editor for ServiceRequest, if you highlight Validation in the left pane then select the AttributeMustExistInViewRowRule for the Status attribute and click the Edit button, you can set various property values that have been defined in the validation rule class. These values appear to then be updated to that entity's xml file. When I'm in my entity object editor and i've assigned a validation rule to an attribute, I can type in the error message text in the Edit Validation Rule dialog, but it says there are no properties to edit! I guess I haven't wired something together quite right? Note, I have not created the customizer and bean info classes for the design time aspect of this stuff. I assume that you do not absolutely need these classes to create and work with a customr validation rule? Anyone know what I'm doing wrong?

    ok, i figured out the problem. The property/value fields in the Edit Validation Rule dialog will not appear until you've actually compiled the custom validation rule class. I had tried to create the validation rule class, register it with the bc project, and assign it to an entity attribute all without first compiling the class. I stumbled upon this 'fix' in jdev's help, which leads me to another question. For the help topic entitled Creating Custom Declarative Validation Rules for Oracle ADF Business Components, the instructions have you create a class that implements JbiValidator and provide implementation for the method vetoableChange, from which you typically call validateValue. The adf guide's example has the custom validation rule class that extends AbstractValidator and implements JboValidatorInterface. In this example, you provide implementation for the validate method. What's the difference between these two approaches and when should I use one over the other? Thanks.

  • Usage of ADF's validation and custom validation together ??

    Hello all..
    My apologize if this query already in place...
    Well, I've a situation where which I need a way to combine/club my application specific validation error messages with the ADF component's messages.
    For example:
    1) ADF's component validator:
    <af:selectInputDate label="#{msg.dob}" value="#{bean.DOB}" showRequired="true" >
    <f:convertDateTime type="date" pattern="yyyy-MM-dd"/>
    <af:validateDateTimeRange minimum="#{action.minDate}" maximum="#{action.todayDate}" notInRangeMessageDetail="#{msg.dateRange}" />
    </af:selectInputDate>
    2) Also, I've my business specific custom validations perfomed on click of action button on my form. Where I use ..
    public void addFacesMessage(Severity msgSeverityType, String message)
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(msgSeverityType, message, message));
    for adding the error messages to context -
    As part of the life cycle, the validators in the form level is fired first and I don't have scope for the request processing/action in order to run thru my buisness method. So always my component's error messages are fired alone - This way my custom validations are not invoked. Is there a way that we can combine both set of error messages together and render them as a common error msg list using <af:messages> tag ?
    If so, please provide me the link to the article!!!
    Your help on this context will be very helpful....Thanks in advance!!!

    Hello all..
    My apologize if this query already in place...
    Well, I've a situation where which I need a way to combine/club my application specific validation error messages with the ADF component's messages.
    For example:
    1) ADF's component validator:
    <af:selectInputDate label="#{msg.dob}" value="#{bean.DOB}" showRequired="true" >
    <f:convertDateTime type="date" pattern="yyyy-MM-dd"/>
    <af:validateDateTimeRange minimum="#{action.minDate}" maximum="#{action.todayDate}" notInRangeMessageDetail="#{msg.dateRange}" />
    </af:selectInputDate>
    2) Also, I've my business specific custom validations perfomed on click of action button on my form. Where I use ..
    public void addFacesMessage(Severity msgSeverityType, String message)
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(msgSeverityType, message, message));
    for adding the error messages to context -
    As part of the life cycle, the validators in the form level is fired first and I don't have scope for the request processing/action in order to run thru my buisness method. So always my component's error messages are fired alone - This way my custom validations are not invoked. Is there a way that we can combine both set of error messages together and render them as a common error msg list using <af:messages> tag ?
    If so, please provide me the link to the article!!!
    Your help on this context will be very helpful....Thanks in advance!!!

  • Perform custom validation on invoices created via iSupplier portal in R12

    Hello,
    It seems that since R12, invoices created on iSupplier portal are no longer loaded via Payables open interface tables (while ASBN's still are). It is nice that they are loaded immediately but now we do not have any way to perform custom validation that we normally do via AP_INTERFACE_WORKFLOW_PKG.do_custom_validation procedure.
    Is there any way to modify how iSupplier portal inserts Invoice data into AP tables? In particular we would like to choose specific document category for certain suppliers.
    Many thanks in advance,
    Kamil

    Hi Friends,
    Apologies to have put this in SCM-Costing Category. I just posted the same thing in Financials Category.
    Please ignore this, if found irrelevant under this category.
    Thanks,
    AAR

  • Custom Process Types not working in SAP BPC 10.0

    Hi Experts,
    We have migrated from SAP BPC 7.5 NW to SAP BPC 10.0 NW.
    We have three Custom Process Types created in BPC 7.5NW using the super class CL_UJD_SIMPLE_ACTOR as super class.
    It has been made Obsolete and Final class in BPC 10.0NW and the Custom Process types are not running as expected.
    Can you please suggest if there is any alternative for using the existing custom process types? Or do we have any alternative for creating custom process types?
    *Note: We have tried replacing the superclass with CL_UJD_ACTOR instead of CL_UJD_SIMPLE_ACTOR but of no use.
    Regards,
    Balraj.

    Hi Inl,
    The statement looks fine, just confirm:
    Your CATEGORY dimension is named CATEGORY? Is it really has property COMPARISOIN?
    Can you show the screenshot of UJKT run of script?
    What is your core BPC SP?
    Vadim

  • Version number conflicts with NI custom data types

    Custom data type version number conflicts
    Options
    Mark as New
    Bookmark
    Subscribe
    Subscribe to RSS Feed
    Highlight
    Print
    Email to a Friend
    Report to a Moderator
    07-11-2011 08:10 AM
    I am new to Teststand software interface.  While doing my first software release under the guidance of a more experienced colleague, we discovered that Teststand will not run if it detects version number conflicts between custom data types on my machine vs. the production test machine.  I verified differences between all .seq files in my test program directory, but I did not realize that the version number difference exists in the StationGlobals.ini file, which is stored in a different location.  After discovering this, I modified the version number in one of the files.  However, two releases later, I discovered that the version number mismatches in another two files.  This raises several questions for me :
    1.  Is there a way in Teststand to view all the .seq files where a custom data type is used and then change its version number in one attempt?
    2.  Under what instances does Teststand upgrade the version number of a custom data type?
    3.  Are there any tools or scripts within Teststand that can allow the version number of custom data types to be changed in all .ini files when a difference is discovered between the current production test station settings and a new release?
    Please help.

    Have you read this?  http://zone.ni.com/devzone/cda/tut/p/id/7060
    I can tell you that your situation is not uncommon with TestStand.  The key is just doing it right the first time.  haha
    #1- I doubt that this is possible because then TestStand would have to know every location of every .seq on the machine.  You will only see it when you open the sequence file.
    #2- TestStand updates the version every time you change it.  You should get a message popup when you try to save that asks if you want to increment the version or not.  There's also a check box that says Remove Modified Mark From Types.  Look under Station Options in the File tab.  There are some settings there about Type conflicts.
    #3- http://zone.ni.com/devzone/cda/tut/p/id/7910
    http://digital.ni.com/public.nsf/allkb/4153576DA04BEB098625743D00704A09
    Hope this helps,
    jigg
    CTA, CLA
    teststandhelp.com
    ~Will work for kudos and/or BBQ~

  • Custom Validator Class not found in Class Path

    I have developed a custom validator class for User Self Registration request. However, when OIM is unable to find the custom validator class and generates teh following error:
    [oracle.iam.platform.pluginframework] [tid: [ACTIVE].ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: oiminternal] [ecid: 76584c4849877d50:-45bb4068:13c8294bd72:-8000-0000000000001236,0] [SRC_CLASS: oracle.iam.platform.pluginframework.InternalStore] [APP: oim#11.1.1.3.0] [SRC_METHOD: getPluginInstance] Not able to load class com.infotech.tra.CustomValidator.SelfRegisterUserCustomValidator from classpath
    At what path should the jar file be placed?
    UZ

    I am running the plugin registration utility but it generates the error mentioned below. I have verified the structure of my zip file and the structure of zip file is:
    -> SelfRegisterUserCustomValidator.zip
    ->Plugin.xml
    ->/lib/SelfRegisterUserCustomValidator.jar
    ->/resources/
    Following our contents of plugin.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <oimplugins>
    <plugins pluginpoint="oracle.iam.request.plugins.RequestDataValidator">
    <plugin pluginclass= "com.infotech.tra.CustomValidator.SelfRegisterUserCustomValidator" version="1.0.0" name="SelfRegisterUserCustomValidator">
    </plugin>
    </plugins>
    </oimplugins>
    Following is the error being generated:
    Enter name (complete file name with path) of the plugin file:
    /u01/oracle/Middleware/Oracle_IDM1/server/plugin_utility/SelfRegisterUserCustomValidator.zip
    [java] Java Result: 1
    [echo] Exception in thread "main" java.lang.NoClassDefFoundError: oracle/iam/platformservice/utils/PluginUtility
    [echo] Caused by: java.lang.ClassNotFoundException: oracle.iam.platformservice.utils.PluginUtility
    [echo] at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    [echo] at java.security.AccessController.doPrivileged(Native Method)
    [echo] at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    [echo] at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    [echo] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    [echo] at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    [echo] Could not find the main class: oracle.iam.platformservice.utils.PluginUtility. Program will exit.

  • How to use custom aspx page as template for custom content type

    Hi,
    I have created custom content type and custom aspx page. I want to use aspx page as template for custom content type.
    Can anybody please let me know how to accomplish this?
    Any help would be appreciated.
    Thank you,
    AA.

    Check if you are looking for the below
    http://www.sharepointpals.com/post/How-to-Create-a-Page-Layout-(PageLayout)-with-ContentType-in-SharePoint-2013
    Please remember to click 'Mark as Answer' on the answer if it helps you

Maybe you are looking for