Paycheck Protection Program Details

We have mentioned to some of our clients that the US CARES Act included the Paycheck Protection Program. The Program functions as an SBA loan that is forgivable under certain circumstances. Here is a Forbes article on it:

https://fortune.com/2020/03/31/sba-small-business-loans-paycheck-protection-program-who-qualifies-when-how-to-apply-how-much-pay-back-ppp-coronavirus-stimulus-faq/

And here is the application (as of today) on the Treasury website:

https://home.treasury.gov/system/files/136/Paycheck-Protection-Program-Application-3-30-2020-v3.pdf

It may be just the shot in the arm your small business needs to make it through these turbulent waters.

Business Central: Modifying Reports

One of the things you notice when getting started with Business Central extensions is the sample first App walk-through includes Table Extensions and Page Extensions. It does not include extensions for reports. Likewise, the documentation for reports does not include a report extension object. There’s a good reason for this: report extensions don’t exist, at least as of the October 2019 Wave 2 Release. It has been added to the request list by several.

So what if you need to add something to a report? I’d suggest this approach.

If the data you want to add to the report is standard Business Central data such as the External Document Number, start with this first approach. If the data you want to add is not standard Business Central data, for example if it comes from a table extensions that you created, go directly to the second approach.

First Approach To Report Customization

First, go to Report Layouts in Business Central; select the report you want to update. Also notice whether the default report is Word or RDLC. Now choose Process > Custom Layouts. You will see the screen below.

On the Custom Layouts page, select New, then click the New… menu item. This report is an RDLC layout, so select the RDLC layout as shown.

Copying a Business Central Report built-in layout.

Press OK, and you will see a list view, with report 9 added. On this list view, select the report, then select Layout > Export Layout. This will export the RDLC layout, which you can open with Microsoft Report Builder.

If you do not have this loaded on your system already, you can download it from the Microsoft website.

On the left-hand side of the report, expand the dataset until you can see column names. Look through these column names to see if the data you want to add to the report is present. Examining an RDLC report's dataset in Microsoft Report Builder.Note that as I mentioned above, if you have added data to Business Central, it will not be shown here. If you find the field that you are trying to add, use Microsoft report builder to add it.

Once you have made the modification, go back into Business Central. On the Custom Report Layouts Page, choose Layout > Import. Once you have done this, choose Update Layout from the same layout menu. You should now be able to run the report with the new layout. This is also the method that you would use to change fonts or other styles in a report.

Business Central Report Modification When Easy Does Not Work

If this method does not work because you are trying to add data to report that is not on the dataset list, will have to use the VS Code development environment configured for AL as described here.

If you are using Business Central 14 or Dynamics NAV 2018, you will need to export the report object from the database and convert it to AL. That process is described here.

If you are using Business Central 15 (October 2019, Wave 2), take a look at the on-premise installation ISO. In the Application directory, you will find the code for the BaseApp reports in the BaseApp directory. There are also some other interesting source files in this directory.

To find the report we have been working on, you will need to unzip the BaseApp source code and find the report file which in this case is called TrialBalanceBudget.Report.al. If you copy this into your own AL project (recommended), you will also want the report layout file TrialBalanceBudget.rdlc. You will have to change both the name and the report number, and I recommend that you change the caption (in the AL file) to reflect the fact that the report has been customized.

Applying the New Report In Business Central

You can use this technique of copying and changing the source code for any report in the base application. Then publish these as extensions, and use Page Extensions to place them on any pages where the reports appear. To find these pages, you can open the full AL BaseApp code in the development environment and do a text search. Of course, the most common things will be changing are probably things like Sales Orders and Purchase Orders, and these can simply be changed on the report selection set up for the appropriate module.

Let us know if we can help you with this, and have fun customizing Business Central.

 

 

 

 

Upgrading Microsoft Dynamics Business Central

