The default behavior of Sibling and Uncle node #
When we use parent data to a child node, we copy data from parent to child. This means it repeats the data of the parent for all children.
- In the case of a Sibling, we are making a pair of the couple and repeat the data from brother and sister with a couple. Ex: When the current node has 2 occurrences and the brother/sister has 3 occurrences then we are creating 2 couples and map the data accordingly. These mean 1 occurrence gets lost because we cannot build a pair/couple for them.
- In the case of the uncle, we are taking an occurrence of the parent node. EX: we have 2 uncles and 1parent then we take only 1occurrence and we are losing 1occurrence.
-
Sibling node #
In the below data we have 1 Account,1 Asset and 2 Contact including its child.
Asset and Contact are the sibling because they stay on the same level and have the same parent
<Response>
<AccountTestV3>
<AccountNumber>20001</AccountNumber>
<Name>TestAccount1-SB</Name>
<BillingCountry>Cambodia1</BillingCountry>
<BillingCity>PhnomPenh1</BillingCity>
<Account_ID>101</Account_ID>
<Description>Test description ACCOUNT object</Description>
<AssetTestV3>
<AssetName>Test-Asset_01</AssetName>
<Asset_ID>10</Asset_ID>
<Description>Test description ASSET object</Description>
<Quantity>2.3412</Quantity>
<SerialNumber>AS-000121</SerialNumber>
</AssetTestV3>
<ContactTestV3>
<Cont_ID>201</Cont_ID>
<LastName>TestContact_01</LastName>
<FirstName>DContact2</FirstName>
<Email>Dtest.2019_201@gmail.com</Email>
<Phone>301</Phone>
<Description>Test description CONTACT object</Description>
<CaseTestV3>
<Subject>TestCase Agent-01</Subject>
<SuppliedPhone>401</SuppliedPhone>
<status>Failed</status>
<Case_Id>2001</Case_Id>
<Description>Test description CASE object</Description>
</CaseTestV3>
</ContactTestV3>
<ContactTestV3>
<Cont_ID>401</Cont_ID>
<LastName>TestContact_02</LastName>
<FirstName>CContact2</FirstName>
<Email>ctest.2019_102@gmail.com</Email>
<Phone>102</Phone>
<Description>Test description CONTACT object</Description>
</ContactTestV3>
</AccountTestV3>
</Response>
Do Mapping #
In this case, we have map “ContactTestV3” to the target object node. And then we map the field from “AssetTestV3” to target. Because we want to retrieve data from “AssetTestV3”.
The result on Message Monitoring #
The data is displayed correctly. Because “AssetTestV3” has only one occurrence but “ContactTestV3” has two occurrences. So the “ContactTestV3” on index 2 cannot get data from “AssetTestV3”.
UseCase with Uncle node #
In the below data we have 1 Account,2 Asset, and 3 Contact including its child as Case.
Asset and Contact are the siblings. Then Asset is the uncle of Case. It is the same thing as in real-life family relationships.
<Response>
<AccountTestV3>
<AccountNumber>20001</AccountNumber>
<Name>TestAccount1-SB</Name>
<BillingCountry>Cambodia1</BillingCountry>
<BillingCity>PhnomPenh1</BillingCity>
<Account_ID>101</Account_ID>
<Description>Test description ACCOUNT object</Description>
<AssetTestV3>
<AssetName>Test-Asset_01</AssetName>
<Asset_ID>10</Asset_ID>
<Description>Test description ASSET object</Description>
<Quantity>2.3412</Quantity>
<SerialNumber>AS-000121</SerialNumber>
</AssetTestV3>
<AssetTestV3>
<AssetName>Test-Asset_02</AssetName>
<Asset_ID>20</Asset_ID>
<Description>Test description ASSET object</Description>
<Quantity>2.3412</Quantity>
<SerialNumber>AS-000122</SerialNumber>
</AssetTestV3>
<ContactTestV3>
<Cont_ID>201</Cont_ID>
<LastName>TestContact_01</LastName>
<FirstName>DContact2</FirstName>
<Email>Dtest.2019_201@gmail.com</Email>
<Phone>301</Phone>
<Description>Test description CONTACT object</Description>
<CaseTestV3>
<Subject>TestCase Agent-01</Subject>
<SuppliedPhone>401</SuppliedPhone>
<status>Failed</status>
<Case_Id>2001</Case_Id>
<Description>Test description CASE object</Description>
</CaseTestV3>
<CaseTestV3>
<Subject>TestCase Agent-02</Subject>
<SuppliedPhone>501</SuppliedPhone>
<status>Failed</status>
<Case_Id>3001</Case_Id>
<Description>Test description CASE object</Description>
</CaseTestV3>
</ContactTestV3>
<ContactTestV3>
<Cont_ID>401</Cont_ID>
<LastName>TestContact_02</LastName>
<FirstName>CContact2</FirstName>
<Email>ctest.2019_102@gmail.com</Email>
<Phone>102</Phone>
<Description>Test description CONTACT object</Description>
<CaseTestV3>
<Subject>TestCase Agent-03</Subject>
<SuppliedPhone>202</SuppliedPhone>
<status>Failed</status>
<Case_Id>4001</Case_Id>
</CaseTestV3>
</ContactTestV3>
<ContactTestV3>
<Cont_ID>801</Cont_ID>
<LastName>TestContact_03</LastName>
<FirstName>CContact3</FirstName>
<Email>ctest.2019_103@gmail.com</Email>
<Phone>103</Phone>
<Description>Test description CASE object</Description>
<CaseTestV3>
<Subject>TestCase Agent-04</Subject>
<SuppliedPhone>204</SuppliedPhone>
<status>Failed</status>
<Case_Id>4004</Case_Id>
</CaseTestV3>
</ContactTestV3>
</AccountTestV3>
</Response>
Do Mapping
In this case, we have map “CaseTestV3” to target object node. And then we map the field from “AssetTestV3” to target. Because we want to retrieve data from “AssetTestV3”.
Result on Message Monitoring
The data is display correct. Because “AssetTestV3” has only 2 occurrence but “ContactTestV3” has 3 occurrence. So the “CaseTestV3” of “ContactTestV3” onindex 3cannotget data from “AssetTestV3”.
Filter Condition of Sibling and Uncle node
Filter Sibling
In this data I have 1 Account, 3 Asset and 1 Contact including its child. Asset and Contact are sibling, if I want to take data from Asset to Contact by default it will take from the index 1. But at this time, we can set a condition to pick up data from any Asset that we need.
Note: The condition value must be unique. If the condition is not unique then run-time will display incorrect result.
<Response>
<AccountTestV3>
<AccountNumber>20001</AccountNumber>
<Name>TestAccount1-SB</Name>
<BillingCountry>Cambodia1</BillingCountry>
<BillingCity>PhnomPenh1</BillingCity>
<Account_ID>101</Account_ID>
<Description>Test description ACCOUNT object</Description>
<AssetTestV3>
<AssetName>Test-Asset_01</AssetName>
<Asset_ID>10</Asset_ID>
<Description>Test description ASSET object</Description>
<Quantity>2.3412</Quantity>
<SerialNumber>AS-000121</SerialNumber>
</AssetTestV3>
<AssetTestV3>
<AssetName>Test-Asset_02</AssetName>
<Asset_ID>20</Asset_ID>
<Description>Test description ASSET object</Description>
<Quantity>2.3412</Quantity>
<SerialNumber>AS-000122</SerialNumber>
</AssetTestV3>
<AssetTestV3>
<AssetName>Test-Asset_03</AssetName>
<Asset_ID>30</Asset_ID>
<Description>Test description ASSET object</Description>
<Quantity>2.3432</Quantity>
<SerialNumber>AS-000123</SerialNumber>
</AssetTestV3>
<ContactTestV3>
<Cont_ID>201</Cont_ID>
<LastName>TestContact_01</LastName>
<FirstName>DContact2</FirstName>
<Email>Dtest.2019_201@gmail.com</Email>
<Phone>301</Phone>
<Description>Test description CONTACT object</Description>
<CaseTestV3>
<Subject>TestCase Agent-01</Subject>
<SuppliedPhone>401</SuppliedPhone>
<status>Failed</status>
<Case_Id>2001</Case_Id>
<Description>Test description CASE object</Description>
</CaseTestV3>
<CaseTestV3>
<Subject>TestCase Agent-02</Subject>
<SuppliedPhone>402</SuppliedPhone>
<status>Failed</status>
<Case_Id>2002</Case_Id>
<Description>Test description CASE object</Description>
</CaseTestV3>
</ContactTestV3>
</AccountTestV3>
</Response>
Do Mapping #
In this example “AssetTestV3” and “ContactTestV3” are the sibling because they stay on the same level and have the same parent that is “AccountTestV3”
We choose “ContactTestV3” as the master node to map to Contact object then take data from field “AssetName” of node“AssetTestV3”
Click “Set/Remove Filter” : on this function allowed user to set the condition what we want. If we want to change or remove condition, then we can go back this function.
Pop up form will display to set the condition
Choose the target field
Set condition and click Ok for save
After do mapping complete then Save
Post data from Postman using SKYVVA V4 API
Result on Message Monitoring
The result is correct. We get data from field “AssetName” if “SerialNumber” equal “AS-000122”
Filter uncle #
The data is the same like on Case 3.We have 1 Account, 3 Asset and 1 Contact including its child. Asset and Contact are sibling, and Asset is the uncle of Case. I want to take data from Asset to Case by default it will take from the index 1 because parent of Case that is Contact was stay on index 1. But at this time, we can set a condition to pick up data from any Asset that we need.
Note: The condition value must be unique. If the condition is not unique then run-time will display incorrect result. For filter condition we can not filter from the own node or from parent node that is not make sense.
<Response>
<AccountTestV3>
<AccountNumber>20001</AccountNumber>
<Name>TestAccount1-SB</Name>
<BillingCountry>Cambodia1</BillingCountry>
<BillingCity>PhnomPenh1</BillingCity>
<Account_ID>101</Account_ID>
<Description>Test description ACCOUNT object</Description>
<AssetTestV3>
<AssetName>Test-Asset_01</AssetName>
<Asset_ID>10</Asset_ID>
<Description>Test description ASSET object</Description>
<Quantity>2.3412</Quantity>
<SerialNumber>AS-000121</SerialNumber>
</AssetTestV3>
<AssetTestV3>
<AssetName>Test-Asset_02</AssetName>
<Asset_ID>20</Asset_ID>
<Description>Test description ASSET object</Description>
<Quantity>2.3412</Quantity>
<SerialNumber>AS-000122</SerialNumber>
</AssetTestV3>
<AssetTestV3>
<AssetName>Test-Asset_03</AssetName>
<Asset_ID>30</Asset_ID>
<Description>Test description ASSET object</Description>
<Quantity>2.3432</Quantity>
<SerialNumber>AS-000123</SerialNumber>
</AssetTestV3>
<ContactTestV3>
<Cont_ID>201</Cont_ID>
<LastName>TestContact_01</LastName>
<FirstName>DContact2</FirstName>
<Email>Dtest.2019_201@gmail.com</Email>
<Phone>301</Phone>
<Description>Test description CONTACT object</Description>
<CaseTestV3>
<Subject>TestCase Agent-01</Subject>
<SuppliedPhone>401</SuppliedPhone>
<status>Failed</status>
<Case_Id>2001</Case_Id>
<Description>Test description CASE object</Description>
</CaseTestV3>
<CaseTestV3>
<Subject>TestCase Agent-02</Subject>
<SuppliedPhone>402</SuppliedPhone>
<status>Failed</status>
<Case_Id>2002</Case_Id>
<Description>Test description CASE object</Description>
</CaseTestV3>
</ContactTestV3>
</AccountTestV3>
</Response>
Do Mapping
In this example “AssetTestV3” play as uncle of “CaseTestV3”, because “AssetTestV3” and “ContactTestV3” are the sibling. The relationship of node it is the same thing like real life family relationship
We choose “CaseTestV3” as the master node to map to Case object then take data from field “AssetName” of node“AssetTestV3”
After, we map the field from “AssetTestV3” that we have called as uncle node then right-click on the field we have a map to set the condition.
After put condition then click Ok for saving condition record
Do mapping complete then Save it.
Post data from Postman using SKYVVA V4 API
The result is correct. We derive data from the field “AssetName” if “SerialNumber” equals “AS-000123”. Du to the data of “ContactTestV3” has two children occurrences all the child of “ContactTestV3” will get data from “AssetTestV3”
Note
To identify the node relationship, we start considering the first node map to the target object that we can call this node as the root node, and for another node that map to target is called a master node.
- Sibling node: When the node has the same parent and stays on the same level within the same path by comparing with root or master node.
- Uncle node: When the node stays on a different path by comparing with root or master node.
Filter Condition by Formula #
After drag Function to the target field, the formula screen will display then browse the node that we need to retrieve data
Choose the field
After choosing a field, one question will ask the user to set a condition on that field or not. If not then click Cancel, click OK if we want to set the condition.
If we click Ok from the above question then we can set conditions. After that click Ok for saving condition record
Click Save for saving formula