Skip to main content

Notifications

Announcements

No record found.

Small and medium business | Business Central, N...
Unanswered

Additional OnInsertRecord is trigger when doing deep insert using API

Posted on by
 
I have 2 tables lets call TableHeader and TableLine. In TableHeader, one field had TableRelation define. When i try to do POST request with deep insert, i notice additional OnInsertRecord is trigger in TableLine. This cause additional row being insert.  If i remove the table relation in TableHeader, then it work as expected. Does anyone know why tablerelation cause additional trigger to the OnInsertRecord?
 
table 1 "TableHeader"
{
    DataClassification = CustomerContent;

    fields
    {
        field(1; "Entry No."; Integer)
        {
            AutoIncrement = true;
        }
        field(10; "Message No."; Text)
        {
            TableRelation = "TableMessage"."Message No";
        }
}

table 2 "TableLine"
{
    DataClassification = CustomerContent;

    fields
    {
        field(1; "Entry No."; Integer)
        {
            AutoIncrement = true;
        }
        field(10; "Message No."; Text)
        {
            TableRelation = "TableMessage"."Message No";
        }
		field(11; "Description"; Text)
        {
        }
}

page 1 "Header"
{
    PageType = API;
    Extensible = false;
    APIPublisher = 'publisher';
    APIGroup = 'group';
    APIVersion = 'v1.0';

    EntityName = 'header';
    EntitySetName = 'headers';
    SourceTable = "TableHeader";

    DelayedInsert = true;
    DeleteAllowed = false;
    ModifyAllowed = false;
    ODataKeyFields = SystemId;
	
	layout
    {
        area(Content)
        {
            repeater(GroupName)
            {
                field(id; Rec.SystemId)
                {
                    Caption = 'Id';
                    Editable = false;
                }

                field("messageNumber"; Rec."Message No.")
                {
                }

                part(lines; "Line")
                {
                    EntityName = 'line';
                    EntitySetName = 'lines';
                    SubPageLink = "Message No." = field("Message No.");

                }
            }
        }
    }
}

page 2 "Line"
{
    PageType = API;
    Extensible = false;
    APIPublisher = 'publisher';
    APIGroup = 'group';
    APIVersion = 'v1.0';

    EntityName = 'line';
    EntitySetName = 'lines';
    SourceTable = "TableLine";

    DelayedInsert = true;
    DeleteAllowed = false;
    ModifyAllowed = false;
    ODataKeyFields = SystemId;
	
	layout
    {
        area(Content)
        {
            repeater(GroupName)
            {
                field(id; Rec.SystemId)
                {
                    Caption = 'Id';
                    Editable = false;
                }

                field("messageNumber"; Rec."Message No.")
                {
                }

                field("description"; Rec."Description")
                {
                }
            }
        }
    }
}

JSON 

{
    "messageNumber": "Message 1",
    "lines":   [{
                                    "Description": "Description 1"
                                },
                                {
                                    "Description": "Description 2"
                                }]
}
 
 


 
Categories:
  • Suggested answer
    Khushbu Rajvi. Profile Picture
    Khushbu Rajvi. 4,104 on at
    Additional OnInsertRecord is trigger when doing deep insert using API
    I think the TableRelation causes the system to maintain referential integrity between related tables. When you use a deep insert with a TableRelation, the system tries to automatically manage the relationships between the parent and child records, which can lead to unexpected behavior.
     

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

November Spotlight Star - Khushbu Rajvi

Congratulations to a top community star!

Forum Structure Changes Complete!

🔔 Be sure to subscribe to the new forums you are interested in to stay up to date! 🔔

Dynamics 365 Community Platform update – Oct 28

Welcome to the next edition of the Community Platform Update. This is a status …

Leaderboard

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 290,961 Super User 2024 Season 2

#2
Martin Dráb Profile Picture

Martin Dráb 229,443 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,156

Leaderboard

Featured topics

Product updates

Dynamics 365 release plans