Microsoft Dynamics NAV has been renamed Microsoft Dynamics Business Central. Along with the name change, there are several significant changes in the software. One of the most significant is the elimination of the C/SIDE development environment and the C/AL language as of the October 2019 Wave 2 Release. These have been replaced by the Modern Development Environment, which uses VSCode, and the AL language.

How Dynamics NAV Customizations Work

Through Microsoft Dynamics NAV 2017, changes were made inside the existing program. Microsoft Dynamics NAV 2018 and following use the concept of extensions. An extension is an add-on to the existing program which adds features without requiring changes to the program code. You might think of the old method as being “inside” the program code, and the new method as being “outside” the program code.

From a practical point of view, this means that once code is converted from the old method to an extension, upgrades become more straightforward. Since they are located in one or more “projects,” they can be tested quickly against a new version. And since they use triggers or events, they are compatible with future releases as long as Microsoft does not make changes to these “hooks.”

As Microsoft makes changes to Business Central, it may still be necessary to update the extension. However, it will not be necessary to extract changes from the program code and then merge them back into new program code.

Migrating Custom Code from Prior Versions

Microsoft has provided a number of tools to assist in migration. These include tools to convert C/AL code to AL code, and tools to create extensions from the changes made in prior versions (called Delta code). The newest version includes tools to migrate a custom database to the new format without having to write code.

In some situations, customization will translate to the new version with very little re-coding. In other cases, the technique used may have been eliminated and more extensive changes may be required. In all cases, some preliminary evaluation of your database will help a developer determine how to proceed.

Options for Upgrades

Until October 2020, existing Business Central / NAV users will have access to the Windows Client. This was called the “role-tailored client”) from 2009 forward. It has been eliminated for releases after the April 2019, but existing users can license it through 10/1/2020. Since this version supports C/SIDE, it is possible to move to it without converting code to AL. But that is just delaying the inevitable.

If you want to maintain the Windows Client look and feel, however, it may be a good option to move to the April 2019 release (14) while converting the code and database to AL.

The basic evaluation process extracts your customization to DELTA files, then converts the DELTA files to AL code and uses VSCode to evaluate the result. To do this, convert your base, unmodified current version and your modified version to 2018 or 2019 April release. This isn’t a full conversion, it just involves opening the databases with the new C/SIDE development tool.

Once they are converted, follow the instructions here to produce the AL code. A few technical notes: (1) the objects need to compile in the new version in order to export correctly, (2) You need the -ExportToNewSyntax in order to use the txt2al tool that produces the AL files, and (3) if you did not customize the object, it does not need to compile.

Things To Watch For

The Txt2Al tool does a fair job in that it will save you time. However, particularly when converting older reports, you will get files with errors. Watch particularly for the “Ambiguous reference,” error. Many of these seem to be produced by the fact that the Txt2Al tool sometimes does not surround fields with double quotes.

For example, the field Document No., needs to be written “Document No.” The conversion tool often omits this punctuation, which gives errors in VSCode: not just in the places the quotes are needed, but in other code that is not in error. Start at the top of the converted file and correct obvious errors; skip items that do not seem to be errors until you reach the bottom. Then begin another pass with the same heuristic. Doing this–particularly with reports–often caused errors that were not really errors to disappear. That is particularly the case with the “Ambiguous reference” error.

Good coding, and let me know how it comes out for you!

 

 

Dynamics 365 Business Central – Full Menu

One of the things that seemed to be missing from previous versions of Business Central was a full menu. If you’re looking for a report, as an example, it might be a bit hard to find. Now there’s a way to get back to a menu similar to what we had previously. First of all, from the home screen, click the three bar menu (circled below).

 

Once you click this, the screen below opens. If you click the circled explore all, you’ll see the last screen on the page. The areas on this screen expand and contract allowing you to find features that you might otherwise miss. If you don’t know what something is called this may be an easy way to find it in the system


Microsoft Azure SQL backup update

Photo No More. Stop Gesture. Man with raised opening hand making No more gesture.I mentioned a couple of posts ago that we were having trouble backing up a database from SQL on Azure to a local machine.

