Symbols of madness

As you know we have been happily developing extensions for a while now. Every once in a while I blog about some stuff I found out recently but it is mostly smooth sailing at the moment.

Today I was stumped though. For some reason my symbols were not loading. I make it a point to always develop extensions on a standard NAV2018 database (our current version, move to BC on prem is planned but not yet started) but sometimes I need to add functions or parameters that have been requested through Microsoft’s GitHub. And then of course load symbols. Now my symbols are always created automatically by using the finsql command line switch generatesymbolreference=yes as described here. And it always works. I thought.

So what had happened? I had updated my local NAV2018 to CU 9 a while ago. No problems there, just some bug fixes I needed for another extension. But when I added my C/Side function on my NAV2018 CU6 test server my symbols would not load. After checking my Launch settings about 100 times I finally checked my symbols files. That showed this.

Symbol versions

So my extension had symbols files for both CU6 and CU9. And of course the VS Code compiler uses the latest build. So I binned my .app files, downloaded symbols and published my extension without trouble.

As a bonus another symbols problem we found out a while ago. If you have multiple service tiers running your symbols wont generate with the standard batch script, even though it says it is working just fine.

finsql.exe Command=generatesymbolreference, Database="Demo Database NAV (11-0)", ServerName=.\NAVDEMO

What you need to do is add your service tier information.

finsql.exe Command=generatesymbolreference, Database="Demo Database NAV (11-0)", ServerName=SQLServer, navservername=Servicetier.domain, navserverinstance=DynamicsNAV110, navservermanagementport=7045

That should generate your symbols.

Have I forgotten something? Have tips and trick I don’t know yet? Please let me know.

 

On death and Dynamics NAV

Well that is a pretty depressing title. And what the hell does it mean? Does it mean I want Dynamics NAV to burn in the fires of eternal damnation? Has it’s time come?

Nothing so dark I must admit. This is an article about change, but not about change management. As a onetime victim of this medieval practice I am of the opinion that it should burn in the fires of eternal damnation.

So, on change. Dynamics NAV is changing and is becoming Business Central. For good or ill. I am a simple and optimistic guy so I think it is for the good. But time will tell, for all I know soon we might all work with SAP or some hitherto unthought of piece of technology.

Change seems to be a problem that nearly every organization I know wrestles with these days. That all important question seems to be “how do I get my people to change”?

This is a question that gets asked on a couple of levels. Microsoft wants their partners and users to adopt the latest technology. Their partners want their developers and consultants to start using the latest development tools and cloud offerings. Customers want their users to use the latest technology and newest processes. And all of them turn to change management. Which does not work.

“People don’t resist change. They resist being changed.” Peter Senge

But why? Change management has been around for years. You probably used it yourself right? And your projects succeeded. So what on earth is the problem?

To answer this we must first figure out what it is about change that is so difficult we feel the need to manage it. It is because our brains are wired to try to create a state of permanence. It has been clearly proven that we create our own reality out of the inputs that we get. The world we live in is constantly changing but it changes slowly. We don’t really notice it so everything seems permanent. Think of aging for instance. But every once in a while change happens so quickly that it upsets our image of the world. We need to adjust to that change, create an altered reality. And that is difficult. More difficult for some than others but it is easy for no one.

So what happens if we push the problem of change into the extreme? The ultimate form of change is death. It is the ultimate challenge to our reality. And if you ever went through a process of change you might have noticed that there is a mourning period you went through. I really cannot imagine how mourning can be managed. And that is precisely the problem I have with the term Change Management. It lacks the means to address our deep rooted fear of change that is ultimately fear of death. And it lacks the decisiveness that we need to adopt in modern day organizations.

So, I want to propose a new term here. Change Leadership. When we approach change from a leadership perspective we can start by taking decisive action. And then after getting the whole decision thing out of the way we can help people to adjust to the change. But how do you get people to face their fears and embrace change even though they are scared?

Lets stay with my exaggerated claim that change is death for a while. Inevitably we end up on a battlefield. And not just any battlefield, I want to take you back to 1916 to the battle of The Somme where a young lieutenant was leading his men into battle. That young lieutenant later wrote a prophesy that has got me thinking:

“The hands of the King are the hands of a healer.”

That young lieutenant was professor Tolkien, the author of the twentieth centuries favorite book. The quote is from The Return of the King and I think it says something deeply profound about leaders.

It does not mean only doctors make good leaders. It means that leaders need to be able to heal the damage they created. Think of Aragorn who leads his people into battle. A wise decision I’m sure we all agree. After all, he did help save the world. But when the battle is done there is much death, many are wounded. So even though he is weary he helps whomever he can, he draws forth arrows, disinfects wounds, and comforts the dying and the bereaved.

So when looked at from a business standpoint that means that while we have to be quick and decisive in changing our  business we must also realize that this change creates havoc and injures a lot of loyal employees or customers. So we have to heal the hurt we helped create.

