Dynamics Corner

Episode 348: In the Dynamics Corner Chair: Source Code Management and You in Business Central

Steve Endow Season 3 Episode 348

👨‍💻Join hosts Kristoffer Ruyeras and Brad Prendergast in the latest episode of the Dynamics Corner Chair, where they pick Steve Endow's brain on risk mitigation and source code management in the #BusinessCentral ecosystem. From the essentials of training to the key responsibilities of partners and customers in implementations and documentation, get ready for some must-know insights for all BC enthusiasts.💻

 

You don't want to miss:

 

🏅The ERP COE: Learn about Steve's groundbreaking center of excellence initiative in El Salvador and the critical need for top-tier training in Latin America.

 

⌨Source code management: An in-depth discussion of the importance of source code maintenance and documentation for Business Central extensions and the risks of improperly managed code.

 

💰Tech debt: Why and how technical debt can lead to significant business risks.

 

🥊Real-world challenges: Engage in the complexities faced by partners and customers alike, and how continuous learning and effective documentation can make or break your implementation.

 

🔌Customer empowerment: Learn why it's essential that customers take charge of their ERP systems, questions to ask of your partner, and why ERP success is ultimately owned by the customer.

 

🤝Partner accountability: Explore why partners must uphold high standards of service & support, while maintaining policies and ethics around code management.

Send us a text

#MSDyn365BC #BusinessCentral #BC #DynamicsCorner

Follow Kris and Brad for more content:
https://matalino.io/bio
https://bprendergast.bio.link/

Speaker 1:

Welcome everyone to another episode of Dynamics Corner. Brad, do you have your repo? No, perhaps you should. I'm your co-host, chris.

Speaker 2:

And this is Brad. This episode was recorded on November 14th 2024. Chris, Chris, Chris, Repo. What's a repo? Someone taking your car? It could be. It's Someone taking your car it could be.

Speaker 1:

It's almost like taking your car.

Speaker 2:

Business Central is a great application. You have the opportunity to extend Business Central application, but have you ever wondered how those applications are made? What happens to the source code when it is? How those applications are made. What happens to the source code when it is? Today we had the opportunity to speak with one of my business-centric community favorites.

Speaker 1:

Steve Endo. I wish I he does have that voice.

Speaker 2:

I wish I had that recorded. I'd have that as something on repeat Every time my phone rang. It would be Steve Senn. You have a sultry voice.

Speaker 1:

I don't have to edit his audio too much. It's like that natural radio podcast voice that's it.

Speaker 2:

That's what I have. That's why I'm here, steve um, I'm okay, no quieres hablar español conmigo?

Speaker 3:

You're far ahead of me.

Speaker 1:

You're speaking a little too fast yeah exactly no.

Speaker 2:

I listen to Steve's weekly Spanish lessons on Fridays. Well, I try to listen to it. It's the coffee hour that you have. Can you move it please?

Speaker 1:

It's lunchtime for me it's lunchtime, so it's not real.

Speaker 2:

I can't enjoy it with coffee.

Speaker 3:

It's 8.30 for me, bro, Like 8.30 or 9. I don't even know what time it is. So, yeah it's. I drop the kids off, I come right back and I frantically get everything set up and try to get everything working and go live. It's um, yeah, it's just a madhouse.

Speaker 2:

No, it works well.

Speaker 1:

I join it, man. I love it, though it's that's also Fridays. I typically do not have anything on Friday morning. Awesome, I sit there, make my Americano listen to your stuff, so you're one of the 12 people. I'm sure there's a lot of people who've used after, like you know, if Brad doesn't want to miss his lunch or something, I fully appreciate that.

Speaker 2:

No, I try, I try, but I've been looking forward to speaking with you about this topic that we want to talk about. Before we jump into it, though, we talked about your weekly Coffee with Steve podcast. I think it's a podcast, what do you call it?

Speaker 3:

I call it a live stream.

Speaker 2:

It's so sophisticated. It's a weekly live stream, but would you tell everybody a little bit about yourself?

Speaker 3:

I am Steve Endo. I live in Los Angeles. I have been working with Business Central. I found some old blog posts that shocked me. It was quite a while ago, pre-business Central whatever they called it financials and so I think I've been working with it since 2018, something like that, and then 2019, if I got that right in earnest focused on development, learned AL development and Docker and all the technical backend stuff, but prior to that I worked with Dynamics GP since 2004. Prior to that, peoplesoft, solomon4, development, you name it. So I've been around.

Speaker 2:

It does. It sounds like you've been around here with great ERP background and you're doing something excellent with the center of excellence as well, too.

Speaker 3:

Yes, that has been a crazy adventure. Sorry, un momento, por favor, let me. I'm turning off, my robot vacuums because they're making noise, so I apologize.

Speaker 2:

Hopefully you can edit this. We can't hear it. We can't hear it, but we'll have to leave that in there. Which robot vacuums do you have?

Speaker 3:

I have robo rock vacuums that are a few years old. They were the fancy ones at the time. They are now considered, um you know, ancient by today's standards. But okay, I have told my fleet of robot vacuums to stop vacuuming. Quit interrupting my important podcast here.

Speaker 2:

Sorry, that's it.

Speaker 3:

So my apologies. So ERP Center of Excellence started as this zany idea. Like something got into me and I came up with this absolutely crazy idea. I had no plan, I knew no one in El Salvador and I just went over there and started banging on doors just nonstop, had meetings, found people, tracked people down, bug people, contacted them and it's a lot of dead ends, just dead end after dead end, and eventually got connected with some people that were doing a kind of like a community economic revitalization of a small town and they were open to having me start something there. They didn't really know, I didn't really know, and jumping to today, it is truly amazing.

Speaker 3:

We now have, I believe we have five people in Berlin, el Salvador, town of like 15, 18,000 people, site of a volcano, relatively remote town relative to El Salvador standards, and they're blossoming. They're doing a great job. They're learning Business Central, they're doing training of Business Central, they're doing RDLC reports, word layouts, config packages, someone's learning AL development, someone else is learning Power Automate. We just agreed to have an 18-year-old come on board. He just graduated from high school and he is going to be building internal systems for a full network operations center there, for a full network operations center there and he's going to be ingesting customer telemetry, doing a full NOC dashboard, proactive telemetry, monitoring, support tickets, the whole bit.

