Microsoft Dynamics 365: 2020 release wave 1 plan

As you probably already picked up in the media – Microsoft has released its plans for Wave 1 release (in April) for this year.  You can find all the information here: https://aka.ms/Dynamics365ReleasePlan.

The document contains all the information on all we want to know regarding “what’s next” for all related applications, like Marketing, Customer Service, Field Service, …. and also our beloved “Business Central”.  And since this is a blog about Business Central – let’s focus on …

Microsoft Dynamics 365 Business Central

The Microsoft Docs endpoint that has all information on Business Central is here: https://docs.microsoft.com/en-us/dynamics365-release-plan/2020wave1/dynamics365-business-central/planned-features .  You can completely disregard this blog, and just read that link, and have all the (updated) information ;-).

But – I’m still going to talk about at least a few of these points.  I did that before, and last time, I remember I did rant about one thing (Code Customized AL) – let’s see if there is something to rant about in this release ;-).

What am I looking forward to?

You’ll see I’m focusing most on Tech.  and less on functionality.  That’s just me – sorry ;-).

AL Interfaces

I don’t know exactly yet what to expect from this and in which way it will be used in default Microsoft Apps for Business Central, but it is at least a new interesting  capability in terms of code architecture. 

1 reference 
interface Mylnterface 
O references 
protected procedure 
O references 
internal procedure 
O references 
procedure JustAProc 
O references 
Interface Mylnterface 
test' does not implement the inter*ace member 
'Mylnterface. ProtectedProc• . AL (AL0582) 
test' does not implement the inter*ace member 
'Mylnterface. InternalProc' . AL (AL0582) 
test' does not implement the inter*ace member 
'Mylnterface. JustAProc• . AL (AL0582) 
Peek Problem Quick Fix... 
codeunit 50142 test implements

Look up events and insert event subscriber in code

Yes!  Sounds perfect!  By using Shift+Alt+E, you’ll get a list of all available event that you can easily search through:

codeunit sales-post 
OnAfterApplyFilter 
Codeunit •Sales-Post Prepayments" 
OnAfterCalcVATAmountLines 
Codeunit •Sales-Post Prepayments" 
OnAfterCheckAndUpdate 
Codeunit "Sales-Post- 
OnAfterCheckMandatoryFields 
Codeunit "Sales-Post- 
OnAfterCheckPrepmtDoc 
Codeunit "Sales-Post Prepayments" 
OnAfterCheckSalesDoc 
Codeunit •Sales-Post- 
OnAfterCheckTrackingAndWarehouseForReceive 
Codeunit •Sales-Post- 
OnAfterCheckTrackingAndWarehouseForShip 
Codeunit "Sales-Post- 
OnAfterConfirmPost 
Codeunit •Sales-Post (Yes/No)" 
OnAfterConfirmPost 
Codeunit •Sales-Post + Print" 
OnAfterConfirmPost 
Codeunit •Sales-Post + Email" 
OnAfterCreatePostedDeferralScheduleFromSalesDoc 
Codeunit "Sales-Post- 
OnAfterDeleteAfterPosting 
Codeunit •Sales-Post- 
OnAfterDivideAmount 
Codeunit •Sales-Post- 
OnAfterFillDeferralPostingBuffer 
Codeunit •Sales-Post- 
OnAfterFilllnvLineBuffer 
Codeunit •Sales-Post Prepayments" 
OnAfterFilllnvoicePostBuffer 
Codeunit "Sales-Post- 
OnAfterFinalizePosting 
Codeunit "Sales-Post- 
OnAfterFinalizePostingOnBeforeCommit 
Codeunit "Sales-Post- 
OnAfterlncrAmount 
Codeunit •Sales-Post- 
OnAfterlnitAssocltemJnlLine 
Codeunit "Sales-Post- 
OnAfterlnsertDropOrderPurchRcptHeader 
Codeunit •Sales-Post- 
OnAfterlnsertedPrepmtVATBaseToDeduct 
Codeunit "Sales-Post- 
OnAfterlnsertlnvoiceRounding 
Codeunit •Sales-Post Prepayments" 
OnAfterlnvoicePostingBufferAssignAmounts 
Codeunit "Sales-Post- 
OnAfterlnvoicePostingBufferSetAmounts 
Codeunit •Sales-Post- 
OnAfterlnvoiceRoundingAmount 
Codeunit "Sales-Post- 
OnAfterPost 
Codeunit •Sales-Post + Print"

