Saturday, April 27, 2019

How to publish your own Event in Business Central using AL Code?

Hi,

Publishing your own event means in a scenario where you are not able to find standard events , you can also define your event and publish it for use.

For Example:

In Job Journal Line page you have no event in posting date field.

Lets understand this exercise :

Step 1 :

Create a new Code unit and type teventint

Type your procedure Name and Parameters inside the procedure.


codeunit 50101 JobJournalLinePublisher
{
trigger OnRun()
begin

end;

[IntegrationEvent(true, true)]
procedure OnAfterValidatePostinDateinJobJournalLine(VAR JobJournalLine: Record "Job Journal Line"; var PostDate: Date);
begin

end;

var
myInt: Integer;
}

Step 2.  Define the place where you want to call this Publisher Event.

For me I need it on Page Job Journal Line After validation of No. Field.

pageextension 50100 MyExtension extends "Job Journal"
{
layout
{
// Add changes to page layout here
modify("No.")
{
trigger OnBeforeValidate();
var
Publisher: Codeunit 50101;
begin
Publisher.OnAfterValidatePostinDateinJobJournalLine(Rec, Rec."Posting Date");
end;
}

}

actions
{
// Add changes to page actions here
}

var
myInt: Integer;
}

Screen for reference:

Step 3. Define the Procedure defination and Subscribe.

codeunit 50102 JobJournalLineSubscribers
{
EventSubscriberInstance = StaticAutomatic;

[EventSubscriber(ObjectType::Codeunit, Codeunit::JobJournalLinePublisher, 'OnAfterValidatePostinDateinJobJournalLine', '', true, true)]
procedure OnAfterValidatePostinDateinJobJournalLine(VAR JobJournalLine: Record "Job Journal Line"; var PostDate: Date);
begin
JobJournalLine.VALIDATE(Description, JobJournalLine.Description + ' ' + FORMAT(PostDate));
end;
}

Screenshot for reference:

I hope with this reference you can define your own publisher event in business central.

How to subscribe to an Event in Dynamics 365 Business Central?

Hi ,

What is an Event?

An Event is a function provided by Microsoft to help developers for minimizing code in Standard Object for development.

So to identify which event you want to use , first we need to check the standard event available to subscribe. For details of Events you can follow :


How to subscribe to an event in AL Code?

Here I want to update Posting Description field with Vendor Name in Purchase Invoice Page. So I had subscribed to 2 events provided by Microsoft.

Here I had subscribed to events of Object Type Table. You can use Snippet teventsubs

codeunit 50100 CustomCodeunit
{
trigger OnRun()
begin

end;

[EventSubscriber(ObjectType::Table, DATABASE::"Purchase Header", 'OnAfterInitRecord', '', true, true)]
local procedure OnAfterInitRecord(VAR PurchHeader: Record "Purchase Header")
begin
PurchHeader.Validate("Posting Description", PurchHeader."Buy-from Vendor Name");
end;

[EventSubscriber(ObjectType::Table, DATABASE::"Purchase Header", 'OnAfterCopyBuyFromVendorFieldsFromVendor', '', true, true)]
local procedure OnAfterCopyBuyFromVendorFieldsFromVendor(VAR PurchaseHeader: Record "Purchase Header"; Vendor: Record Vendor)
begin
PurchaseHeader.Validate("Posting Description", Vendor.Name);
end;

var
myInt: Integer;

Wednesday, April 10, 2019

How to remove password from Windows Server 2016 for Dynamcis 365 Finance & Operations Server?

Hi,

I was facing this issue from a long time, to resolve this error I followed below blog at

https://social.technet.microsoft.com/Forums/en-US/78ed9550-be5d-4d72-8ad5-4255e176e263/how-would-i-remove-the-password-on-server-2012?forum=TechnetSandboxForum


From the Start screen, type netplwiz. The command for netplwiz, aka the User Accounts Control Panel, appears in the search results in the left pane. Click that command.
In the User Accounts Control Panel, select the account you wish to use to log in automatically.
Click off the check-box above the account that says "Users must enter a user name and password to use this computer." Click OK.
Enter your password once and then a second time to confirm it. Click OK.
Restart Windows. Windows now bypasses the lock screen and the log-in screen to automatically take you to the Start screen.

Click on Boolean
Click Apply and enter your domain password.

Tuesday, April 9, 2019

How to resolve error 500 while accessing Dynamics 365 Finance and Operations URL

Hi ,
This blog is about an error which I faced during accessing Dynamics 365 Finance & Operations. For more information
I am accessing my D365 Demo environment on my local machine with URL
I was getting error as in screen :


Before reading further if you are also facing the same issue then check below solutions , I hope this will be resolved.



This error cause is

1. Services are not running properly.

There are 3 services which mainly runs D365.

a. Application Helper Service

b. SQL Server Service

c. Microsoft Batch Management

d. Microsoft Data Import

Please restart these 4 services


2. IIS may be stopped. Please goto start of your server and run IIS if its not running then restart.

But if error still exists. Then check event viewer.

I followed below Link to resolve this issue.



Lets start the solution :

Step 1. Check which of the certificates are expired.

Run Windows powershell as ADMINISTRATOR


Run Command:


cd cert:\LocalMachine\My
ls | Select-Object NotAfter,Thumbprint,Subject | Where-Object -Property Subject -like "CN=DeploymentsOnebox.*" | Sort-Object -Property Subject,NotAfter


This will check the expired certificates required to run.

There are 4 certificates needed to run this URL of D365 F&O.

The NotAfter column shows when each of them expires. The Subject column contains descriptive information about certificates. The Thumbprint column contains the key by which the certificate is recognized by the operating system.

Step 2. Please goto start->manage computer certificate->Personnal->Certificates

Find these 4 certificates , double click on these certificates and copy the thumbprint. Remove spaces and make small letters to Capital letters.

Do the same for all 4 certificates in word file.

Step 3. Run this code in powershell to add 120 months to each certificates. you will get cloned copies.

$Thumbprint = (get-childitem -Path 01F93A5974A14DC3B40F1CF0BE78127974187BE5 )
New-SelfSignedCertificate -CloneCert $Thumbprint -NotAfter (Get-Date).AddMonths(120)


Please remove the green marked 40 digits key with your certificates Key.


You can get the cloned certificates in Manage computer certificates. But you need to refresh the certificate folder.


Step 4. Check the updated certificates

ls | Select-Object NotAfter,Thumbprint,Subject | Where-Object -Property Subject -like "CN=DeploymentsOnebox.*" | Sort-Object -Property Subject,NotAfter



Step 5.

Now you see two certificates for each of the certificate types – one with the old validity and thumbprint and one with the new validity (current date + 120 months) and thumbprint.
Now start VisualStudio as administrator and open the following three files in the C:\AOSService\webroot folder:
  1. web.config
  2. wif.config
  3. wif.services.config
Press Ctrl+Shift+H key combination to open Find and Replace dialog. Make sure that you select All Open Documents in the Look in drop-down selection box, so that find and replace action will be applied on all three open files.
Now you will have to repeat the following actions for each pair of certificate types:
  1. In the Find what box enter the thumbnail of the old (expired) certificate.
  2. In the Replace with box enter the thumbnail of the cloned new certificate.
  3. Replace all the occurrences in open files.

After you have done this for all four certificates, save the three config files and close VisualStudio.
Restart your browser and navigate to D365FO. It should start without any problems.





 You can also check this link