One of the problems was that we didn’t have access to the Azure portal, so we asked the CSP with access to do the backup and send us the BACPAC file. We assume that backing up to Azure storage would permit the backup, and get around the issue we were having with timeout.

As it turns out, even this doesn’t work. The backup still times out. Microsoft (and the other CSP) are still working on it.

Misery loves company! At least I’m glad someone else had the trouble.

Next time you think about creating a database with 50,000+ tables on SQL Azure, think again.

Dynamics 365 Business Central – October 1 2019 Release

Wave 2 of the 2019 Release of Dynamics Business Central is out. There are a host of new features; check here for more information as we dig in. There are a few changes in this release that impact current on-premise users, and one of them has a deadline in 2020, so we thought we would discuss them first.

Here are the changes:

  • First, the Windows Client is no longer available as of this release. The March 2019 release is the last release with the Windows client.  More detail is below.
  • Second, the C/Side development environment is no longer available. All modifications must be converted to extensions.

If you have followed (as we have) Navision to Dynamics NAV and now to Dynamics 365 Business Central, you’ve seen changes to the user interface. The “Classic” interface that ended with the 2013 release to the “Role Tailored Client” that 2009 and following supported, there were changes. In the midst of this, Microsoft released the Web interface. Until the 2018 release of Business Central online, the Role Tailored Client (Windows client) and the Web client looked as much the same as possible.

Business Central changed the look of the product. The home screen from the Online Version of Business Central (as of today) is shown below.

The Current Home Screen of Dynamics Business Central

For me, it is a change, but for production users, it will take some getting used to. The old interface (2015 version) is below for comparison.

Backing Up SQL Azure Locally

If you haven’t read my previous post on this subject, you might want to. Otherwise, you’ll be starting this hopefully-not-an-epic-saga in medias res, as they say.

Azure SQL Database Export FAIL

After a bit of digging, I discovered the probable cause of my trouble: the way SQL Azure works. Here’s the link from Stackoverflow that finally turned the light bulb on for me.

The key phrase is this one:

When an Azure SQL Server gets overloaded or goes down, it will disconnect a number of connections and when you reconnect you will get sent to another SQL Server.

Yep. That’s it. And the nasty things about that are (a) you don’t know when it might happen, and (b) since it’s internal load-balancing and redundancy behavior, you have no control.

It’s great for apps running on Azure, because it evens out response time and avoids down time.

But in the case of backing up SQL Azure locally, it throws a monkey-wrench into things. This can also beat you up if you’re writing code against Azure, but that’s the subject of another saga.

 

Backing Up Azure SQL Locally

Azure SQL Database Export FAIL

Let me begin with the moral of the story: Azure isn’t the answer for everything. The cloud is still new, and the closer you get to the bleeding edge, the more time you’ll be spending trying to work all of this stuff out.

We have a client who started with another consultant. Over the past few weeks, we’ve evaluated where they left things, and decided that the path the previous consultant took may not be the best long-range path. So we need to grab their database (which is an ERP database with about 50,000 tables spread across about 125 companies) from SQL Azure.

Thus began the saga.