Tip: it seems you can already use it – just use the vsix from the insider-docker-image if you have access ;-).  Just be careful though – it seems to add all parameters, even if you don’t need them.. (which in my book is bad practice).

Camera/location AL API available in the browser

When I read this, my immediate reaction was: “uhm, ok, whatever”.  I wasn’t really waiting for this, however, I do think this can really come in handy.  Let’s see…

Obsolete tag and URL properties

I can’t say I needed this, to be honest, but in the future, when real refactoring is going to be necessary, I really think this is very useful to clearly explain the ins and outs of certain functionality that will have to change, and how to deal with that if you depend on it.

But then again, in my company, we’re rebuilding the product from scratch.  If you’re converting/migrating, I can imagine that “refactoring” will come rather sooner than later ;-).

Multiple variable declarations of the same type in the same line

var 
O references I O references 
Record Customer; 
Cust, Cust2

You can see that the AL Language is steadily growing into a more mature dev environment, isn’t it.  This is something that is so “normal” to have in any other language, and finally coming to AL.  Though, I must say, there are other fish to fry, I guess ;-).

Ability to refactor a field from a table to a table extension

It seems – but I’m not sure – this is an answer on “how to transfer data from a customization in the base app, to an extension”.  How this moves to BC online, I don’t know – but definitely worth digging into!

Migrations to Business Central online

This is obviously really important and need no further explanation!  I just hope it’s going to be a painless process, because upgrading to 15 .. Has.not.been.painless.at.all!  But a migration is not an upgrade either, is it? ;-).

Business Central integration with Common Data Service – can I get a “finally” here, please? :-).  It’s not just “bla bla” anymore – there will actually be some “boom boom” as well – most probably SaaS only.

What am I NOT looking forward to?

Well, I guess this “Application version for aliasing base application” thing.  I’m not saying it’s useless, but it looks like this is only added to facilitate “Embed Apps” – which is nothing more than “Code Customized AL” (in my opinion) – and you know how I think about that ;-).

Added to this, the “propagateDependencies” has been a change that will be introduced in the next CU Update – and it has brought me nothing but pain – downloading symbols in a build pipeline just became more complex (luckily, navcontainerhelper eases the pain ;-)).

Is that all that is new?

Of course not!  I just didn’t want to “just” copy/paste all items just for the fun of it.  All Tech things, ok, but there is so much more that is on the plate:

What am I missing?

Monetization for AppSource apps – for sure.  I might have misread or missed it, but I still don’t see it on the roadmap.  Why?  Why oh why?  Do we really want 100ds of apps on there with all a different implementation of monetization?  That doesn’t make any sense.. .

That said – James Crowter wrote a nice article on what HE would have liked to see as prios for 2020. You can find it here: https://msdynamicsworld.com/story/my-dynamics-365-business-central-priorities-microsoft-2020 .

You can see he has much more experience with an actual “load” of Customers on BC SaaS.  And I can only agree with his list and argumentation.. .

Ideas

Anyway – a big “driver” of this content is the “Ideas” website where they gather ideas from the community.  You can easily access it by: aka.ms/bcideas.  If you miss out on anything, the first question you should ask is: “did I ask for it?” ;-).

Conclusion

Nothing much to conclude besides quite the same as Erik : nothing groundbreaking, but definitely improving and a further evolution.

4.80 avg. rating (95% score) - 5 votes

Permanent link to this article: https://www.waldo.be/2020/01/30/microsoft-dynamics-365-2020-release-wave-1-plan/

2 pings

  1. […] Microsoft Dynamics 365: 2020 release wave 1 plan […]

  2. […] throw an exception at runtime (new compile-time validation will be added in the future)AL interfacesWaldo and Tobias already wrote about this new feature soon after the NAV TechDays. I would suggest you […]

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.