This is the Eighth post in the series. If you want to go to previous post click here.
From the series of steps this post is dedicated to Step-7:
As a Seventh Step we will Create Actions on the Page for managing Coupling and Synchronization created in previous post.
On page 50120 Prospects created in previous post
Add Variables:
var
CRMIntegrationManagement: Codeunit "CRM Integration Management";
CRMCouplingManagement: Codeunit "CRM Coupling Management";
CDSIntegrationEnabled: Boolean;
CDSIsCoupledToRecord: Boolean;
Add Triggers:
trigger OnOpenPage()
begin
CDSIntegrationEnabled := CRMIntegrationManagement.IsCDSIntegrationEnabled();
end;
trigger OnAfterGetCurrRecord()
begin
if CDSIntegrationEnabled then
CDSIsCoupledToRecord := CRMCouplingManagement.IsRecordCoupledToCRM(Rec.RecordId);
end;
Add Actions:
Actions
{
area(Processing)
{
group(ActionGroupCDS)
{
Caption = 'Dataverse';
Visible = CDSIntegrationEnabled;
action(CDSGotoProspect)
{
Caption = 'Prospect';
Image = CoupledCustomer;
ToolTip = 'Open the coupled Dataverse Prospect.';
ApplicationArea = All;
trigger OnAction()
var
CRMIntegrationManagement: Codeunit "CRM Integration Management";
begin
CRMIntegrationManagement.ShowCRMEntityFromRecordID(Rec.RecordId);
end;
}
action(CDSSynchronizeNow)
{
Caption = 'Synchronize';
ApplicationArea = All;
Visible = true;
Image = Refresh;
Enabled = CDSIsCoupledToRecord;
ToolTip = 'Send or get updated data to or from Microsoft Dataverse.';
trigger OnAction()
var
CRMIntegrationManagement: Codeunit "CRM Integration Management";
begin
CRMIntegrationManagement.UpdateOneNow(Rec.RecordId);
end;
}
action(ShowLog)
{
Caption = 'Synchronization Log';
ApplicationArea = All;
Visible = true;
Image = Log;
ToolTip = 'View integration synchronization jobs for the Prospect table.';
trigger OnAction()
var
CRMIntegrationManagement: Codeunit "CRM Integration Management";
begin
CRMIntegrationManagement.ShowLog(Rec.RecordId);
end;
}
group(Coupling)
{
Caption = 'Coupling';
Image = LinkAccount;
ToolTip = 'Create, change, or delete a coupling between the Business Central record and a Microsoft Dataverse row.';
action(ManageCDSCoupling)
{
Caption = 'Set Up Coupling';
ApplicationArea = All;
Visible = true;
Image = LinkAccount;
ToolTip = 'Create or modify the coupling to a Microsoft Dataverse Prospect.';
trigger OnAction()
var
CRMIntegrationManagement: Codeunit "CRM Integration Management";
begin
CRMIntegrationManagement.DefineCoupling(Rec.RecordId);
end;
}
action(DeleteCDSCoupling)
{
Caption = 'Delete Coupling';
ApplicationArea = All;
Visible = true;
Image = UnLinkAccount;
Enabled = CDSIsCoupledToRecord;
ToolTip = 'Delete the coupling to a Microsoft Dataverse Prospect.';
trigger OnAction()
var
CRMCouplingManagement: Codeunit "CRM Coupling Management";
begin
CRMCouplingManagement.RemoveCoupling(Rec.RecordId);
end;
}
}
}
}
}
On page 50122 “CDS Prospect List” created above
Add Variables:
var
CurrentlyCoupledCDSProspect: Record "CDS cr95d_Prospects";
Add Trigger:
trigger OnInit()
begin
Codeunit.Run(Codeunit::"CRM Integration Management");
end;
Add Procedure:
procedure SetCurrentlyCoupledCDSProspect(CDSProspect: Record "CDS cr95d_Prospects")
begin
CurrentlyCoupledCDSProspect := CDSProspect;
end;
Add Action:
Actions
{
area(processing)
{
action(CreateFromCDS)
{
ApplicationArea = All;
Caption = 'Create in Business Central';
Promoted = true;
PromotedCategory = Process;
ToolTip = 'Generate the table from the coupled Microsoft Dataverse Prospect.';
trigger OnAction()
var
CDSProspect: Record "CDS cr95d_Prospects";
CRMIntegrationManagement: Codeunit "CRM Integration Management";
begin
CurrPage.SetSelectionFilter(CDSProspect);
CRMIntegrationManagement.CreateNewRecordsFromCRM(CDSProspect);
end;
}
}
}
Now you are good to proceed with Next Step.
You can jump to Next Step from here.