Category Archives: Dynamics NAV

AppSource; Prefix, Suffix & Intellisense

This article was triggered by a discussion on Yammer yesterday that I felt went a bit sideways.

Business Central is a first class cloud citizen and it beats born in the cloud solutions easily but fact remains that it’s based on Navision, an ERP solution with a 30-some year legacy.

Part of that legacy is a requirement for unique names in the objects, also in the cloud.

Microsoft is working hard to remove this requirement hence it’s a temporary fix but the result is that every app on AppSource needs a three letter prefix or suffix.

You can register your TLA with Microsoft and when this is done nobody else can use it.

With Per-Tenant extensions you don’t need prefixing and I would actually recommend against it since there may be a fair change you’ll use one that is used by one of the apps.

At ForNAV I am primary responsible for the App we have on AppSource and we Prefix everything with ForNAV, hence we reserved “FOR” as a prefix.

I am probably a little autistic and I like stuff that looks clean, so my C/Side looks like this:

Had I suffixed everything it would have been so ugly to look at.

What about Intellisense?

If you watch my YouTube video’s or if you attended one of my classes you’ll have heard me say I recommend suffixing so this sticks into peoples heads.

However this is on a totally different topic. This recommendation is for people who are so stubborn that they want to cling on to Hungarian notation. This will affect Intellisense.

With an AppSource solution I would recommend (and use this myself) to leave our your Registered TLA of your variables all together.

Here is an example:

As a sidenote, Intellisense in Visual Studio Code works smarter than just the first characters, it would actually do a smart search and also suggest results that contain the characters even with small typos. It’s one of the things that make VSCode better than C/Side. (One of the few things though 😊).

Tip #64 | Show License Information in Business Central

With the retirement of C/Side we have a challenge we did not have before regarding the license.

We used to be able to see the license information from C/Side, upload the license and quickly create a new page that displays permissions.

With Business Central this is no longer possible and we now need PowerShell to upload a license.

On my GitHub you can find a repo you can clone to display the license information.

Challenge

I would also like to be able to change the license from this page. I hope one of my readers can put this in and do a pull request.

It will require DotNET but that’s fine, this extension is targeted for OnPrem anyway.

Enjoy!

Tip #63 | Export Warnings & Errors from Visual Studio Code

If I get asked the same question twice I am already tempted to blog about it. This one exceeds this number and is long overdue.

It looks like the whole world is now converting from C/AL to AL and running into challenges with that.

Right now I am analysing several databases and one thing you need after elliminating low hanging fruit and removing errors that crash the compiler is to find common errors and count them.

An Excel Pivot Table is perfect for that.

Normally Visual Studio Code is not nice in exporting errors and warnings. You can try to copy/paste them but the work to clean up is hard.

With the magic AL runner by Tobias Fenster it is prepared for you. You can download it here.

You can copy and paste this into Excel and use Data -> Text to Columns to use the | as a separator.

The only thing that you’ll miss is the object ID and type. You can add these with adding two columns using the formula like

=LEFT(C5;FIND(“.”;C5)-1)

After that you’ll spend several hours. or often days in C/Side fixing errors you could have fixed a long long time ago.

Enjoy!

Business Central & Nintendo

WARNING!! Personal opinion here!

Inspiration to write down idea’s are everywhere. Next week my youngest son has his birthday and we went out this evening with the train to the big city of Deventer to buy him (us) a Nintendo Switch.

I’ve been loyal to Nintendo since the 1980ies and bought many of their consoles. I’m also loyal to Mario and have most of the games.

When the Nintendo WII came out there was the option of buying NES games for 5 dollar and I bought Mario I and III. Again, because I already purchased them 20 or so years earlier.

Now what does this have to do with Business Central? It made me reflect to a talk I had a few hours earlier while driving back home in the car with some former collegueas. They wanted to pick my brains about upgrading customers from old Navision to Business Central. In this case one was on 3.70 and the other on 2009 classic.

With Navision upgrading was easy. It required common sense and discipline. Two qualities every Navision developer should have. Back in the days I did many upgrades fixed price for less than 5k.

60% of all Navision installations are on classic, or that is what my former collegues told me. The hold of upgrading because of the gap with RTC and something called a financial crisis that forces many people from sitting on their (flat) wallet for half a decade or more.

They wanted to know how to analyse if the customizations can be ported to Business Central. The idea was to install Business Central On Prem and keep running on the same version again for a decade or more.

I told them that this was a horrible idea and it should not be advised to customers. Nobody should want to run Business Central On Prem with a support window of only 6 monhts.

That’s right. Business Central only get’s cumulative updates for 6 months. After that you are on your own and if you want to do stuff like backporting a fix from a higher version it means making your own base app.

That’s horrible.

Business Central on AL Only has just officially become a cloud only solution because no SMB is qualified to install and maintain it on premises and upgrade every 6 months.

Because the Extension model in Business Central with AL is based on taking a dependency on metadata from Microsoft it’s very fragile for changes done my Microsoft.

A lot of things that are technically possible should be avoided with per-tenant extensions because you will be forced to refactor your changes every 6 months. Very, very expensive.

Business Central is a high volume product that should be perrsonalised with apps from AppSource. An AppSource app is only interesting from an economics perspective with one hundred paying customers or more as it requires a dedicated team focussing on high quality, automated testing and an intuitive user interface.

The partners who do not accept this and keep modifying Business Central with complex per-tenant extensions are a danger for our ecosystem.

