Implement Create Entity and Linking Entities in an MDK App
- How to create relationship between parent and child entities
- How to create a child entity to an existing parent entity
- How to create a parent entity first and then a child entity
- How to implement dynamic data subscription
You may clone an existing project from GitHub repository to start with this tutorial.
For this tutorial, you will use Mobile Services sample backend (step 3) which has parent-child relationship setup among entities. For example, A customer can have n
(>=0) number of sales orders.
To create an entity and then link it to another entity, you need to carry out the following tasks:
- Create a new page for creating an order
- Add an action bar item to the new page for cancelling the current activity
- Create a new
CreateRelatedEntity
OData action to create a new sales order - Create a new message action for displaying failure message if order creation fails
- Create a navigation action to show order creation page from Customer detail page
- Implement data subscription to update count value when a new sales order is created

- Step 1
In this step, you will create the Create Order page as a Form Cell Page. This type of page allows for form input style changes. The page will provide only a subset of items available on the Customer Detail page. You will add the fields that will be editable by the end-user.
Right-click the Pages folder | MDK: New Page | Form Cell | Next.
A Form Cell Page is suitable for pages that generate new objects or modify existing objects. It includes a form cell container by default. You can add form sections, multiple containers or action controls to this page. Under each container section, you can add various container items.
Enter the Page Name as
SalesOrderHeaders_Create
and click Finish to complete the page creation process.In the Properties pane, set the Caption to Create Order.
Now, you will add the fields (like Currency Code, Net Amount, Tax Amount, Gross Amount, Life cycle status, Life cycle status name and order creation date) for creating a new sales order record by the end-user.
In the Layout Editor, expand the Controls group. Drag and drop a Simple Property onto the Page area.
Drag and drop five additional Simple Property controls and one Date Picker control onto the page so you have seven total controls.
Select the first Simple Property control and provide the below information:
Property Value Name
FCCreateCurrencyCode
Caption
Currency Code
Value
EUR
Under Value property, you can set some default values.
Select the second Simple Property control and provide the below information:
Property Value Name
FCCreateNetAmount
Caption
Net Amount
Value
18.010
Select the third Simple Property control and provide the below information:
Property Value Name
FCCreateTaxAmount
Caption
Tax Amount
Value
108.010
Select the forth Simple Property control and provide the below information:
Property Value Name
FCCreateGrossAmount
Caption
GrossAmount
Value
126.02
Select the fifth Simple Property control and provide the below information:
Property Value Name
FCCreateLifeCycleStatus
Caption
Lifecycle Status
Value
N
Select the sixth Simple Property control and provide the below information:
Property Value Name
FCCreateLifeCycleStatusName
Caption
Lifecycle Status Name
Value
New
Select the last control Date Picker and provide the below information:
Property Value Name
FCCreatedate
Caption
Creation Date
Mode
Select Datetime
from the dropdown if not selected by default
- Step 2
Now, you will add a button on the Create Order page and set its
onPress
toCloseModalPage_Cancel.action
.Drag and drop an Action Bar Item to the upper left corner of the action bar.
Action Bar Item is a button that users can use to fire actions when pressed. You can add an Action Bar Item only to the Action Bar (at the top of the page).
In the Properties pane, click the link icon to open the object browser for the System Item property.
Double click the Cancel type and click OK.
System Item are predefined system-supplied icon or text. Overwrites Text and Icon if specified.
Now, you will set the
onPress
event toCloseModalPage_Cancel.action
.In Events tab, click the 3 dots icon for the
OnPress
property to open the Object Browser.Double click the
CloseModalPage_Cancel.action
and click OK to set it as theOnPress
Action.
- Step 3
The next step is to store newly created record locally for an offline application or send the new record directly back to the backed for online applications.
- You will add an Action Bar item on the
SalesOrderHeaders_Create.page
that will call an OData Create Entity action to save the record - You may want to close the page when the OData Create Entity action is successful
- You may want to show a failure message if the OData Create Entity action fails to save the changes
-
In
SalesOrderHeaders_Create.page
, drag and drop an Action Bar Item to the upper right corner of the action bar. -
Click the link icon to open the object browser for the System Item property. Double-click the Save type and click OK.
-
Navigate to the Events tab. Click the 3 dots icon for the
OnPress
property and select theCreate a rule/action
. -
Keep the default selection for the Object Type as Action and Folders path.
-
In the Template Selection step, choose Data in Category | click OData | Next.
-
In the Base Information step, provide the below information:
Property Value Name
SalesOrderHeaders_CreateEntity
Type
Select CreateRelatedEntity
from the dropdownService
Select SampleServiceV2.service
from the dropdownEntitySet
Select SalesOrderHeaders
from the dropdownCreateRelatedEntity
action creates the new entity against the navigation property of an existing entity with which the relationship is to be established. You can find more details about Create Related Entity Action. -
Click Next.
-
In Parent Link and Properties Selection step, provide the below information:
Property Value ParentLink
LinkItem Reference
Target EntitySet
Select Customers
from the dropdownReadLink
click link icon and double click readLink
Property
Select SalesOrders
from the dropdownIn Mobile Services sample backend, click Metadata URL and you will find
SalesOrders
navigation property forCustomers
entity. -
Since in
SalesOrderHeaders_Create.page
, we have defined seven properties (Currency Code, Net Amount, Tax Amount, Gross Amount, Life Cycle Status, Life Cycle Status Name and Creation Date) to be added, now in Properties section, you will bind them to respective UI Controls.Check the
CreatedAt
property and click the link icon to open the object browser.Change the drop down in the object browser to
Controls & ClientData
, click the Current Page radio button.In the search box start typing the control name
FCCreatedate
. The list will filter down to show the matching values. Double click the Value (Value) entry under theFCCreatedate
field and click OK to set binding. -
Repeat the above step for remaining properties:
CurrencyCode
,GrossAmount
,LifeCycleStatus
,LifeCycleStatusName
,NetAmount
andTaxAmount
. -
Click Finish to complete the action creation process. The action editor will open with the
SalesOrderHeaders_CreateEntity.action
loaded. -
When the above OData action is executed, you may want to display messages on its success and failure behavior. For example, on its success, you may want to close the page and allow any execution to continue. On its failure, you may want to display an error. In the
SalesOrderHeaders_CreateEntity.action
, scroll down and expand the Common Action Properties section. Click the link icon to open the object browser for the Success Action and bind it toCloseModalPage_Complete.action
. -
Create a message action displaying error in case of the create failure. In the
SalesOrderHeaders_CreateEntity.action
, click theCreate a rule/action
icon for the Failure Action. -
Keep the default selection for the Object Type as Action and Folders path.
-
In the Template Selection step, choose Message in Category | click Message | Next.
-
In the Base Information step, provide the below details:
Property Value Name
CreateSalesOrderHeaderEntityFailureMessage
Type
Select Message
from the dropdownMessage
Failed to Create Sales Order record - {#ActionResults:SalesOrderHeaders_CreateEntity/error}
Title
Create Sales Order
OKCaption
OK
OnOK
--None--
CancelCaption
leave it blank OnCancel
--None--
SalesOrderHeaders_CreateEntity
is the Action Result value of theSalesOrderHeaders_CreateEntity.action
. This reference is used to pass the results to subsequent actions in the chain. These actions can reference the action result as needed. In this case if there is a failure, you access the error property of the action result to display the OData failure message. -
Click Finish to complete the action creation process.
When
SalesOrderHeaders_CreateEntity.action
gets executed successfully thenCloseModalPage_Complete.action
will be triggered or ifCustomers_CreateEntity.action
fails thenCreateSalesOrderHeaderEntityFailureMessage.action
will be triggered.What is the CustomerDetails property in CreateOrder action being referred to ?
- You will add an Action Bar item on the
- Step 4
You will open the
SalesOrderHeaders_Create.page
from the Customer Detail page. For this, you will add a ToolBar item on the Customer Details page and will link it to a navigation action. When the ToolBar item is pressed by the end-user that will open theSalesOrderHeaders_Create.page
.In
Customers_Detail.page
, drag and drop a Toolbar Item to the lower left of the page.In the Properties pane, set Caption to Create Order.
Navigate to the Events tab. Click the 3 dots icon for the
OnPress
property and select theCreate a rule/action
.Keep the default selection for the Object Type as Action and Folders path.
In the Template Selection step, choose UI in Category | click Navigation | Next.
In the Base Information step, provide the below details:
Property Value Name
NavToSalesOrderHeaders_Create
PageToOpen
Select SalesOrderHeaders_Create.page
from the dropdownModalPage
Select true
from the dropdownClick Finish to complete the action creation process.
- Step 5
In
Customers_Detail.page
you added total number of order counts for a given customer. When a newSalesOrder
is created, this count doesn’t get updated automatically unless you navigate back and forth to this page.DataSubscriptions
: it is a way to listen to data changes that when triggers should cause a UI element to redraw. If your control or section has a target, that target is automatically subscribed for data change events. Otherwise you can also explicitly subscribe toDataSubscriptions
by specifying an entity set name orreadLink
in an array. You can find more details here.In
Customers_Detail.page
, select Customer Orders Object Table control. In Properties section, click+
icon under Misc |DataSubscriptions
and double clickSalesOrderHeaders
and click OK. - Step 6
Deploy the updated application to your MDK client.
Right-click
Application.app
and select MDK: Deploy.Select deploy target as Mobile & Cloud.
You should see success message for both deployments.
Alternatively, you can select MDK: Redeploy in the command palette (View menu>Find Command OR press Command+Shift+p on Mac OR press Ctrl+Shift+P on Windows machine), it will perform the last deployment.
- Step 7
Make sure you are choosing the right device platform tab above.
Once you complete this tutorial, you can continue with Level Up with the Mobile Development Kit mission.
What are the various "Mode" options available in the MDK Date Picker control?