Issue subscribing codeunit integration events in ServContractManagement code unit

Hi,
This works perfect:
[EventSubscriber(ObjectType::Table, Database::“Service Header”, ‘OnAfterInsertEvent’, ‘’, false, false)]
procedure ServiceHeader_OnAfterInsertEvent(var Rec: Record “Service Header”; RunTrigger: Boolean)
begin
Dialog.Message(‘OnAfterInsertEvent’);
end;

However, none of these gets called when creating a service contract and invoicing it:
[EventSubscriber(ObjectType::Codeunit, CodeUnit::ServContractManagement, ‘OnBeforeCreateLastServLines’, ‘’, true, true)]
local procedure OnOnBeforeCreateLastServLines(ServiceHeader: Record “Service Header”; ContractType: Integer; ContractNo: Code[20]; var IsHandled: Boolean)
begin
Dialog.Message(‘OnOnBeforeCreateLastServLines’);
end;

[EventSubscriber(ObjectType::Codeunit, CodeUnit::ServContractManagement, 'OnBeforeCreateInvoice', '', true, true)]
local procedure OnOnBeforeCreateInvoice(var ServiceContractHeader: Record "Service Contract Header")
begin
    Dialog.Message('OnBeforeCreateInvoice');
end;

However code completion in vscode does find them.

Please advice

It seems like the events you subscribed to are not being triggered when creating a service contract and invoicing it. This could be because the events you subscribed to are not the correct events for those actions.

When creating a service contract, you may want to try subscribing to the “OnAfterInsertEvent” for the “Service Contract Header” table instead of the “OnBeforeCreateLastServLines” event in the “ServContractManagement” codeunit. This event should trigger when a new service contract header is inserted, regardless of how it was created.

For invoicing a service contract, you may want to try subscribing to the “OnAfterModifyEvent” for the “Service Contract Header” table. This event should trigger when a service contract header is modified, which includes when it is invoiced.

Here’s an example of how you could modify your code to subscribe to these events:

[EventSubscriber(ObjectType::Table, Database::“Service Contract Header”, ‘OnAfterInsertEvent’, ‘’, false, false)]
procedure ServiceContractHeader_OnAfterInsertEvent(var Rec: Record “Service Contract Header”; RunTrigger: Boolean)
begin
Dialog.Message(‘OnAfterInsertEvent’);
end;

[EventSubscriber(ObjectType::Table, Database::“Service Contract Header”, ‘OnAfterModifyEvent’, ‘’, false, false)]
procedure ServiceContractHeader_OnAfterModifyEvent(var Rec: Record “Service Contract Header”; RunTrigger: Boolean)
begin
Dialog.Message(‘OnAfterModifyEvent’);
end;

Try implementing these changes and see if the events are triggered as expected.