10 reasons that make design absolutely necessary

  • Reading time:12 mins read

Unfinished buildings, by net_efekt (on Flickr)Design is one of a kind. Other phases in Sure Step are understood and accepted as good and necessary. But design, do we really do that? Is it really necessary? Who’s going to pay for it? Does the customer really need all those documents? Instead of writing documents, you could have it developed in the same, or less time. And so on and so forth.

As a matter of fact, if you asked me to pick one single most important phase in a Sure Step project, then it’s the design. No second thoughts here, whatsoever.

Here I list the ten most important reasons that I believe make design absolutely indispensable.

Continue Reading10 reasons that make design absolutely necessary

Special Offers for Microsoft exam takers – Hurry!

  • Reading time:1 min read

specialoffersAre you aware of the Special Offers on Microsoft Learning Products? Well, you should be: Microsoft Learning website offers many fantastic bargains. There are two specific offers I’d like you to check, which are going to be there for a limited time only.

Good luck with your exams!

Continue ReadingSpecial Offers for Microsoft exam takers – Hurry!

Strange errors in RoleTailored Client RDLC reports

  • Reading time:3 mins read

olddogWe old dogs really have to learn new tricks with RTC (RoleTailored Client), as I found out couple of days ago. A customer of mine asked me for a quick report. I don’t typically do reports, but I thought—“not a big deal, it’s just a report”—so I fixed it, tested it, made sure it worked, then deployed it to production.

And then I found out it was not just a report.

It just didn’t want to execute in production. Whatever I did I just got a strange error message, something I never saw before. Ever.

Continue ReadingStrange errors in RoleTailored Client RDLC reports

Some more issues with my blog

  • Reading time:1 min read

image “Perfect is the enemy of good”, a smart person said once. Another one said: “If it works, don’t mess with it.”

So, I messed with it. I was trying to make it perfect.

Over past couple of weeks, you might have experienced downtimes, or even errors such as 403 Access Forbidden or similar here on my blog. The reason is—I was trying to make it perfect, and now I see that good might have been good enough.

As a part of my blog reviving efforts, I’ve tried improving the performance. The blog was awfully slow, so I offloaded the static content to CDN and installed the W3 Total Cache plugin to help me improve my speed. Which it did. For a while.

Then it started behaving funny, and was intermittently and unpredictably throwing errors at my visitors, for which I sincerely apologize. You don’t deserve to be thrown errors at. Honestly.

So, I’ve switched the page caching off for the time being, while I try to sort it out. In the meanwhile, I ask my fellow bloggers, if you are using WordPress and W3 Total Cache, and have experienced something similar—please help.

Continue ReadingSome more issues with my blog

Setup-dependent requirements

  • Reading time:3 mins read

While designing a custom functionality for a customer, there was an issue with posting groups: the way the custom functionality was designed would result in value entries being always posted to a single posting group, resulting in inventory balances always going to the same inventory account.

When I brought this issue to my customer’s attention, they said: “but we only have one single inventory account, and we only use one single posting group, so we don’t need this functionality to be smart about this”.

This was an example of what I like to call setup-dependent requirements.

Continue ReadingSetup-dependent requirements

Read-only user role in Microsoft Dynamics NAV

  • Reading time:2 mins read

image Microsoft Dynamics NAV comes packed with a set of predefined roles for many tasks such as editing or posting journals, creating sales orders, editing fixed assets, etc. It also comes packed with a SUPER role, which can do just about anything it wants.

There are two problems with the SUPER role. They are kind of pretty much entangled together.

The first one is—SUPER can do just about anything it wants (um, did I say that already?). The second one is—there are far more super users out in the wild than there should be. Is this your experience, too?

Continue ReadingRead-only user role in Microsoft Dynamics NAV

Development best practices – the aftermath

  • Reading time:3 mins read

image So I would guess that was it. I’m just returning to Kristiansand, my Norwegian base, after delivering the “Microsoft Dynamics NAV 2009 Development Best Practices” course to a partner, my first custom-developed training ever. My impression is—mission accomplished.

I was not sure at first how this would turn out. Teaching NAV best practices to people some of whom have more experience than I’ll have any time soon, isn’t an easy thing. The challenge for me was—how to deliver something new, really valuable to those people, something they could go home with saying “wow, if only I knew this earlier”.

Continue ReadingDevelopment best practices – the aftermath

Inventory value in foreign prepayment scenarios

  • Reading time:7 mins read

I have this client who operates in very specific conditions: majority of their vendors are foreign companies which invoice them in a foreign currency (USD) and almost invariably ask for at least 50% prepayment.

NAV can handle prepayments and foreign currencies like a charm—the issue lies elsewhere: the fluctuations of currency exchange rate can easily cause real and tangible losses.

Even though prepayment invoice is fully closed by a prepayment applied against it, the actual costs of goods is not calculated from prepayment invoice, but from the actual invoice. And if there was difference between currency exchange rate at prepayment and invoicing dates, the inventory value reflects the actual invoiced value (instead of the prepaid value), there is currency exchange gain/loss which is fictitious, but taxable.

Thankfully, there are ways to avoid this.

Continue ReadingInventory value in foreign prepayment scenarios

Development Best Practices

  • Reading time:2 mins read

image “Best practices” is one of those beloved and hated concepts. There are people who just embrace “best” practices for the sake of their bestness. And there are people who just shun them for the very same reason—those know-it-alls who have opinion on everything and know it better before even learning about it. What’s-best-for-you-is-not-best-for-me kind of people. Neither of approaches is actually, well, best.

For a best practice to be the best for you, you need to understand it, and if you find any pitfalls, improve it.

In two days I’m delivering the NAV Development Best Practices training for a service provider in Norway. They approached me two two months ago and asked if could do something like that. This brought to memory some good posts I made years ago, and here I bring the links. If you want me to share my best practices, this would be my starting point:

  • Code of Coding: emphasizes the need for understanding the effects of a change in code, and making others understand your intention
  • Code of coding 2: Documenting changes: about how to document different kind of changes in code, and also about the level of effect a specific type of change has in the long run
  • Code of coding 3: Die, hard(coding)!: about avoiding embedding output text into code
  • Code of coding 4: Die, hard(coding) 2: about avoiding embedding settings into code, with detailed explanation what exactly is wrong with it, and some good guidelines on how to detect less obvious cases of settings hardcoding
  • NeverENDing story: about a very bad example I once encountered, and how to avoid situations such as that
  • Featuritis Cure: now this one is definitely not a “best practice”, it’s about a situation when a developer pulled a prank on a customer so subtly that I just had to share it with the world. A far better cure for Featuritis (a dangerous and ugly disease indeed) is given by Mark Brummel, in his fantastic post Tip #20 – Save Report Usage. If you aren’t yet following Mark’s blog, now would be a good time to start.

If you are interested in development best practices, check these posts, and if you find them useful, then I’m happy. If you don’t, share your thoughts. Best practices develop over time, improving slowly, and gradually until one day they just become the norm.

Continue ReadingDevelopment Best Practices

Abusing filtering for a lightning fast posting setup

  • Reading time:3 mins read

Microsoft Dynamics NAV Classic client has some features which are simply unbeatable when it comes to productivity and speed, one of them being primary-key filtering. When you set a single-value filter on primary key fields in a table, and then insert a new record in the same table, primary key fields are automatically populated with values from the filter.

Yeah, and?

Well, there are so many ways to (ab)use this feature, that sometimes it has a potential to save ridiculous amounts of time. As it just did for me, so I felt an irresistible urge to share it with you. Even though it is so ridiculously simple.

Continue ReadingAbusing filtering for a lightning fast posting setup