If you require a complex module for your company, use a different platform like power platform or other Microsoft options. As long as you stick to Azure, MSFT does not care.

The days of easy upgrades with Navision are over. Welcome to the days of Nintendo where we have to constantly buy new consoles to use the new toys.

Directions EMEA 2019 Afterthoughts

It seems that when my blog posts appear some people hold their breath. Don’t worry, that won’t be nessesairy this time.

I am at the Vienna airport and just wanted to write some thoughts I have after the event.

When I look at 2.500 people wondering around I don’t see a community. I see individuals. We call it a community because we share the love of a product but we need to move to the next level of community.

Business Central Wave II is the first version of Navision without C/Side and a windows client after it was introduced in 1995. For almost 25 years C/Side made our carreers.

A lot has happened in 25 years and most solutions grew out to be monolyths. Not because you cannot write clean decoupled code in C/Side but because we lack knowledge and discipline.

Now with Extensions and AppSource we have a chance to start over, to do it in a better way. But it does not look like we are doing that.

Why did the concept of extensions see the light of day? Because it allows Microsoft a platform that allows Business Central to connect to AppSource. AppSource allows everyone in the world to find your solution without you doing much marketing effort.

This means we now have a platform to share repeatable small modules. But this is not what is happening.

Partners that did everything themselves in C/Side that led to solutions with thousands of objects that nobody understands anymore are still looking to convert these solutions to AL rather than looking at that is out there and reuse existing apps.

I’ve even heard that partners are now merging AL code because they modify the base app.

THIS IS HORRIBLE!

Giving up C/Side is only worth doing if we get back the repeatability of small reusable components with clear interfaces.

WE NEED TO BE A COMMUNITY THAT SHARES!

Start sharing IP! Don’t re-invent the wheel because you had to do this in C/Side. In Business Central having 10 ISV solutions in one database is a piece of cake.

This is my biggest takeaway.

The second thing that was interesting for me was having a conversation with Microsoft. I cannot remember having conversations like I did in the past few days with them in years.

We talked about the refactoring and challenges in the future. We agree that breaking changes should never happen again and still we need to continue breaking up the base app into smaller pieces.

For this to happen and to avoid future frustration they’ve invited me back to visit Lyngby every now and then in an informal role. I’ve agreed to try that and let’s see what will happen here.

I’ve also pushed Microsoft to have better involvement of MVP’s in the next interations. This group of people can give good feedback and seem to have been forgotten in the last 6 to 12 months.

The future is uncertain and a lot of decisions need to be made. The road is not paved, The road in many cases has to be created using heavy machinery.

Yet Business Central remains the BEST flexible cloud ERP product. The webclient team did a great job making this client on-par with the Windows client in the best way possible. Web development is so much more difficult than the old Win32 UI.

See you at NAVTechDays? Find me at the ForNAV or Global Mediator booth.

Tip #62 | “Where-Used” in Visual Studio Code

The “Where-Used” in Visual Studio Code is nice, but not always productive. Today I wanted to see where a field was used and came up with an alternative I wanted to share.

ObsoleteState

If you mark a field ObsoleteState::Pending the compile will throw warnings everywhere the field is used. This allows you to quickly use the error window to jump through the code and check whatever you want to check.

When finished you set the obsolete state back.

What if…

Sometimes I can be a bit emotional when it comes to changes in the software product I work with on a daily bases. An example of that was my previous blog that I took offline in order to do some editing making it less about emotion and more about facts.

The emotion is probably justified for a few reasons of which most the fact that Navision, NAV, Business Central (I stopped caring about the name) provides a living for me and my family but it’s more than that.

Around our product there is a community that stands out from almost any other community I’ve seen. We have a large number of events that are not organised by Microsoft but by partners, customers or in one case even by one single guy. Not because they make money doing it, but because they think it’s nessesairy.

What I’ve seen is that even if the product changes and evolves in complexity the people around it don’t stop loving it. Sometimes Microsoft makes a decision around the product that could have been done differently but then we always have the community steering them back. It has happend so many times that I lost count.

When I read the comments to my blog it looks as if a majority agrees that working in C/Side is faster than working in Visual Studio Code and we lost a great deal of simplicity. I know that there are also many who disagree with this statement.

One community that I’ve experienced to be even more passionate about their product is the Great Plains community. When I statet that in my opinion Business Central is replacing the GP product I did not got love and hugs.

The fact is though that I’m a bit jealous of the Great Plains people and sometimes I wished that instead of NAV, GP was the platform of choice to move to the cloud.

Why, you might think. Wel, because Microsoft is still maintaining GP, adding new features and keeping it compatible with modern versions of Windows. But the software is not overhauled like NAV.

Imagine that for the next decade or more we could work wiith C/Side and sell new licenses. Including to be able to use the windows client. Many would love that,

The fact that Business Central is based on NAV makes it easy for me to join the new community but it has cost us a great level of productivity,

It’s going to be very interesting to see what Microsoft will do after Wave II. I cannot wait to go to Vienna and see the roadmap.

Personally I think we can all use some slowing down after all the changes in the last few years. If the Microsoft slide for Wave III said “stabilise the product” I would stand up and cheer.

From a business value perspective integration scenario’s are the most important area for the future. Where Visual Studio Code and AL get all the attention I would spend my time learning the API and if I had a vertical solution I would redevelop it on another platform than AL.

The future of Business Central is international. BC is the only flexible SMB solution with localizations and translations all over the globe.