Speaker 2:

Wow, that's excellent, and I do think that sometimes, doing what you did, you had the end in sight or an idea in sight, but having no plan, sometimes I think it works out better because you kind of adapt as you go and what sticks works, but at least you know you wanted to do something with Business Central and you don't get hung up in the planning, you just go.

Speaker 3:

Yes, and I can't even credit myself with having an end goal in mind. I had this very, very small idea I'm going to go to El Salvador and offer a week of training. How nice would that be? Right, we can have a few people who know Business Central in Latin America because there seems to be a just massive lack of resources, training opportunities, you know, in the entire region and it is a massive region right, like how can we not have any business central presence there? I know there are partners implementing business central, but to ask them to attend a one thousand fifteen hundred dollar training for business central for their consultants is economically infeasible. Literally it it's like asking me to spend $20,000 to send someone for a week of training. Just the economics don't work.

Speaker 3:

So I thought, oh, this would be cool to train some people and get some more people in Business Central in the region. And that every single step of the way, kind of as you mentioned, changing left, right, zigging, zagging, coming up with new things, finding roadblocks, pivoting in an entirely new direction, and that's everything we do every single day. Laptop dies great, get a new laptop. Right. Like internet goes out. We now have cell phones and ups like every little impediment is like cool, work around it, move on, and they're doing a great job no, that's excellent I remember when you first thought of that and I was talking with you, I think it's.

Speaker 2:

I still have to get down there with you. I keep saying this, but we'll have to get on the same schedule. Somewhere you can fly by and pick me up I'll be there next week.

Speaker 3:

I fly down on thursday and I'll be there for um nine days how long is that flight for you, by the way, uh, from los angeles. It's about five hours, uh, from miami. I think it's only like three or something, two and a half hours. It's much closer.

Speaker 1:

Brad, that's like nothing.

Speaker 2:

We'll have to get together, steve because I would like to go.

Speaker 3:

Texas is also very close.

Speaker 2:

I would like to go down there for a short period. Next week is a little too soon and I have another trip planned. Well, not, unfortunately.

Speaker 1:

No, cancel all of that, Brad Just go.

Speaker 2:

If I could, I would, but I can't, so I won't.

Speaker 3:

It's an inexpensive short trip down there. Yeah, pop in the airport. Very efficient, small airport. Head right out. We can have a driver waiting for you. You can run a car. You name it. Is it direct flight? Usually from LA. It is a direct flight. There are alternatives, but like hard to beat a five-hour flight no, that's great.

Speaker 2:

I I do want to see that. I would like to go down there I'm interested in and I'm getting at the point in my life where I want to see more and I I've been years of consulting and I've been everywhere, but I've been nowhere, so I'd like to do it. Uh, but no, great job on that, congratulations. And the whole topic of talent isn't what I wanted to talk about, but what you're doing is a great thing because we're struggling and going through it. It's just how do you attract individuals to come into the business central space and if nobody wants to hire anybody? I think you talked about it and I don't know if you and I talked about it in person. I mean, we've had a lot of conversations about this, but if nobody wants to hire anybody without experience and everybody wants people with experience, but nobody's hiring anybody without experience how does somebody get experience?

Speaker 2:

so I'm on that initiative now too, and I'm willing to spend some time to train individuals to go down the path of getting into it, because we need it.

Speaker 1:

It's new generation is what we need. We need perspective, all that.

Speaker 3:

And that was one of the dead ends that I encountered when doing the ERP Center of Excellence. I thought, oh, if we train someone, if we get someone certified, they will be of value and might be an opportunity to work remotely for US partners Universally. Zero hesitation. The answer I got was absolutely not. I would never hire a person you've trained, a person that is certified, a person that has three months of experience, universal, like. There's zero hesitation in their response to me for every question. I was like huh really.

Speaker 3:

And what was really fascinating is I could tell their responses were completely unexamined Because, as they tell me, they would say we do not hire remote workers Really, except for these remote workers that already work for you. We would not hire someone who doesn't have x, we would not hire someone. And these were just excuses, and so it's fascinating to watch this dissonance from what they say compared to what they do, and I was kind of puzzled by that and so, yeah, I'm like, okay'm like, okay, fine, we'll hire them as interns, we'll train them in. Maybe they'll be good enough in six months or a year or whatever We'll find out. So it's an all grand experiment for me.

Speaker 2:

Well, it seems to be like you're making a lot of progress. I follow it online and the conversations you and I had. But to get into the meat of the conversation, this has been frustrating me and I know you as well for some time and it seems now it's popping up everywhere. I experience at least once a week it feels like this type of situation and with Business Central and Business Central development, the architecture changed from Dynamics Nav formerly Navision to where you have extensions. Prior to Business Central, the code that you wrote was embedded within the application. So it was. If you in essence had modifications within your database, as we would call it, the source code for those changes were within your database. Now, with AL, you have source files. You create an extension. That extension then gets and this is not AppSource related, this is a customer that has a partner, a freelance developer or an internal developer creating code for them. You have source files that you in essence compile to create an app file which you then load into your Business Central environment.

Speaker 3:

As a per-tenant extension.

Speaker 2:

As a per-tenant extension, correct, yep? And I don't think anybody has any thought to. What does that mean? And I experienced. My first experience with this was when it first came out back when Business Central had just the show my code, true or false, and someone said it to false. We're going to get into what all that means. And then a customer had an extension installed. This developer's laptop died.

Speaker 1:

Nobody had access to the source code and because that show my code was set to false, they had to redo the entire thing this goes back further than that, because the first encounter I had was the version one I think it was like NAV 2018, where I was working on a client and they had some things that triggered and I was like, what's triggering this? And it was like the first version of extensions and we couldn't get to it, no matter what, and so they had some form of documentation that we had to recreate the whole thing yes.

Speaker 2:

So now this brings up the whole question just to kind of the to paint the flow. I kind of jumped the gun a little bit because I'll have to be held back, because I get. So you recall when we were talking at the conference. I get so animated and passionate about this because I don't think a lot of users of Business Central realize the risk to their implementation of not understanding or assuming that the extensions that they're having created for them and again it could be internally it doesn't mean it's just the partners doing it, it doesn't mean that someone that you may contract externally is doing it. It could be someone that you're doing it internally as well. I don't think they understand the risk of not having that source code available to their business.