The “easy and complete” way to do this is using SQL Server Management Studio. Select the database, go to Tasks > Export Data Tier Application… Fill in the blanks (where do you want the bacpac file? What tables to do you want? Then start the process. And Wait. And Wait. And Wait.

Eventually, you get a timeout error. When you look this up the first time, you’ll see an option to edit the registry and increase the timeout. That was two weeks ago, and I’ve forgotten the registry key, but Google the error and you’ll go right to it after a page or so of results.

Try again, and you might be lucky. I wasn’t. I even tried selecting only a few hundred tables. Same result. I increased the timeout. Same result. By the way, there were some 4-8 hour waits before the timeout occurred, so you’ll be spending a week or so with this solution.

After you try that a time or to, you’ll decide to go to SqlPackage, a command line utility that allows you to do the same thing, with more control.

Here’s what my final try of this command looked like:

sqlpackage.exe /a:Export /of:True /sdn:DATABASE_NAME /su:USER_NAME /sp:PASSWORD /ssn:asm-srv-azsql-01.database.windows.net /tf:c:DataMY_FILE_NAME.bacpac /p:CommandTimeout=6000

Yep, that’s a 6000 second timeout (default is 30).

Connecting to database ‘DATABASE_NAME’ on server ‘SUBDOMAIN.database.windows.net’

Unlike some of the other tries, this actually produced a (small 25K) file on my desktop. I let it run 72 hours before I stopped it, and stopped it when I noticed that nothing had been written to the file in 48 hours. Over the weekend, I tried again.

Here’s the message that was waiting on me this morning:

Azure SQL Database Export FAIL

Messages from SQLPackage.exe when trying to export Azure SQL Database

Note that time elapsed. That’s 18 hours.. It seems like that’s where we came in.

And now to figure out another way to get the data…

You’ve been hacked, change your password

If you have a corporate email account that you use much, you’ve probably seen an email something like the following in the last few months. It seems to have ramped up in the last few days:

Thinking that someone might actually have access to your system and the ability to record your screen and use your web cam can be scary.

Why I Know This Is False – #1 – No Web Cam

I know this email is false because the computer I use this email address on doesn’t have a web cam. The server is a corporate email server, so it is protected by our firewall. In fact the ***BULK*** you see in the subject line was added by the firewall. So I have a couple of reasons for suspecting that this is bogus.

Another Reason – Email Properties

If you use Outlook, you can click on the file tab, then on properties to see the “Internet Headers.” If you use another email package, you can get to them, just Google the name of your email package and add “View Internet Headers.” For example, if you Google, “Thunderbird View Internet Headers,” you’ll get several pages of helpful articles and several more pages of unhelpful articles on the subject.

Here’s the header for the Bogus message from Outlook:

 

 

 

 

You’ll notice that the second line says:

“Received from esyi.com…”

If it were from my email server, it would say:

“Received from <servername>.dgginc.net”

<servername> would be replaced with the name of my mail server.

No bitcoin for the bad guys

So don’t send any bitcoin to someone who claims to have your personal browsing history and threatens to reveal your innermost secrets if you don’t. If you just have to send some bitcoin, send it to me. Oh, wait, I don’t have a bitcoin wallet. If you want to send me some bad enough, drop me an email; I’ll see what I can do.

 

 

Legacy ERP and Accounting Software

How old is the version of ERP or accounting software that runs your business? Did you load last year’s update? The year before? It’s not unusual to talk to businesses that haven’t upgraded their software in 5 or more years. Some businesses are still using the same software version they installed 10 years ago.

Old Software Versions Cause Problems

an old computer from 1980. 4K memory for $900

In today’s environment, software more than a couple of years old can cause technical problems. New versions of operating systems (like Windows 10) can break old software. If the new Windows version completely breaks your software, that’s really good news. Bad news is when the new version just corrupts data and you do not discover it until after the damage is done.

The Cost of Old ERP Software

But the real cost of old software is in features unused. We were finishing an upgrade yesterday from a software version that was over 10 years old, and doing quick data checks to make sure the data converted correctly. Customer balances and vendor balances in the old version compared to the converted data is a good test. In the new software version, we had an easy-to-use list that exported to Excel for comparison. In the old version, we had a report. Using these, we verified the first eight or ten balances manually, then went to the last page and verified the total. The upgrade worked fine, by the way. But I’d forgotten how much more difficult simple things were in the old version vs. the new version.

Not only that, but to finding a report in the old version took digging around on menus. We knew the name of the report (Trial Balance), but it wasn’t in the first few places we looked. In the new version, typing “trial balance” in a search box brought the report up on a list.

These two items are the real cost of legacy software: features that you give up because the old version didn’t have them, and features that are hard to find because of the construction of the old software.

I know upgrading can be expensive, but be sure to count the cost of NOT upgrading.