Skip to main content

Microsoft Dynamics NAV 2016 - Events What Else We Need to Know.

Hi All,

Recap Of What we Discussed In The Series "We Have seen how to use the Database Trigger, Business and Integration Events." 

If you are missing the Story, Refer Table of Index.

Let's See What Else we Need to Know about Events.

Point / Question 1 - Do I Need to Add All Events I want or There are Some Standard Events From Microsoft?

There are so many Events Published By Microsoft in Microsoft Dynamics NAV 2016, but not all are subscribed. Any Event which is Not Subscribed is a Kind of Function which is not called anywhere?

Microsoft have Placed so many Such Events in the Business Area where they Feel the we partners Customize it Most. Let's see one of them.

Design Codeunit 90 and Navigate to End, You will See Three Events Which are Integration and Can be Used Whenever you want -
> OnBeforePostPurchaseDoc
> OnBeforePostCommitPurchaseDoc
> OnAfterPostPurchaseDoc

Just Search for them you will also see the Publisher in the same Object.

If you are looking for all the events published by Microsoft, Here is the List on MSDN.

Point / Question 2 - How can I Check which all Active Events in System and how you say that above Purchase Post Events are Not Called?

With Microsoft Dynamics NAV 2016, Suppose if you are working for a project for First Time and you don't know which all events have been customized AND Subscribed too.

Why we need to know that?
Because we don't want to rewrite the Same thing again and again, if some of our colleague have done it.From the Developer Environment, Tools Menu select Debugger and Event Subscriptions. All Events you see here as below are defined, published & Subscribed.

Point / Question 3 - Is it Mandatory to Make an Event Publisher as Local?

Thanks +Peter D. Jørgensen for suggesting the Issue in this point.

No, As we all know that Local Functions can Only be triggered within object Only.

As we discussed about Integration Events related to Codeunit 90., all those we local so that means they can only be triggered within the Codeunit 90.

So if want to subscribe trigger the function Outside we will not make them local.

A Best example to Look is The Same Function (OnAfterPostPurchaseDoc) is also there in Table 38 (Purchase Header) which can be triggered by other objects too, as its a global one.

Point / Question 4 - Can I Write Code While Publishing Event?

NO, we can only use Documentation starting with // on the Publisher Function.

Point / Question 5 - Where all can I Subscribe and Publish Events?

Table, Page, Report,Codeunit & XmlPort -Can Publish Events.
Codeunits                                              -Can only Subscribe the Events. All Other Objects Cannot.
Query & Menu suits                               -Cannot Subscriber and Cannot Publish Events.

Point / Question 6 - How can I De-activate a Published Event?
Just Delete all the subscribers to the Published Event, Then the Published Event will be Deactivated.

Post / Question 7 - Remember When we write custom Code?
Whenever you write a custom code, remember that always use validate for every field because there may be database triggers which on get executed when OnValidate Trigger or on table trigger.

So Any-time we write a Custom Code We need to Validate all fields, that we want to assign.

Point / Question 8 - Which Subscriber Get Priority if there are multiple subscriber, for same event doing different thing on same data?

Here is What Microsoft Says -
"There can be multiple subscribers to the same event from various locations in the application code. When an event is raised, the subscriber functions are run one at a time in random order. You cannot specify the order in which the subscriber functions are called."

As we Know that we can only Subscribe Using Codeunit, so here is the Pattern That I Can Identify till now, may be I am Wrong=>

 > Priority First Based on the Object No, on which the Event is Subscribed.
 Priority Secondly Based on The Function Position (if there are multiple subscribers to Same Event in Same Object).

So if I have Two Codeunit which subscribe same Trigger Events in Following Order -

 > Codeunit 60003.
> Subscriber 5
> Subscriber 2
> Subscriber 3
> Subscriber 4

 > Codeunit 60004.
> Subscriber 1

So the calling will follow Below Pattern -
> Subscriber 5 > Subscriber 2 > Subscriber 3 >Subscriber 4 > Subscriber 1

** No Guarantee, on above points its just my findings.

Hope I am able to answer most of the queries. If you have any other queries, please post it a Question to me Via Contact me Page on the Top or Put a Comment to Article.

Your Feeback (as comment) on the article are most welcome.

Stay Connected.

Saurav Dhyani


Popular posts from this blog

Send Mail with Attachment From Navision.

Hi all, We have seen how to save a report into PDF and how to send mail to a customer. Let's link these two post in one i.e. Mailing statement to a customer into PDF Format. This article is part of the Series. Please Refer  Table of Content here . If you have the old objects set let me brief you what I will be changing - 

Microsoft Dynamics NAV 2016 - How to Configure Phone Client.

Hi All, In this article we will discuss how we can connect Microsoft Dynamics NAV 2016 with New Client Launched i.e. Phone Client. This Article Contain Steps for a Android Phone as I have Only Android Phone. I am doing it having all tiers on my windows 8 machine, steps remain same for multiple servers but issues might be different. What we Need (Other what we discuss in this article) -  The Service Tier should be on Public IP . Some of the Data-card does not Provide you Public IP. check it for sure.

Download Microsoft Dynamics Business Central on Premises 2020 Wave 2 Release.

 Hi Readers, As Expected Microsoft have released #msdyn365bc 2020 wave 2 is available.  This article provides details of the new release. The 2020 release wave 2 for Business Central delivers a wealth of new features. Read What's new in 2020 Release Wave 2 here .  Dynamics NAV Customers upgrading to Business Central on Prem will be able to run business central on premises, move to cloud or choose a hybrid approach.