Speaker 3:

I would agree, and I've seen it in the Dynamics GP world for 20 years and surprisingly, not many customers end up having a problem with that. They're very fortunate. But a few do have some notable experiences where they do have a problem. So yeah, to this day in Dynamics GP world we have the same issue and customers switch as partners. Six to 12 to 18 months later they realize they need to upgrade and can't because they don't have the source code and they're left going back to their old partner if that partner is still in business, if that consultant or whoever developed it still has the code, and they are asking very politely if they can get the source code and hopefully they can get it.

Speaker 2:

Yeah, and this I tried to not jump all over, because just every sentence that we say to me can shoot off to something else because I have to reel it back. File the policy with now you have more. You have allowed debugging. You know download symbols, show my code, early versions of show my code. In essence, what that really means is do I have access to the source code within the app file?

Speaker 2:

So if some forget source code management for a moment, so if somebody loads a per tenant extension, if you go into your extension management you click on, if you have list view or it's even's even ellipse, if you have the tile view the three dots there's an option to download source. If you have that enabled, to where someone can download the source, anybody who may need to help you, including the partner, because they have another story here. I'm going to tell you this wonderful story they can download the source for what you have running to make changes without impacting what you have. If you don't have that option enabled, you cannot download the source. Therefore, you do not know what's installed in that extension and if somebody were to need to make any changes, you have to go back to get the original source code and hope, as you had alluded to, whomever wrote it has it and hope they have the right version. Steve, that you and I have been having about losing the source code, I will tell you about an implementation where someone had the source code. It didn't match what was installed. Therefore, when they installed a fix, they lost functionality because the source code functionality, because the source code wasn't the correct version. So here we go with another risk of you don't have access to the source code in the event that you need to upgrade, or if you have a need to modify the extension, you don't have the proper source code. And now everyone will say, well, I don't need to upgrade, or what's the impact on the upgrade? Well, let's roll into Microsoft rolling out updates to Business Central monthly and in those monthly updates, through the evolution of the product, as they should, they make changes to the product to enhance the usability for the users.

Speaker 2:

So they improve it in essence, by their nature of improving it. Sometimes you also have to update your code to work with it. And if you get the nice notification saying, well, we have to mod, you know you make your extension compatible with the next version of business Central and again them upgrading and making changes to it to me is not an issue at all. I mean, it's just what they need to do to improve or enhance the product. I guess you could say to make it more feature-rich. But if you don't have the source code, you can't make it compatible. Therefore, the end game is it will be uninstalled because it can't work with a newer version, so you lose it.

Speaker 3:

And, as we discussed at the Summit conference, I was sitting next to someone on my flight to Texas and she's holding her phone and I'm able to see these messages and she's just deleting all of these messages that say your extension won't upgrade, you need to fix it, and it's just delete, delete, delete. And I'm like what, what? I would be absolutely terrified if I had an inbox with 30 of those messages and it was just kind of coincidence that I'm sitting next to someone who does microsoft dynamics, both gp and bc, and I'm just watching those uh emails get deleted and I'm like it's a partner.

Speaker 3:

So this is a partner yes, now I I mentioned there could be lots of reasons. Maybe that wasn't her role and someone else is handling that, but the fact that there are 35 of those things in your inbox like you should have caught that at next minor, next major, right, like you shouldn't get those messages. And that's why, when I emailed, you said Brad, do you have a copy of that message? Because I've literally never seen it before. Like, if we get that email, it is we have dropped the ball, right, it's too late Now. We know that. But the fact that I'm watching a major partner have dozens of those emails points to some type of systemic problem, right, it's just a symptom, like something's wrong here. What's going on? And I'll let you guide the conversation.

Speaker 2:

No, you don't have to let me guide it. I'm doing all I can to be reserved, because I have so much I want to say about this topic from so many different angles. It's my 2025 charter to spread the word on this.

Speaker 3:

So we can't save the world. We've been talking about some of the symptoms, some of the consequences, right, we've been talking about some of the symptoms, some of the consequences, right, and you know, sometimes people will do things and without experiencing the consequences, they may just never understand the reality of that. We can talk at the conference, in our sessions, presentations, and say, hey, you need this, and it goes over the heads of 98% of the crowd. But there's the 2% sitting there who come to the realization that we're talking about them and they understand because they're in that situation and we've seen this before. They're like wait a minute, we can't get the code from our partner. They have told us they will not give it to us, or whatever those conversations we've had. Yes, now you get it, and they're slowly waking up, but we, we can't. There's only so much we can do. So if we go from consequence to situation, to up the chain, what is the path for education? Not everyone is going to want education. Not everyone is going to hear what we're trying to offer. What can we offer? What can we do about it?

Speaker 3:

Because, like the call I had with the customer who spent months getting an internal developer to develop a PTE. He cannot find the PTE anywhere in his business central. He has one laptop with the source code. He didn't know the words GitHub or DevOps. When I mentioned it he had never heard of pipelines. This is the IT manager I'm helping now. At that point he's right on the edge of being too late for me to offer him any help. He's got one copy of source code, no version information, so we have no idea what it is right. Just as you mentioned, it simply says 1.000 default publisher. That's all I've got to go on, right. So is this the latest version? I don't know. And to your point, can we install it? I don't know. And to your point, can we install it? I don't know, it might overwrite like well, actually we couldn't even find the PT in their environment, so yeah, so how do we bring it back to a productive solution?

Speaker 1:

I think you have to break that down further of responsibilities or roles. You know, I think, what for example years ago when customers were deciding to move to business central. One of the key points that we always say is you know, work with your partner to or at least start documenting any of the customizations you have. Now nav is fairly easy to identify those. It's typically the functionality or how it works is usually the difficult component. Now it's a little bit more. It's harder because now you can do functional and the code itself that you have to gather.

Speaker 2:

It's difficult because, from a customer's point of view right to go to Steve's point where do you start? I do have a thing to add to this at the appropriate time A customer using Business Central. I don't think they should be expected to understand all of this in a sense, right, unless there's some clear-cut documentation for it, because they're also going to entrust in whomever they hire to do it properly. I always equate implementing business central to building a house. Either you're building a house for a business or you're going in and you're enhancing a house, you know, to satisfy the changes to the business. If I'm going to hire a contractor to come put up a fence around my house, for example, I'm not going to understand all of the rules of fencing until somebody has to come in and fix my fence, for example, or something here. So there needs to be some. You know, this is where I'm going on this mission of okay, well, if you're going to implement Business Central, think of these gutches, right, just so you're aware of the potential risks. So then it leads you to okay, well, let's, you know, go on a mission to ensure that partners fully understand, because a lot of the challenges that you have is a lot of the partners are working with individuals that understood the CAL way of doing it, which is ah, I'll just make my changes in the database. They're in the object design. I can go back and get it. We don't have the ability for source code management. We don't have anything like this.

Speaker 2:

So, ah, for AL, it's the same way. Ah, show my code false. Sure, I don't want anybody to see what I'm writing, because I'm not comfortable with my code anyway, so I don't want somebody to look at it and criticize it. Then, next thing, you know, someone needs help. And now everybody realizes there's a breakdown. So to your point, steve, where do you start? And also, to mention somebody, a customer can find a contractor as well, and again, not all of this audience is at fault, but it only takes a few to make it difficult for a few or a lot, but you can find a contractor to do it. And are they going to? Should they be expected to have a repository of your code or something? It's a challenge.

Speaker 1:

I think the responsibility has to. Somebody has to start. I mean, initial responsibility needs to come from partners to educate the customers. The need Now to what we've been saying is a lot of partners don't even know what those are and it needs to. Someone has to mention it at some point of that conversation, at some point in that relationship, even to a point where maybe a partner doesn't do that now, but as long as they have the understanding, like, hey, we should probably let the customer know you need to have a repo established or a GitHub or DevOps. That may still be the customer's responsibility to put that up, even if they don't have anybody on staff, but maybe consider hiring somebody that knows it or work with a partner In terms of education.

Speaker 1:

You need to break that down further. So there's an education from a partner side that any new partners or partners that are coming from NAV or GP that has never done it before, they need to be educated the importance of that. The other side of that, the other audience, would be customers that are deciding to move to business central or they were already in business central. They just need to make sure that you maintain that environment moving forward. So it's almost like you have to break it down beyond that, and some, some customers don't have it managers, they're not going to know, they're just like hey, set me up.

Speaker 3:

I need this customization there are many, many levels. Right, I was waiting for this.

Speaker 2:

I can see steve is like me. We're both kind of. I'm staring at him because I remember the conversations we've been having and he's fuming just like I am, like I just want to burst well, I burst, well, I guess I'm not apathetic about it, I guess I'm just.

Speaker 3:

I've seen it enough where, hey, consequence is a motivator, right, there's positive consequence and there's negative consequence. And if I hire the contractor and they do it wrong, guess what I'm still responsible for it. And guess what I'm still responsible for it. And guess what I'll learn the hard way. And could I have possibly known they were doing it wrong? Probably not right? I haven't studied building code. So is that my responsibility? No, but in the construction world we have a pretty developed structure for these things. We have licensing, insurance, we have permits, we have inspections, right, if you follow those rules. Now plenty of people skirt those rules to their own, at their own risk, right? I don't necessarily want that level of of bureaucracy in our industry, but maybe it's an offer someone could make. But would a partner accept that offer for an outside?

Speaker 1:

code inspection?

Speaker 2:

probably not, I don't know um, um, where do you start? But I I think part of it is I think it's a go back to the, the education point. I think that we need to have a you know somewhere where it says, okay, well, if you're going to have custom extensions, this is what you need to do. And then, steve, to what you've been saying with me, because I've been having you look at something. You need to make it really simple, right, I've come to.

Speaker 2:

If you don't have your source code available, if you don't have it within a repository, if something happens, you're not going to get your code period, you know, and your business will be impacted because whatever functionality that is, it doesn't matter what it is, it doesn't be adding just one field, for example, to a table, or it could be writing an entire system. That functionality would no longer exist. And I think we need to have some sort of you know document on that, which it's it's I want to get to. But from the partner point of view, I understand Steve's comment of would you want someone to go through the licensing? But I want to get to the?

Speaker 2:

But in a moment they also some may look at it as okay, well, I don't want anyone to look at it because someone could comment it, but you know, fine, or now they can get it and do something else with it and not have me service it. Right, you know, and almost that like I have it, I'm not going to give it to you, so therefore you need me type approach. I'm not saying they all would do that, but there's many reasons why I could see someone not wanting to do it can I go to the?

Speaker 2:

licensing thing. I was going to jump with this at the end before you go to the licensing brad.

Speaker 1:

You were on my session. Um, you know what to do before starting your business central implementation. You know, I, I, and maybe I need to add this and dive into much more into detail for those that are decision makers or moving to business central. I had mentioned about documenting your customizations and things like that. I did prior to that session at conversation with others, that you know who owns that customization, who will own it, and I've always pushed back and said you own that and you need to make sure that you have a tool that helps you manage those changes. And so we start talking about GitHub To them. It's still way over their head. They're like I don't even know what that means. Who's responsible for that? And so you're responsible. I don't have somebody that can do that. Well, you work with your partner, so it's still alien to this industry of the ownership.

Speaker 2:

And of course you get some deeper conversation. The ownership is tough because I think that would depend upon the contract of the development Right. So I'm not saying it's tough to be inferred, it should be stated I am paying you to develop this, therefore it is mine. Or the partner can say on the other side, and I'm okay with it, you're paying us to do this, but it's our intellectual, I mean, that's a negotiation between the two entities at that point. So I could you know that's whatever they agree upon. But it should be at least stated.

Speaker 2:

In my opinion is step one Is who owns the rights to whatever customizations or extensions are being made, right, first of all? And then, once you have that clearly identified, then you can determine who's managing it. But in essence, I think it still needs to be managed. Period, yes, um to the point. So if this comes to play right now, as you talked about, you had mentioned next minor, next major, and now someone talks about Chris. You talked about GitHub. You talked about source control management.

Speaker 2:

You know repository for the code, so you can, there's many benefits of source control management as well, or source control repository, version history, access to the code, no-transcript. That means either some of the fields changed, some of the events changed or something changed. It doesn't necessarily mean your app will work the same. It just means that it will be compiled and it can be installed because there isn't a conflict which would help prevent them getting those messages that it will be compiled and it can be installed because there isn't a conflict right which would help prevent them get those messages that you had identified and properly test and review what they need to maybe do with their extension.

Speaker 2:

So I see I'm gonna have to bring this back to like, from a customer point of view and a partner point of view, what they need to be aware of. One is check your policy for your app files, for the ability to download the source code at a minimum, because at least you can get what is installed and modify and enhance it. Second to that is to have a repository that you store this code in, so you have access to it, so you can keep track of it, you can see it's compatibility with the next version and even publish it to an online environment without having somebody touch it, so you know what is installed is what's in the repository. Steve, did you want to say something?

Speaker 3:

No, I think you can get a lot of directions there. And yeah, on the one hand I empathize with the need for education and we do that through conferences and whatever avenues we can. On the other hand, there's only so much I can do. And when I see partners not attempting to adopt good practices, you know I'm willing to compete with them and in a 30-minute phone call I can make it very clear that their partner is not taking care of them. Yes, right, it's not difficult to demonstrate and I'm not going to apologize for that it's. And I'm not going to apologize for that it's. Hey, the customer's paying thousands of dollars for that service and it's putting potentially millions of dollars of their business at risk.

Speaker 3:

If a partner is not responsible, if they're negligent, if they're lazy, if they're whatever, like, make up an excuse. I'm sorry, customer, that that happened to you, but here are the 10 things that I can just point out in 15 minutes that these problems are obvious to me as a professional in this industry. I am happy to demonstrate my ethics, my morals, my competence and my lack of knowledge in certain areas. I'm happy to discuss that, but there's only so much I can do to help the customers who didn't know to ask those questions, or who didn't understand the importance of those things, or who had a partner who did not invest in the knowledge and education and training and reduction of technical debt. Like I've seen it for 20 plus years. We're going to continue to see it and I'll help, on one hand, with conferences, presentations, webinars, you name it, but on the other hand, I'm ready to talk with those customers who have been neglected or have received poor service.

Speaker 2:

You make a good point.

Speaker 2:

I like the way that you talked about with the contractors or such, because you can only say so much, but you just have to be able to help out those the best you can at a certain point, because if you're going to look for someone and you have them do work on your house, you're going to deal with the results of it when it happens.

Speaker 2:

The only thing you can have is some education. Just to throw something into here, with that licensing or that permitting agency right, earlier versions of NAV or Navision, when someone was doing development, or even if an ISV had a solution that they presented to a customer to install, we would merge the objects that code was available within the database. There were certain cases where some of those objects were not readable, cases where some of those objects were not readable. Or if an ISV had a solution, they would apply to Microsoft for a license to basically hide the source code for those code units. Why don't we have the same type of thing for Business Central, where that show my code would only be options for partners that have a special license? Or you know, even an app, an app source or something.

Speaker 3:

So you're saying essentially require show my code by default.

Speaker 2:

Correct and in certain cases, if you're a developer, whomever you may be, right, you can get that to where your per-tenant extensions can have that off for a reason, right, you can apply to Microsoft for the sake of it just to say that you understand the risks of what you're doing.

Speaker 2:

You have proper, you know I'm not saying Microsoft would have to you know, govern and ensure and validate that you're doing it properly. But in a sense, though, I think doing this would also do well, because by customers potentially running the risk and I hate to say it on the extreme, because you know I talk on the extreme someone could go out of business if they have an extension that doesn't work properly, if it's that important to the process of their business, you really can go out of business. If you can't upgrade because in the online environment you can only defer that for so long, right, so you can give yourself some life of five months. So maybe you take it back to the agency, the application, because it also makes Microsoft look bad in a sense, if customers can't handle it.

Speaker 3:

On the one hand, do we well on the multiple hands the first hand, do we really want Microsoft being the arbiter of that process? I don't know, maybe, maybe not. It is their platform, maybe, maybe not it is their platform. So is that a prudent thing? On the other hand, maybe they will be forced to move in that direction if the consequences of these problems become significant enough that they realize, ok, we need to start to manage this for better or worse. Like, how, say, apple validates apps that go into their app store right, they kind of control the platform. Some people complain about that, but in this sense, they're validating for quality, they're validating for malicious content and all these other specified benefits. So is Microsoft going to need to start to arbitrate that? I do wonder we've discussed in general.

Speaker 3:

If an AppSource app is not being, you know, responsibly maintained and that prevents an upgrade, what would Microsoft do about it? Like, the customer doesn't have access to that source code. What if an AppSource app vendor, a publisher, goes out of business? What if they just abandon the app? You just uninstall and move on. I don't know. We've asked this question for a few years now and I don't know if these situations have happened or not.

Speaker 2:

That is tough, because an app could potentially be someone's IP and I think Microsoft then getting involved would be a challenge Again.

Speaker 3:

I don't know, so is a PTE.

Speaker 2:

A PTE is someone's IP. But this is where I'm saying you could have some mechanism of getting it for lack of better terms licensed. The way you could hide the code because you can prove it's IP or you claim it's IP or something you know. You have to go through a step. I'm not saying the step has to be litigious or arduous, it's just, by default, don't allow it. In those cases where someone wants to do it, they fill out a form. Even if the form just says I acknowledge that no one will have access to the code in the event of an upgrade, something could happen. Even if the form just says I acknowledge that no one will have access to the code.

Speaker 1:

In the event of an upgrade, something could happen. You know, something as simple as that. Well, they'll have to step in eventually, you know right? I don't know.

Speaker 1:

The app source is growing and growing and growing In Apple space. It's kind of like they just want to make sure it's not malicious or anything like that, and I'm sure Microsoft can do the same thing make sure it's not malicious or anything like that, and I'm sure Microsoft can do the same thing. I think for me to your example, steve. Like, if the app is, you know whoever owned it went out of business and several customers are on it and using it and it's a core of their business, I think at some point maybe there's some agreement down the road that if an app has not been maintained or being validated or recertified on the app source let's say, two years, nothing has changed. Maybe it comes to a point where whoever is using it would get the source. I don't, that's tough.

Speaker 2:

That realm right. There is a whole other story. I'm just trying to go from the front side versus what happens if someone goes out of business and such like that. I mean because I could argue if the app was really good and has a wide customer base, they could sell it off as part of their going out of business, right?

Speaker 3:

Real-world scenario. A customer called me. Their IT person had some type of severe, life-threatening medical condition In the hospital. They did not expect him to return to work. Return to work. They were in deep trouble.

Speaker 3:

Another one, a developer, a consultant slash, quasi-developer was helping a customer with some extensive, not customizations, but kind of yeah, customizations to their environment. We can't get a hold of the guy. He's disappeared for three months and no one's helping this customer. And so it happens. And then the customer that I'm working with now. They spent months on it. They hired an internal developer for their BC environment. For whatever reason, they let that developer go and now they have this code they think is the code, and I'm like how do I know what this is? They spent tens of thousands of dollars on this and so, yes, all sorts of scenarios and we can try on the education front. We, we can try on a community. You know there's the AL dev practices or whatever the website is. We can try to make offers. We can't make people listen, we can't make partners improve and reduce their technical debt. So there are going to be consequences.

Speaker 1:

So there are going to be consequences. The risks will be there. Yeah, I mean you could really focus on education.

Speaker 3:

That risk is alive and well Steve you tell me I should give up on my fight. No, I would just say that perhaps you know. Let's figure out. In what ways can we focus it to be more effective, most effective, and who's listening, who's willing to invest? How many partners send their consultants to external training? Send their consultants to external training? How many partners proactively identify their technical debt and work to address it? How many organizations have you worked for that still have bad practices? So I don't know how much we can accomplish. We can make offers, but the people who are accepting those offers, I would speculate, are the top 10%, right. Like I've attended training by AJ, I'm like why isn't this class full? Aj Kaufman, yeah Right. Why isn't this class on API development not full?

Speaker 2:

yeah, the valid questions. I agree with you on that. It's a and it is a challenge from a business point of view, but there's also a sense of you invest in your talent. You reap the rewards of that as well, because with the application changing and and again to even go to your point, it doesn't have to be you send them to external training, like you send them somewhere. External training could be you bring someone in. External training could be you can pay for an online course. I just want to be clear. The external training could be even say you take one person, say, hey, learn this research it.

Speaker 3:

Talk to people and then hold an internal training class right.

Speaker 2:

So, there's all ways for it, but training class right, so there's always far, but not taking the time to do that actually hurts, because the way that they would implement may be different because of it's not keeping in line with the direction of the application. And even, like you're talking about, with the coding. Don't even get me started on the APIs, because I had a conversation with someone at Summit and they were coming up with this wonderful solution and then you say, well, why don't you just use an API page? And they're like, can it do this? Yeah, I love that. It's a fact and I know you experience it yourselves. We have these conversations and it's not easy for someone to know everything. I agree, experiencing yourselves, we have these conversations and it's not easy for someone to know everything. I would agree. I mean, there's a lot of depth to development, but some things you should have a core understanding of they at least exist, if you follow what I'm saying. So that external training and the additional training is helpful, which could help in these instances. So I think you're right.

Speaker 1:

in a sense, You've got to make it simple.

Speaker 2:

Well no, steve tells me all the time I have to dumb things down.

Speaker 1:

You have to make it simple so that I can understand it. Even, for example, if all these conferences are happening, you can even have a session where, like, how to be a good pm on a business central implementation not just a good pm, because project management in general is pretty broad, but how do you manage a business central implementation? Because anytime I ask, like, how do you? What's your method? Someone asked me what's your method? Agile, you know waterfall, I'm like hybrid. I was like hybrid.

Speaker 3:

Wrong answer.

Speaker 1:

Where does it fit?

Speaker 2:

We just get it done. We just get it done.

Speaker 1:

Just get it done. But even if someone could put a session like that of what a good business central like, how do you prepare a business central and how do you educate your, you know Well, that's a little bit different than this topic.

Speaker 2:

But I mean, there's so many of these sessions. And again to Steve's point, who goes to these sessions and where are they? I mean, fortunately, I went to Days of Knowledge in the US, which it was its first time there, but it was mostly a technical group, which was good, I think that was even as small as it was. It was an inadequate size for the first time in the US, but it was full of all technical people, and I don't mean technical from the development point, it was full of developers, it was full of functional consultants.

Speaker 2:

So the vibe for the conference was just completely different, because everybody was learning and talking about the actual, what I call boots-on-the-ground implementation processes, not the. I'm up here, this is how I think it works, this is how I think it should work. So it really was a rich conference for that, for that. So now, if we go back to Steve on the source code, management for business, central implementation for customers, knowledge and education, how do we start this? I'd like you you know, just behind the scenes, to say you know, I don't know if you saw my email, but I'm stealing your survival guide. I'll just put it on there in the recording too.

Speaker 3:

I like your title from our email discussion yes okay, sorry, it's been a busy few weeks. I've already forgotten the details of that, but I think I just don't matter. Do you see that? I just don't matter would you say?

Speaker 2:

I think I called it an idiot's guide, though I think I might be your term no, no, you actually said the no. The formal title was Steve's survival guide, but I took the survival guide.

Speaker 3:

Okay, well, I guess we've got education, and right now I've. I guess my frustration has been I'm like, okay, I've accepted it, and I'm also now trying to just lead by example and I talk about what I'm doing, and I talk about Cosmo Alpaca. Is that the right tool for everyone? No, but it's a pretty powerful tool that just has us doing good practices by default. And we had problems. Now we use this tool. Our problems, those problems went away and now it's like, wow, look at how much time that has opened up for us to do these other things better. So we've improved.

Speaker 3:

And you know, now I just have the call. We just got the engagement to do a code review for that PTE where there is no documentation, no information. We just have a pile of code, no source code, control. We don't even have the PTE to test in an environment, so we don't know how it should work. And I'm like, hey, best I can do is just offer you an initial eight-hour code review. We'll see what we find and I'll try to help you. Not sure that we can help everyone.

Speaker 2:

No, we can't help everyone. I think I like your approach. See, this is I'm going to call you every week for therapy Right before your live stream, so you'll just be frazzled right before he started to throw you off I'll have my coffee. But I think you're right. I think it's just a matter of just putting out the message of what you're doing and hopefully enough people see it that you can, you know, instill some change or at least people be aware of good practices. But even you talked about Cosmo alpaca. It's the same thing. It's like some of these tools are built.

Speaker 2:

I had a conversation with somebody that was recently and they were struggling to install an on-prem business central so that they could test something and do some work. And I was scratching my head. I'm going why don't you use a CDX? And if you need another version or something, well, why don't you just spin up like a cosmo alpaca environment, like you have all these things available, that will. They'll create them for you. You don't have to allocate space, you don't have to find the hardware, you don't have to. You know, worry about competing versions. But again, it goes with the whole I I. I'm just coming down now to just tell people what you do, I think, and maybe somebody will get it, because there are many things out there and you can't change everybody, I guess.

Speaker 3:

And people don't know what they don't know. And in training people and working in El Salvador, there are people who are willing. There are people who are eager, they're open to learn. There are people who are willing. There are people who are eager, they're open to learn. They just don't know what to learn. And once you but once you give them that guidance and you give them a learning path I believe that's a term that you've used it's like wow, here's what I can learn, here's how I, you know, do this properly and that's very effective.

Speaker 3:

The people who don't think to learn first and who just start writing code, who just start doing implementation, you know they're going to have some bruises and scrapes and hopefully they learn from it. Hopefully the consequences aren't too significant and hopefully they learn from it. Hopefully the consequences aren't too significant. But an IT manager who hires a developer and is not aware of source code management, they may be a little out of their depth and maybe that's the lesson Everyone's got to learn some way. Yeah, there's consequence there. I don't go out and put myself out as a professional, you know, dentist or auto mechanic, right?

Speaker 1:

I don't pretend that that it has to be our responsibility because I could hire a third. I could hire a third party or an independent consultant. If I'm not, if, if it's the partner's responsibility, now I got to bring in my independent consultant, bring my partner in to have a conversation. That may not be realistic. I may just hire someone, just a quick development fix, but I should be able to tell that independent consultant or developer here's how you access my stuff, here's how you submit my stuff. That's still my responsibility.

Speaker 3:

And along the lines of customer responsibility, I totally agree because that applies to the implementation as well. I'm sure you both have been on implementations where the customer thinks by hiring a consultant they have effectively fully outsourced all the issues.

Speaker 2:

It never happens, right, never happens.

Speaker 3:

Exactly, and when that customer is not paying attention to their financial reports, their chart of accounts, their dimensions, their transaction entry, like if they don't have the time to be bothered by all those little details, I can tell you with a high degree of confidence how that project's going to end up right and it doesn't involve a single line of code. And it project's going to end up right and it doesn't involve a single line of code, and it's not going to be pretty. We don't have time for training.

Speaker 1:

Just set it up for us yeah, and I think it creates like if, even if you, if the partner owns that repo and it's first of all, it's going to add costs, because now you're going to bring in your partner, just to bring in an independent developer, and on top of that there's a little bit of buttheads there, because it's like oh, some partners are like, oh, why is this customer bringing in?

Speaker 2:

It could be the customer's responsibility, but you have to look at the size and the scope of the implementations, right? Some implementations I'm not saying they're not responsible, but some of the stuff you're saying. You're expecting someone to know a lot of this stuff. That goes back to, I think, what steve was talking about if you one, if you have a good partner, right, and a partner doesn't have to be a partner, a partner can be, even if, at this point, if you hire someone independently, right? I know independent consultants that do a very good job of telling the customers set up a repository.

Speaker 2:

I'm going to fork the changes, you own it. So it doesn't necessarily have to be that when I say partner, it's someone you're working with. I'm not in this case right. So it's in essence, I think I've given up on the fight in the sense that I'm just going to follow. I'm a Steve Groupie. I'm going to just follow Steve's model of I'm just going to tell people what I know and hopefully they see it, they hear it, I'll do, I'll try to do sessions if they, you know, get accepted at places, and if they don't, I'll still write about it, talk about it, do whatever. But I think it awareness so that, to Steve's point, consultant developers, partners understand the implications of not doing it this way because they may not know, and then customers can be aware of at least saying hey, what happens if I do this?

Speaker 1:

I get on the size because, like, let's say, for example, I'm a five person company, we're all accountants, you know, but we have some customization. I would expect my, I would expect my partner to build that up for me, give me the documentation and say, hey, if I need to make changes, you know how do I connect. I can keep all of that and then so when I do decide that I'm going to hire an independent developer for a small project, then I know how to give the max. I don't need to know, like all the details.

Speaker 2:

You're making an assumption there. To go with what Steve said. You have to know that you need it. How do I know that they're not just going to business central and changing something like the posting date and the next person can change the posting date again? I mean, again, it goes back to yes, they may be responsible. I mean, ultimately you're responsible for a lot of things that you don't know, you may not know about in your vehicle, in your house. You know there's a lot of things that you use, a lot of things that you have done that ultimately be your responsibility. You just need to make sure you have the right person helping you.

Speaker 1:

I think is what it comes down maybe that maybe the term responsible versus owning it.

Speaker 3:

Hey, if someone has a $10 million business, it's kind of on the small side for our industry, right. I mean they might want to be responsible for their business and, yes, that means production, that means delivery. That means customer service. That means accounting. That means paying their. That means customer service. That means accounting. That means paying their taxes, paying their bills, collecting revenue. That includes their ERP system. It includes their email, their servers Like I don't like it either, right, but they're responsible for their ERP implementation.

Speaker 3:

If they hire a partner who doesn't perform well, unfortunately that happens and they're responsible and they're going to learn. We can be at these conferences, we can do the podcasts, we can do the webinars, the blogs, everything we can, and I just try to demonstrate what I'm learning. I wouldn't call myself an expert, what I'm learning, I don't even I wouldn't call myself an expert. It's like, hey, I can ask five questions on a call and if that customer can sense something different, fantastic. Like wait a minute, my partner didn't discuss any of these things with me. Oh, really Happy to talk to you about those things and I've seen that glimmer of recognition in the room at our conference sessions. And you guys were both on a panel with me at DynamicsCon, right? We mentioned something. You watch two people in the crowd look at each other because they're co-workers and they're like, oh my gosh, they're talking about us. And they come to us and said we didn't know. It's like, well, good, Now you know. And now they know they have a problem. Great, that's fantastic.