But how to do this. I’m sure you won’t need to draw forth arrows on the battlefield. That is difficult but is at least straightforward. How do you heal the invisible wounds of the umpteenth reorganization?

To answer this I turn to two people who have influenced me deeply, Carl Jung and Carl Rogers.

Carl Rogers (1902-1987) was a humanistic psychologist who agreed with the main assumptions of Abraham Maslow, but added that for a person to “grow”, they need an environment that provides them with genuineness (openness and self-disclosure), acceptance (being seen with unconditional positive regard), and empathy (being listened to and understood). Quote found here.

For me this rings very closely to the words of Jung who states that in order to accept the people we try to help we must first embrace our own darkness.

“I am the oppressor of the person I condemn, not his friend and fellow-sufferer” , Carl Jung.

So, back to our old friend change. How can these venerable gentlemen help us to help others? It is by embracing our own fear of change that we can help others. We all share a common dread. That is death. In order to help others we must face our fear and accept it.

It is a fear that I share as well. What will happen if Business Central fails? I really don’t want to work with SAP. And I know Dynamics NAV so well, what am I going to do without it?

This realization fuels my compassion. So when faced with the next angry or fearful user or fellow developer I am able to listen and understand. And this understanding will bridge that gap between a failed and a successful project. Please try it. Whenever people speak in fear find your own fear. And respond from compassion. Respond to connect.

“When people think you’re trying to influence them, they put their guard up. But when they feel you’re trying to help them, or to muse your way to the right answer, or to be honest about your own imperfections, they open up to you. They hear what you have to say”, Susan Cain.

Authors note: This is an opinion piece. I wrote it on the premise of strong opinions, weakly held. If you don’t agree that is fine, I am open to civil discussion. Through discussion my understanding of the topic will grow and evolve. There is no place here for name calling and mud slinging though.

As always I am deeply indebted to those who wrote before me. Please read more from the fine people I quoted here. I stand on the shoulders of giants.

And many thanks to my dear wife for helping me to straighten out my arguments.

Dimensions of woe

So today I wanted to create a simple text variable with 3 dimensions in my extension. Normally no big deal but how on earth do I define dimensions in my variables?

It turns out they are now called Arrays. So that is an improvement but the documentation is worthless. And again, nothing to be found on the old Google. So after a frustrating time of figuring stuff out here it is:

Arrays

Why I named my company after Papa Smurf.

I have written a fair amount of blog posts so far but I realized today I had been remiss in explaining the name I chose for my business. Red and Bundle, what is that all about people ask me.

When I tell them I named my business after Papa Smurf their bewilderment only grows. To explain all this I have to take you back in time with me. To a place where life was not very different than it is now. But I was younger. About eight or nine years old in fact.

We were visiting my grandparents and my granddad let us watch the Smurfs. The particular episode was called The time capsule. It had druids and magic in it so naturally I thought it was excellent. In the period when everything looked bleak the smurfs had to solve a riddle.

“A twig by itself is too weak; it’s twigs in a bundle you seek.”

And for some reason that single line stuck with me in the back of my head for thirty years. A bit like a time capsule.

Explaining the riddle to the smurfs Papa Smurf said it is about working together. One Smurf alone cannot possibly win this.

To me that is the epitome of a great leader. To recognize that you cannot do this alone, to recognize that the people you work with have their own skills and contributions to make. And to help those people to become the best versions of themselves. To realize that Brainy, Hefty, Handy, and even Clumsy are geniuses in their own right. And to coach and guide people so the sum becomes greater than the parts.

So that is the role I decided I want to fulfill. To work with my clients to make the best of the people, software, and organizations I work with. Red and Bundle means that while we as IT specialists sometimes seem to be practicing magic we cannot save the world all by ourselves. If we want to overcome obstacles we have to work together.

Papa Smurf knows all this. He knows that each and every Smurf has their own nature and their own genius. Even if they drive him bonkers every episode. Because without them he would just be a lonely old Smurf.

Image found here.

Get server and database information in AL

Today I wanted to get some basic information about my NAV2018 service and database name in my extension. A quick Google found a lot of useful stuff about this but nothing that was easy enough for me. I really did not want to go messing about with xml or dotNET. This is basic stuff right? There has to be a simple way. And then my eye was drawn to my system indicator, what I want is right there on the screen.

So I started having a look in table 79, Company Information, and there was the gem I needed:

ActiveSessions

But can I use it in VS Code? Well, it turn out that you can:

ActiveSession-AL

So, for me the Active Session table works perfectly. It does not show you the database server though.

ActiveSession

Many thanks to the people who wrote about this before me:

https://www.kauffmann.nl/2015/04/07/read-server-settings-from-cal-code/
https://community.dynamics.com/nav/f/34/p/141286/831849#831849
http://www.dynamics.is/?p=541