SuccessFactors MetaData Framework allows you to customize objects and to extend the functionality of features/modules that are built using it. For example, you can extend existing Employee Central and Succession entities by adding new fields and defining business rules. This article explains how to create fields for existing MDF Objects.
1. Go to Admin Center > Company Settings > Configure Object Definitions.
2. In the first dropdown, select “Object Definition” and in the second, select the object you want to modify. For example, you might choose to add fields to the “Position” object.
3. In the top-right corner, click Take Action > Make Correction.
4. Scroll to the bottom of the list of Fields and you should see “cust_” in the last text box.
5. In this box, you can type the field’s Name, which will be the unique identifier for the field in that given object. The Name should not have any spaces.
After typing the field name, press “Tab”. You’ll see that the name will have the “cust_” prefix, which is expected for all custom fields.
6. Then, you can also specify the “Maximum Length” for the field and the “Data Type”. See an explanation for the available data types below:
- String : Used for text input fields. MDF allows storing text up to 4K long.
- Number : Used to store positive integers. Allowedcharacters are 0-9.Displayed based on the user's locale settings, such as using a comma or decimal point as the decimal separator.
- Auto Number : Used to store numbered lists.
- Decimal : Used to store decimal numbers.Displayed based on the user's locale settings, such as using a comma or decimal point as the decimal separator.
- Boolean : The two allowed values are Yes and No.
- Date : Used to store a date from a date picker.
- Picklist : Used to restrict the field value from a picklist.
- Translatable : Used to allow the entry of localized strings for different locales.
- Data Source : This field must not be used by end users. It can be used in Java object definitions to specify a class implementing data source interface to provide a set of custom code defined autocomplete values.
- Generic Object : Used to reference a generic object. When the object is created, this field shows a value help with a list of the instances of that generic object.
- Foundation Object : Used to reference a foundation object. When the object is created, this field shows a value help with a list of the instances of that foundation object.
- User : Used to reference a user object. When the object is created, this field shows a value help with a list of active users. This does not support Employee Central based effective-dated user search, that is, it will not filter the list of users based on effective dates.
- DateTime : Used to store the date and time information related to a time zone. This is a more granular data type. Time is converted to the time zone of the user who views or requests the export, and not to that of the user who originally entered the time.
- Time : Allows the user to enter times without having to specify any time zone information.Times are generally displayed in HH:mm:ss format and are validated to ensure that a valid time value is entered. However, multiple formats are allowed based on the settings in the object definition, for example, hideSeconds and TwelveHourFormat.
- If you click on “Details”, you have additional options to configure the field.
Those options are explained in the below table:
1. Valid Values Source : This field needs to be set for the following field types:
o Picklist: ID of the picklist.
o Generic Object: Object ID of the generic object you want to reference.
o Foundation Object: Object ID of the foundation object you wanttoreference
o Enum: Fully qualified class name of the Java enum for this data type.
2. Hide Old Value : Effective dated objects have a history view. In thehistory view, records for different start-dates areshown. A strikethrough is shown to indicate theprevious value of the field. If you do not want tosee the strikethrough for the field, set Hide OldValue to Yes.
3. Decimal Precision : Decimal precision for a decimal data type.
4. Include Inactive Users : Set to Yes if you want to display data for inactiveusers, along with that of active users. Default value is No.
5. UI Field Renderer : Use this field to define the label that appears in dropdown menus when selecting a picklist or generic object value in Manage Data. If this field is defined, external code is hidden in these menus.To hide the external code for picklists, usethe “displayPickListWithoutExternalCode” field renderer. And if you want to hide the external code for GOs, “usedisplayGOWithoutExternalCode”.
6. Transient : Set to Yes to make the field transient. Values of transient field are not stored in the database, but are populated at runtime in the user interface, based on rules or associations.For example, you can use transient fields to display simple calculations at runtime, such as an age or a number of days remaining or days since a particular date. You can also use transient field to display different text labels based on certainrules, such as an indication of whether a given pay component is shown as a percentage or an amount.
7. Help Text : Set this translatable text for the field. You can give instructions for the user.
8. Private or Sensitive Information : Set to Yes or No.NoteIf you set this to Yes, then the value saved on that field will be visible as '***'. For example, apassword field for any login page.If you set this to No, then it behaves like all the other fields.
9. Show Trailing Zeros : Set to Yes or No.NoteIf you set this to Yes, then it will show trailing zerofor decimal precision. For example, for a decimalfield, set the decimal precision to 4, enter valuefor the field as 12 and save. The value then appears as 12.0000
10. Default Value : You can set a default value for the field.When a default value is selected for a field, it willinitialize the new page with the given value. Forexample, if you set the default value for a STRINGfield as ABC, when you go to Manage Data page tocreate a new object, then you will see ABC alreadylisted in that field.
11. Hide Seconds : Set to Yes or No.If you set this to Yes for a field with the DateTime or Time data type, then it it hides the seconds for the time display.
12. Required : Set to Yes if the field is required.
13. Visibility : Set to one of the following:
o Editable: Field is visible and editable.
o Read Only: Field is visible and read only.
o Not Visible: Field is inactive and will not appear in UI, API, imports/exports, and so on.
14. Status : This is a read-only field with the value Active or Inactive. Inactive fields are not available in the system. You cannot use them in import, UI, OData, rules, and so on. If you do not enable the corresponding module, fields become inactive automatically. Note that you cannot make the fields inactive from the UI.
15. Label : Set this translatable label for the field. The default value for this is the field name. To enter a translated label name, click the translations button.
16. Cascade : Set to one of the following:
o No Selection: User will see the field as read only on the Business Configuration UI page.
o None: User will see the field as read only on the Business Configuration UI page.
User will be able to edit the field on the Business Configuration UI page.
8. Then, you can click on “Save” and the custom field will be created.