Speaker 2:

Yeah, I like it. No, I mean again. You are responsible and it's it's in essence you know um from. For my part, I think I'll just continue to express the risks of not knowing where your source code for your extensions reside I think, is simply put. I mean, that's all you can do is here's the risks. Deal with it as you wish or as you may. However, that saying goes over here. Yeah, but this has been enlightening for me. Thank you, you've.

Speaker 1:

You've enlightened me, um and tomorrow but, there's still a lot of uh questions that still need to be answered around this many questions you.

Speaker 3:

You guys got two or three more hours there's.

Speaker 2:

There's a lot to it, but now I'm just like is it? No, there are a lot of questions. It's, but it opens up like what is the proper process or what should be a process, what should customers look for? But I think step one is just awareness and, as steve, as you had mentioned, just being aware that you need this. Then you can ask the questions, because there are many, many ways to do this that are not complicated. Like some I've talked with, they think it sounds complicated and it always goes back to my it's complicated to do it, it's complicated to manage it and you don't have time to manage it, but you have time to redo it three times, three months from now when your business is on fire. Like you know, it's that old saying we don't have time to do it once, but we have time to do it four times down the road.

Speaker 3:

And I don't know about you, but I'm constantly learning as well. I'm constantly finding mistakes that I made. I'm constantly figuring out how to improve. We have our own internal problems, so we're not immune from this, but I'm more than willing to be open about that, and I don't know if everyone is. So it may be uncomfortable for some people to talk about this stuff, but I think if we just start talking about it if you've seen my podcast or my webinar, no, what is it? What did I call it? A live stream, like every week, I'm like, huh, this is what I didn't know, this is what my mistake that I made. And I'm like, hey, if someone thinks I'm a fool for talking about that, it's like okay, I'm well over it. Right, this is my life? Um, if, if someone's perfect, great, send me that recipe of how you became perfect and I'll follow it.

Speaker 1:

You should start your live stream. Do you have your own repo yet? Do you have a repo? Well?

Speaker 3:

that'll be Brad's dedicated SCM live stream.

Speaker 2:

I'm going to do this now, Steve.

Speaker 3:

SCM live with.

Speaker 2:

Brad, I'm doing this now.

Speaker 3:

I am, I'm going to order that green screen.

Speaker 2:

I've had a little bit of travel. I'm doing this. Now I am. I'm going to order that green screen. I've had a little bit of travel. I can't order it. I have a. We'll talk. We'll talk about that.

Speaker 2:

But no, I do appreciate what you do and I will say that nobody is perfect and all of us are learning something new. I've been doing this for a long time and I tell everybody it doesn't matter how long somebody's been doing something, because if I've been doing the same thing for 20 years, I have 20 years of one year's worth of experience. But even more so, in our environment it's changing rather quickly. Therefore, somebody who's been doing this for 20 years may not know the best way to do things today. So, and I can tell you, I've known individuals who've been working on this for two or three years that know and understand an implementation and development far better than someone who says they've been doing it for 15. Right, and it's not. I just want to emphasize that it's your experience with what you're doing, not the duration, and that's, I think, a lot of people often overlook, because they assume duration equals experience, where it doesn't. I could tell you some stories about that as well.

Speaker 2:

Too Well, mr Steve, I failed on my attempt to get you to change your live stream to be 9 am Eastern, so I still have to call it the. You know, lunch with Steve. That's what I call it myself every time you say yeah, I call it lunch with Steve.

Speaker 2:

And I also now realize that I just have to just get the word out there and let it go, and I don't mean, let it go, not care, just put the word out there and let it fall on the ears that it may and what they do with it.

Speaker 3:

Yeah, be an offer of help and you know some people listen and those people can be your customers Excellent.

Speaker 2:

Excellent.

Speaker 1:

All you need is one.

Speaker 2:

All you need is one, one at a time, if you can convince one person, yeah. I just want to make a difference in one person's life and I do want to get that solved with you. We will have to coordinate that with some runway. I mean, I don't know, a week is not enough runway for me. Hey, name the month. What's the best month to go?

Speaker 3:

November through April is the peak season or dry season. If you're feeling extremely adventurous, you do may through um october rainy season, yeah, and bring a boat, waterproof shoes and you'll be. You'll have an adventure, trust me. But yeah, we are entering peak season, november through april. So I'm going down there now gonna hang out there for thanksgiving, but uh, yeah, january I would like to go. Yeah, yes, maybe after the first of the year. There now going to hang out there for Thanksgiving, but, yeah, january I would like to go.

Speaker 2:

Yes, maybe after the first of the year, because November is done with the holiday, we may have some plans, and December I can see, but most likely January. February it sounds like similar weather to here, because come May to end of October we have those things called hurricanes and rain that just doesn't stop. Well, thank you, mr Steve. I appreciate the conversation. I always look forward to speaking with you. If you would, how would someone be able to get in contact with you or see some of the great things that you're doing with the center of excellence, your live stream and many of the other, as I'd mentioned, great things and services that you do?

Speaker 3:

You know what? I have a links page it is links plural dot steveendocom, and that has my Twitter, YouTube, podcast blog, Twitch and my company website and then I live stream on youtube every youtube and twitter every friday. Um, and so yeah, I'm around, not hard to find me no, not at all.

Speaker 2:

Well, thank you very much. It was a pleasure speaking. I look forward to speaking with you again soon.

Speaker 1:

Okay, Take care Steve.

Speaker 2:

Thank you, chris, for your time for another episode of In the Dynamics Corner Chair, and thank you to our guests for participating.

Speaker 1:

Thank you, brad, for your time. It is a wonderful episode of Dynamics Corner Chair. I would also like to thank our guests for joining us. Thank you for all of our listeners tuning in as well. You can find Brad at developerlifecom, that is D-V-L-P-R-L-I-F-E dot com, and you can interact with them via Twitter D-V-L-P-R-L-I-F-E. You can also find me at matalinoio, m-a-t-a-l-i-n-o dot I-O, and my Twitter handle is matalino16. And you can see those links down below in the show notes. Again, thank you everyone. Thank you and take care.

People on this episode