In this first episode of the “JV B/C Podcast”, Jeremy kicks off talking about having empathy in Business Central projects, as well as reviewing UI and development basics.
Hey Everyone. A little bit of a surprise first thing this morning. This is episode one of the JB BC podcast. We’re going to be talking today about basics. One of the basics of doing projects: empathy. We’re also going to be talking about some of the basics of Business Central use and UI. And we’ll be talking about some of the basics of the development experience and how to deploy and build an extension for the very first time. So stick around.
All righty, well, welcome everyone. This is episode one. And we’re going to be figuring lots of stuff out together, I am rebooting my experience in streaming. And we’re starting this off for the first time as creating a podcast form, taking a page from Steve Endow’s book and using some of the same tools. So thank you, Steve. And we’re gonna give this a try. I’m not a coffee drinker, but I probably could use some coffee this morning, myself.
So good morning, everyone. And we’ll see how this works, I’m going to be a little more descriptive as we’re talking through things since this will be available in audio form as well.
They say you need to think about the basics, a lot of the times that you forget the basics. And you forget that you know the basics. And that’s what really triggered the idea of talking today about those. One of the things that you may have experienced is that when you go to a doctor or hospital and you’re seeking medical help there, sometimes you get people in, you feel like they’re concerned for you. And sometimes you get people that you’re the product, you are just another case in their day, they’re gonna see 100 cases in their day.
And we kind of forget some times in the consultative or project or Business Central world in general, that people are looking to us as the experts, this is something that we do every day. But for them, it’s a brand new experience, they maybe have never been through an ERP implementation before, they’ve never replaced their financial system before, they might be coming onto a financial system or a warehousing and Logistics Management set of tools for the very first time.
And it’s easy to forget how much anxiety and how much fear there is about that, you know, some of these people are going to be thinking about how much extra work they’re going to need to do in the day, they might be thinking about, you know, “oh, no, am I, you know, training the system to do my work? So now I have to think about: what am I going to be doing?” And it’s very easy to overlook how worried people are coming into those meetings. The unknown is scary. And for them this, this is a big giant unknown. So one of the things that I’ve done a lot of and people are surprised and will even comment on when they’ve been in meetings with me, is I will just ask the question, you know, when we’re looking at a project plan, when we’ve reviewed how a process works, I just ask, “How do you feel”? You know, “how are you feeling about this?” And you start to build a bit more of a connection. Because if you really actually want to know the answer, and you’re not just looking for: “that’s fine”. If you really want to know the answer, people tell you about their problems.
One of my favorite clients, you know, he jokes that, you know, “just send me the bill for the therapy session”, because he’s talking to me about some of the pain points that he’s experiencing in his business. They’re nothing that I would be able to solve with software ever. They’re often people problems. But when you do a great job of becoming that advisory role, you often can find that there are technology solutions that you can bring to the table. to help with those things, but you have to be open to the customer’s perspective on situations.
There’s a TV trope that maybe some of you have heard of, maybe some of you haven’t. And I absolutely love this one, it comes from… Oh wrong screen, good we’re nice and practiced here.
Okay, TV Tropes. This comes from an absolutely amusingly terrible movie called Street Fighter. But effectively, this villain just absolutely crushed one of the characters, villages was a terrible despot, bought lots of horrible things, you know, that sort of thing. And, you know, one of the survivors who was a child of this village, grows up and trains her whole life to go confront him about it. And she gives this speech about, you know, “you, you destroyed my village, you shot everyone I loved”. And he’s like, “I’m sorry, I don’t remember”. And she’s like, “what?! you don’t remember?!”. And then Raul Julia delivers this speech, and it’s just beautiful. If you can find the clip on YouTube, you can, I’m not gonna show it just in case of copyright challenges.
“But for you, the day Bison graced your village was the most important day of your life. But for me, it was Tuesday.”
And that just sticks with me, I couldn’t tell you if I remember any of the rest of the movie, but it’s just this beautiful, beautiful example of indifference in the face of someone going through extreme challenge can actually be more crushing and more harmful than if you were actually actively being malicious.
So it can be really important to think a lot about what is this person going through as they’re going through what for them might be a huge ordeal, a warehouse manager who spent 15 years building up an inventory from, you know, backroom of a stockroom to, now you’ve got you know, 10s 10s of 1000s of square foot, and you’ve got, you know, 40 people reporting to him, that guy’s gonna be real worried when you start talking about serial number and a lot number tracking that now they’re going to need to incorporate into their workflow.
So it’s, it’s real important to think about that. And I think that’s a good talking point of basics. Because I’ve noticed that a lot of people don’t do these, just check ins, you know, see how things are going. So, I hope that is at least a little bit of an interesting insight into understanding a bit more how to relate to people.
I’m not sure that it segues very nicely into looking at system use and things like that. But you know, that it’s still in the same category of things that you need to be able to understand that this is all a given. But for somebody that’s brand new.
And yeah, so we’ll we’re gonna hop off next into talking about the business central UI, and how some of the different system pieces come together. Because there are going to be people out there that for them that’s brand new, and for us, it’s a day ending in ‘y’ and it’s not even a Tuesday.
So without any further ado, let’s dive into this this segment, we’ll see how well it translates into audio form. I’m not real sure. So let’s dive in.
I have, and we’re gonna fade on over this, I have a brand new environment that I have created for us today. This is what you get if you have start up a what is referred to as a brand new Docker image. Effectively, this is a little emulation of a sandbox that you would get if you spun up a new company within business Central. So there’s a few different parts here. And I’m not sure I’ve seen a whole lot of people explain to users what the different components are. So hopefully, this little tour will be a value to people to show them later. But we have a variety of different things that are going on inside of this UI.
We’ve obviously got this little demo tour, I do recommend it it’s starting to get pretty good. We saw the seeds of this a couple versions ago. And this will… Oh okay. Well at the moment in the demonstration version of it I’ve got now they just direct me to my First off, learn. So I guess that’s not particularly great right this moment.
So let’s talk about this when you are on this page right here, we are looking at the very first page. And for a lot of people, they’ll call this home. The technical term for what we’re looking at here is a roll center.
And the idea behind this is in a company, you perform some sort of role, you’re a salesperson, you’re a warehouse person, and the system should adapt to your needs. And I think that’s a good concept. These roles were all built out of modeling common needs from a variety of different customer environments.
And what we are looking at here, if you go to the top menu in this upper right corner, this little cog wheel up here, let’s zoom on and on that, we can see that we’ve got some options under this menu, and one of our options is going to be my settings. Now under that little cog wheel in my settings, when we pop this open, one of the very first settings that we have here is what role you’re working with. And we’re working with a role called business manager.
So the idea behind this role is that you theoretically are in charge of this company. And there are lots of different things that you need to see and have insight into. Okay, well, that’s cool.
So let’s look at some of the different pieces that this business manager might need to jump into, we can quickly jump off into customers, and vendors and items, and bank accounts, all all good things, for sure. And we can quickly create new sales and purchase documents, we can run some reports, and we can see some activities, these little key figures here. And we can see some ongoing documents. Okay. Now, we can also seen some system administrative things, user tasks, and some email statuses. And there are also some pieces around here and timesheets, in case people are using time entry systems. Plus, we can see some insights into different pieces.
Now, at the moment, this is a brand new sandbox environment. So there’s very little information in this company. If we go to the chart of accounts, we will see this list of GL accounts, aka the chart of accounts. I’m going to explain a lot of these pieces as we go. So for those of you who are not familiar with some of the core accounting, which believe it or not, that includes a lot of developers, as much as we do encourage the idea behind developer should know how to use the system and know the basics of the system.
It’s easy enough to be like well, I learned it 10 years ago, and I haven’t needed this knowledge since so a lot of developers haven’t spent much time in here, because the core financial part of the system works well. With that aside, so the list of GL accounts here, we can see that all of these have no balance whatsoever. And if you’re setting up a brand new company for the first time, that’ll be the case for you as well. So it makes sense. But it’s not going to help us a whole lot in our demonstration world.
One of the things that Microsoft gives us that is very, very useful. And just to clarify what I did there, in the upper right corner here, we’ve got a little magnifying glass, and that is the Tell Me feature. It is Alt Q or I believe command Q, there’s a bunch of shortcuts. And there’s a great video on that, that Eric uploaded the other day. But Alt Q on Windows machines will pop this little tell me right open and it says Tell me what you want to do, which is effectively search for functionality. Much pretty good stuff.
So in my case, I am searching on the word companies here in this tell me what you want me to do. And I’ll see that I get a few different pieces I get, you know a section called goto pages and tasks. And I also get a section called documentation that will jump me into the docs for the company’s term. And last at the bottom, it will give you the option to explore pages and reports which lets you kind of poke around in the system when something doesn’t come up and you’re expecting something to in my case, I’m going to go to companies.
Now “what the heck is companies” this does not mean customers – this means of financial, legally separate entities that are within your system in the business central system Every company is a discrete piece of data. So all the financials, all the inventory, all of these different parts are separated by walls. Now, users, people who are going to be using the system can be constrained to use only specific companies, or they can work across multiple different entities. So companies are a great way of being able to have legal, fiscally different entities within your organization separated properly for easy accounting, but allow your staff to work with those different companies easily as needed.
So we got as brand new start, we got a Cronus, international company and a My Company, which neither of these are going to have what we need. So one of the things that you can do, and while you can do this in a production database, I wouldn’t encourage it. But you can do this in Sandbox environments as well as we can create a new company.
And if we skip over the first page of the wizard… let me know if any of you out there ever have found that there is useful information on the first page of a wizard.
So what it’s asking for is what is the name of the company and we’ll do Cronus and this is going to be worldwide data, it’s their base template for building all the different versions that are in use around the world. When we’re creating a new company, we can choose what sort of data do we want to use to get started. And typically, when I’m creating a new company for customers, I will do create new with no data whatsoever, because the production setup data only. This will create what we were just looking at here in Cronus International, it has a bunch of GL accounts in the chart of accounts, but there’s no transactions against them. However, that chart of accounts may make no sense for your fiscal region, your business turn of accounts, follow general accounting principles. But they are fairly unique in a lot of ways, with the exception of some countries that have legally required chart of accounts. So that’s extra fun. As you potentially work with customers around the world, you’ll find there’s lots of different techniques, sometimes legally required, there are some times lots of different things. So we are going to set up this option here the evaluation sample data.
So this includes the Cronus, company sample data and setup data. And this includes sample invoices and ledger entries. So that way, you’re able to run some of the different charts and things. And if we wanted to manage the users, we could do that. But I am going to next next next for finish, and this will begin to spin up a new company. And this will run under the hood in just a moment, setting up all of the different data, it’s going to create lots of customers for us lots of invoices, and all those different parts. So that’s all well and good. And we’ll see how long that takes it tends to take a few minutes.
So while we’re doing this, the next section of things that we’re going to chat about, if you didn’t know, I have written a book that covers a lot of these topics. So there we go. And what it tells you when this little process completes is that the company has been created, but we’re still setting it up for you, this may take a few minutes. So take a short break. I’m not sure why they say up to 10 minutes. So we’ll see. In a few minutes, this will get a setup status in this list of companies, the setup status will say completed when that job is all done.
So for those of you who are wanting to have for those of you who are wanting to have a version of this guide in a written form, this is stuff that’s covered in the free downloadable version of your first 20 hours of Business Central. If we jump down here, we can see that there is a GET FREE eBook, First Chapter, go ahead and grab that. That is free for anyone. And that covers a lot of these UI pieces that we’re going to be going over today.
So while that spins up in the background, let’s talk about some of those different UI pieces. Where we were we were talking about the role center. So let’s look at, well, what are the different ones? We talked about that this is the business manager role center. And that’s fine. And all that’s well and good. So what else do we got in here. So we have some different role centers for different roles. There are a lot of administrative or testing ones in here. So for example, company hub, test roll center, the administration of users, user groups, and permissions, these are all kind of more administrative ones. And then at the let’s see, in the more user oriented side, we have the accountant, the business manager, we have a sales order processor, we have a sales and relationship manager. And I’m jumping around a little bit. But we also have a service manager for people are using the service experience, it’s a little less common as a use. Same for manufacturing manager, there are absolutely companies using those different pieces. But it is a smaller subset. There’s also a role in here called Project Manager, which is a bit bold, the the jobs functionality of system is not project management, it’s project accounting, which is slightly different, you’re not going to get a nice waterfall out of the system. And we also have inventory manager. And then we’ve got a couple of little funky roles called shipping and receiving warehouse management system warehouse worker warehouse management system. And these are earned to indicate that unlike the inventory manager role, those two are more focused on the warehousing components of the system. And we’ll definitely talk a lot more about that in our inventory episode. So yeah, and then we have a little tiny role called team member. And that is meant for people who are just going to be looking at information and potentially entering time.
So one of the things that gets a little lost in implementations that I’ve seen is that these are okay, but you’ll notice that there’s lots of roles that you might expect to find in a business that aren’t really addressed by some of these core roles. For example, you’re in charge of purchasing – what what role do you give a purchase manager here. So the idea behind these is, this is commonly one of the areas where partners will need to work with your company to help you make rolls, that makes sense for your business. Because these are a foundational set of experiences for a given set of users. So let’s hop over to service order processor to see kind of the difference. We just click OK to select the sales order processor role and OK to close my settings. And it’ll refresh in our home.
This role center screen now gets a little bit different. Across our top we have now sales orders items customers, we have some things about item and sales journals, cash receipt journals and transfers, we can easily jump off to in this action section to creating sales documents and running some sales reports. And our activity section down here is more sales focused.
So the business manager role is a more generic oversight management sort of role, where we have to jump into all the different parts. And so you’ll see that many of the parts that we’re seeing here, also in the business manager role. The… The challenge here is, like I said, if you’re now saying well, what about my purchase manager, well, then they’re probably going to need the business manager role out of the box. And you’re going to need to work with them to build a rule center that makes more sense.
Everyone’s got different things that they need to keep an eye on in their company, the most critical pieces of information. And you know, in bizspeak parlance, for those of you not familiar with it, lots of them love to have KPIs – key performance indicators. And the idea behind this role center is that you should expose as many of those business KPIs for people as you possibly can.
So okay, all right. Well, there is not really a way that as an end user, you can say, well, you know, at my company, I want my purchasing guy and my warehousing, you know, my inventory manager, those are combined role. I would like him to see KPIs for both – for those things, well partner can help you make those things. Or if you do some development work inside of your company, they can, you can do some of those things. But there is no configuration components inside of the system that let you remodel this space at this time. So, okay.
Last but not least, let’s talk a few of the other UI basics. And then we’re gonna hop over and chat for about 15 about some of the basics of development like, Okay, well, if someone does say that, they want to hide a KPI here, you know, what can you do? What are your options.
So, last piece of UI to talk about is some of the different screens, which if we look in the item list, we get in the sandbox and demonstration world. First of all, we get learning tips that pop up in the corner down here. And theoretically, when you click through these take tour buttons, it will indicate different parts of the UI, this is a still a relatively new ish feature. So the the tours are very low light. And in trying to be non intrusive, while still providing some UI basics. If you are very much familiar with the company, and you don’t want those little things to pop up, or you’re just the sort of person who won’t read tips, that’s okay. Back in our my settings where we chose the role selection, there is a little toggle called Teaching Tips. And if we turn that off, then we don’t get those little messages.
So now, if we look at the list of items here, this is I’m not sure why the demonstration environment is so enamored with this particular tile layout. This is obviously, okay, if it makes sense for your company to have visual pictures to pick items from cool. However, most companies I know will then come up here to this upper right section of this area here.
For those of you who did not know, the very top section of the menu for the company, so below the business central bar, where we did the gears and everything like that. The section here is the navigation bar. And this has navigation options. So because we’ve got the sales order processor role, we have sales, purchasing, inventory, and posted documents. And if you are paying close attention before, then you saw that the business manager role has a different set of options in the navigation bar. Separately below the navigation bar, we have the action bar. And this has filter controls here on the very left hand side. So for example, in the item list, it defaults, the item drop down to filter on all. And then typically we get some different management options like search if we want to create new or delete existing objects, and then we get lots of related info.
So at the very right side of the space called the action bar, we get some UI controls that let you do a few different things. For starters, the very first one here is this little icon on our left, this is the share button. That lets us click on that and potentially share information to other places front right from Business Central. They’re pretty proud of how that’s now working with teams. For example, we have the ability to display the filter panel as our next component. Right. On here, we have the View Control Panel, which we’re going to dive into in just a moment as our third option. The fourth option here is the fact box toggle. This little blue eye indicator indicates that we have turned on this fact box section which if you have never heard the term fact box before Business Central loves them. And the idea is the right hand side of the screen here shows you extra information about the thing that you’ve currently got selected in the left hand side of the screen. We’re going to dive into that in just a second. And then additionally, there’s an expand control as the fifth button in this section of the action bar. and that makes the window take up as much room as it can.
And the last but not least, this sixth option in the action bar is a little bookmark option. And many people surprisingly, don’t know about the little bookmark option. What this does, is back here on the roll center, the action bar in your roll center is where those bookmarks land. So if there’s, for example, a, you’re often needing to create a new vendor as a salesperson, because after all, we’re looking at the salesperson role. We can search for the vendors list and say, you know, this vendors list is something that I’m going to need on a regular basis. So I will up here, click Add this bookmark to my role center. And I will notice that irritatingly sometimes the buttons that I was indicating in the action bar will be in slightly different places depending on how the UI presents, but the icons are the same. So if I click on this bookmark a little flag here, it tells you specifically this bookmark was added to the navigation menu on your role center. And an extra caution, which I appreciate them being thorough about here. Note that the bookmark refers only to this page. So you know, if you’ve got 50,000 items, when you click a bookmark, you’re not bookmarking that item, you’re bookmarking the item list. So if we come back here, we now see in our navigation area, here, we have added the vendors to our list of different options. So that’s pretty nice.
Now, with all that said, first of all, let’s go to our button number three, this view layout options. And you can see in the drop down here, we get the ability to choose different layouts for a list we are choosing. At the moment, we have selected the tall tiles. And there’s also the tiles option, tiles option is what you will see if you’re using a mobile device, for example, you’re using the Business Central app on your phone, that sort of thing, we are going to want to see the list. And now we can see that this is for those of you who are used to older versions of Business Central slash nav, this is much more familiar to you. And as we can see, we have a list of different columns and rows of items. And we still have on the right hand side our little fact boxes. And we can see on the bottom, we can scroll off to the right to look at some extra columns if we wanted to. And yeah, so there’s a few different parts to this that are good to know about. So let’s talk about it. I am still having my morning tea. So hopefully it’s not too raucous. They say start before you’re ready, and well, I did.
So here. If we’re looking at say, for example, this Paris guest chair. When we clicked on that, you’ll notice that the right hand side of the screen the fact box over here, updated. And now we can see that this information is about item number. And you’ll notice that throughout the system number is the N O dot abbreviation, you’ll notice that the item number has changed. And now all of this information about cost like 9750 here 9750. Here, it reflects the information about that particular item. So fact boxes are a way of seeing extra info that maybe isn’t on the screen.
So if we can kind of zoom out on here, we can see that there’s not any real inventory of any of these items. And that’s because we’re still looking at our setup data only. So let’s go look at our demonstration company which should be all done. Let’s check Cronus W1 setup status completed. So in our companies list, we’re ready to go to change companies, we go back to the gear menu, under my settings, just like we selected a different role, we can choose a different company. And if we select our current SW one that we just picked. And I’ll refresh for a moment, and then we’ll be looking at the item list for our demonstration company.
And so now we can see here we’ve got our 1896 dash s Athens desk, we can see that this has an inventory of four. And we can see some extra information about that as we look through this fact box anywhere on the UI that is slightly and this is a user experience challenge in my opinion, you’ll notice that all of the item numbers, the very first column in the list, as well as a variety of other columns are a different color. There’s no visual indicator that those are specifically clickable elements. But they’re meant to indicate by being a different color. These are clickable hyperlink type things that will do something when you click on them. So if you are relying on being able to see the colors, I do think that that’s a challenge. I can appreciate the fact that not every clickable element is underlined as a hyperlink until you mouse over it. But sometimes it creates some interesting user experiences here. And you’ll notice too, that some elements now have little dotted lines under them to indicate that they’re a different kind of clickable.
So what the heck is going on with all this stuff? These are these are clickable elements. What does this do? Well, if we look at the vendor number column that has the dotted line under link, when we click on that, it gives us a little preview that tiles view to let us know more information about that vendor number. So even though it just says vendor number 30,000, because it has that little underline data, the dashed underline, when we click on it, we’ll get a little pop up to indicate that this is the vendor information, like I just need to know is vendor 30,000 graphic designers do it sure is well. And if we click on the More color oriented links, like for example, here are number, this will open up more information as a separate page. So there’s a little bit of a difference in the UI. And the same is true for say, for example, our inventory five when I click on that, it’s opening a new page with extra info to find out more.
So there’s basically different layers of how much does the system give you based on what those little elements are. When we are looking at that vendor number, underline with the dashes and things like that, when we click on it, you’ll notice that the name of the vendor is one of these blue disc like colored links. And that means that that will be a clickable that you can click on and find out more information.
So here I can now jump off to the vendor card. I find it very funny that all the customers and vendors have a picture of an individual person, they did not spend the time to mock up some logos. Anyway, so when we clicked on the item number column, you’ll notice that it opened up this page, which is a card type view. So here we have an item card. And this is theoretically the editable version of the item. So if we wanted to change the description, this is where we would change it. If we wanted to change that it is blocked for sales or purchasing this is where we would change these things. So cards are typically where you will find a lot of the editability of the system. And we also get some actions in the action bar that relate to this entity. Anytime we’re looking at something in the system, I will often refer to it as an entity item, because it’s just a technical term. But when we’re looking at this, we can also see that we’ve got fact boxes on this card.
Now if we go back to our role center, and we do a sales order, we get the same sort of list view. And we can click on the sales order number column, and we can open that up. And we’ll see instead, what is referred to as a document view. So this looks a little bit like a card like the item card does. In that we’ve got the General section up top has a bunch of editable fields as little individual pieces. But then we’ve also got this little line section in the middle, where we can potentially enter all of the sales order lines and some of the different information that pertain to the lines of this order. So the idea is pretty cool. And this template will be throughout the system. We can see we’ve also got fact box for the sales order off to the right with lots of clickable elements or find out more. Okay, well, that covers one round of basics. We probably have at least three or four more different basics to do on some of the user experience side of things. But we will We’ll take that on another day.
So for those of you who are keen to find out more about the development experience, well, let’s take a few minutes to talk about what do you need, at the very minimum you’re going to need to have, let’s close this up here, you’re going to need Visual Studio code, that is the user environment under which you do development work for Business Central. And we’re going to talk a little bit more about the architecture of developing for Business Central in the next episode, but you’re going to need some tools to get started.
And this is a quick tour of those and how we understand the basics using them. So Visual Studio code is a very first thing you need to download. The other thing that you will need to have if you haven’t installed it already, is in the extensions section of Visual Studio code here. If we zoom on in the option here for extensions in your left hand, little document, you you need the Al language extension, using the Al language extension that is official from Microsoft, I’m running version nine here, which is for the release coming out next week. But you’ll find on the works on the public space that this is I think, like 8.4, or something like that. And this enables Visual Studio code to know how to work with a language.
So the very first thing that people will often do to get started with developing a new extension is the Al language provides a command called Al go, which if you do on your keyboard f1 in Visual Studio code, it opens up a drop down menu, so and we can just type al go, and you’ll see it pops a little option list to let you know that that is the command. If you don’t see that, then it’s because you do not have the Al language extension. Or if you’ve just installed the Al language extension, close Visual Studio code and reopen it. It’s a good thing to do. So when you change your extensions of Visual Studio code.
So we’ll say go and I am going to make our first code extension. You need to have a Where are you putting it? And when you’re building code for Business Central, you have to target a specific version. Which version of Business Central are you targeting?
One of the things that does confuse rookie developers is that here you see a list of version numbers on the left hand side. This is the version of the development experience, not the version number of business Central. So for example, B C spring 18 release, I believe is B C 14. And you’ll notice that the Microsoft official list of business central versions refers to them by their official name, not their internal version numbers. This drives me bonkers. I mean, come on. How hard would it be to say do this means version tool when the of the platform. So here, I’m going to be choosing my platform version nine, which aligns with 2022 release one, wave one, which is Business Central version 20. And we’ll talk about what all that means. One of the daft things of Visual Studio code these days, because code can potentially execute programs on your behalf. You have to say whether or not you trust them. This makes great sense. However, we just made this folder so yeah, I trust them.
Okay, so it now is turning along in the background creating some files and folders for us. If you’re developing against the cloud environments, then you choose your cloud sandbox. I am developing against a local little server called your your own server.
For my sanity sake, I named it BC servers so that I can use these shortcuts. So in my Docker world, and it is absolutely fine that this is showing my keystrokes on screen. I’m using just the Docker standard stuff and So the very first time that you run, that you run the Al go Command, it wants to create a file for you automatically called Launch dot JSON. This is in a folder called VS code, because launch dot JSON is telling VS code, how to connect to and talk to your business central server. This launch dot JSON contains configurations, which is, as you can guess it based on the fact that is a dot JSON name is a load a JSON object. And if we see here, we have the name of the server. And this is just the name of the configuration. So that way, you can select it usefully inside of Visual Studio code.
When this configuration runs, what type of request is it, it’s a launch request. And in my case, I’m working with an on prem environment type on a server named BC server with an instance which we’ll get into an administrative episode, what is an instance, the default in a Docker environment is BC. And I’m using user password. And there’s a few other bits and pieces that we will go into more depth on.
But this allowed the Visual Studio Code al extension, this AL language tool, to understand how to reach out to my business central server and do something called download symbols. And what that did was it created a folder called .alpackages. And in here are these .app files. The .app files are the actual business application files of Business Central system and system app are around the technology itself. I forget exactly what’s in the app extension. Let’s see. But base app contains the actual business application.
So when we were looking at customers, I can see here that this is table, and it has an ID of 18. And it’s named customer, I am able to browse this dot app file because I have a separate extension inside of Visual Studio code that lets me look at the contents of a dot app file. By default, if you have a brand new Visual Studio Code environment and you click a dot app file, it will not have this functionality. We are definitely going to chat with about, you know, what sort of extensions should you be using in Visual Studio code. But that’s for another episode.
So the other things that it creates is not only the launch JSON, but it also creates an important JSON called app dot JSON. And this contains all of the, for those of you who development with other systems, this is basically your manifest, this defines for this given extension that we’re making for visual business studio, Business Central in Visual Studio Code, what are we gonna name it? What is the version number about it, lots of these pieces are displayed inside of the UI. And we also have some technical info. So we can look through here and see that this for example that we’re making it is targeting an application version of 20. Okay, sounds fine. So if I were to get a new customer that is running BC, 15, or BC version 17, this extension would not work for them, we need to build extensions to target a particular level or higher. So that can produce some interesting challenges if you’re making reusable code for lots of different environments. So something to be aware of.
In the cloud world, clients are typically only stratified between two major versions. So 20 is coming next week. And so everyone right now is effectively on 19. And then there’ll be a period where there’s going to be a bit of a mix between 19 and 20. So you do need to develop to support multiple versions. So for our publisher, let’s go ahead and change this. This will be JDBC Podcast. I’m not going to put the slash in there just in case. slashes are a weird symbol. It is going to create some file names. So you know, I don’t want to slash breaking things. Okay, and it took The name of the extension from the name of the folder that I popped it into, will clean that up and rename it to our first code. Okay. So what does this do?
Well, anytime you do an AL Go, it always creates the app dot JSON, for particular set of ranges, and it creates this little hello world. And the hello world is just a very standard practice, in the development space of somewhere in the system, it should pop a message that says, Hello World. Okay. Well, let’s look at this one is a page extension. So it’s going to modify an existing page inside of Business Central. And we are going to have an episode of talking object basics. This is going to modify the customer list. And what it’s doing inside of this page extension is it is going to respond to a trigger, which has a particular kind of event run by the system itself. That when we do on open page, which you know, we get some help about, if we do a mouse over there, yeah, if we do a mouse over, we can see that when the page is initialized and run, this trigger will then run.
So what it’s telling us by reading all these different bits and pieces is that when we open the customer list, and after the page is opened, something that we put in here will happen. In our case, we’re using a command called message, which just pops text up to the user, it is going to pop this little app published hello world message. It is using single quotes inside of the parentheses here to indicate that this is a hard coded piece of text. If we tried to use backticks, or double quotes, it would blow up they won’t know what we’re doing. A common experience of things that will go a little awry. And we’ve had some fun chats about this in the community is I, for example, just created this very first thing, and I’ve hooked it all up and did everything right.
But I’m also getting error messages down here in this panel. If you don’t have this window open, it is just under the View menu, we have a view problems. We can see that it’s telling us in the app JSON, that it couldn’t find the package cache in .alpackages. And it’s also therefore telling us that here in Hello world, it doesn’t even know what page customer list is. Well, if we open .alpackages, we looked at that it had those what’s going on? Well, just the daft thing isn’t processing that the Al packages has been populated. So what do you do when this comes up? What do you do when you get weird problems that are happening? Well, you could just close and reopen Visual Studio code that would fix it. But if you go to f1, or CTRL SHIFT p for the people who maybe have that bound to something else, that is also up under the are what are is this, I forget the command palette, there it is up under the View menu, very top option is View command palette. One of your options that I use all the time is a command called reload window. So you’ll see it if you do reload. And it is this developer reload window not to be confused with reload web use reload window that effectively reboots the Visual Studio Code instance you’re working on says try again. So it’ll take just a second or so to load everything up. And there we go.
Now, for those of you who are trying to reproduce this after the fact or follow along or whatever have you, there are lots of pieces that are going to be in my Visual Studio Code environment that you’re not going to have just yet. For example, I’ve got these little indicators up here about like running tests and things like that. You are not going to have exactly those. There are some extensions in Visual Studio code that modify how Visual Studio code represents these different files. You’ll also not have exactly the same icons I do same sort of thing. I’ve modified my Visual Studio code and environment so So, but we no longer have any problems. Okay? Oh, that’s cool. It’s nice.
So if I wanted to see this Hello World pop up in the system, as long as I’ve got my launch JSON pointing to a functioning server. For those of you who are working against a sandbox environment, let me show you what the config file looks like on the cloud sandbox. So if I create a new configuration in the list here, in my launch JSON, I can see that a cloud sandbox development environment looks a bit more like this, in that we say the environment type is sandbox, you would specify your environment name. So for example, maybe you’ve created a sandbox that is called your name. So someone knows who it is, you would populate that in the string here. Curiously, this little template does not include the any tenant ID or specific info like that. But when we tried to push this code into an environment, it would ask us to log in. And based on our login, it would then look for those environment types. So good stuff to know. But we’re gonna just skip over that for now.
And we’ll make sure, for those of you who are watching super carefully and wondering some Visual Studio Code basics, when you’ve got a file open, and you’ve actually made a change, the place where the little X shows up in the tabs, turns into a solid.to indicate that there is an unsaved change in this file. And you’ll notice too, that in the open editors, it’ll tell you how many unsaved files you have. So little Visual Studio Code pieces. And when I hit Ctrl S, it will save this file. And you can also do a CTRL Ctrl K, and then hit S to Save All. So Right?
Well we want to do is we want to publish and we’re going to publish without debugging. I did f1 to open my command palette, and you’ll see that there is an Al publish without debugging. And they’ll publish with debugging, and Al debug without publishing. And a few other options to boot. Most of the time for throughout this series until we do a debugging episode we’re going to be doing either publish with or without debugging. And what this is going to do is it will take all of the Al files that are these little bits of text, and it’s going to compile them into one of these dot app files. And then it will in our environment. We have here in Business Central via tell me in the extension search, which I’m going to add that to my bookmarks, because we’re going to use that a lot to series. In our extension management, we have a list of all the extensions that are installed. And most of them and when you first start out are going to be coming from Microsoft. And we can see that all of them here are from Microsoft, Microsoft is doing exactly what we do, which is building extensions off of the base product. So we have the base application here. I don’t know why it just scrolled, we have the base application here. And then we potentially have different bits and pieces that provide different functionality. And this allows them to expand an adjust to those pieces over time.
So when we hit the publish, this will add our first code via the JV BC podcast. It’ll add that to our list of extensions. So let’s do it once published without debugging, which you’ll notice that anytime you do f1 And do the command search palette, it will show you in your current configuration, what are the shortcut keys. So I could just do Ctrl f5 to publish without debugging. So that’s cool. And it will show a little bit of info down here in the bottom to say that it is publishing which, excuse me, I’m still doing stuff in the debug console here in Visual Studio Code, it’ll say that it is beginning to publish using which configuration. It’ll tell you what server it’s targeting. It’ll tell you that it is using which username and password. And then it kind of chatters about its progress of doing things and hopefully you’ll have here at the end success the package has been published.
And you’ll notice what it does is it creates a package that is the name of the publisher, underscore the name of the extension underscore and then the version dot dot app. So it creates a dot app file for us. And then that is pushed to the server. So if we come back into the Explorer here in Visual Studio code, you’ll see now that in our folder, we have a JV BC podcasts are first code one Dotto, tada. And with the extension, let’s, uh, see what’s inside this file, we can see that it only contains a page extension that extends the customer list. A fun nerdy fact, because we need to have some nerdy facts on this, right? If we go to this in File Explorer, we can actually pop this open. And this is effectively a zip file. So have some fun poking around in that and being able to see some of the mechanics of what gets created in that.
But going back on track, we can see that a few different things happened when it popped open the browser. First of all, when we did publish, it launched a browser tab for us, which that came from the launch dot JSON. It has in here a setting called Launch browser. And that is set to true. Well, okay, so as soon as it completed publishing, it launched a new browser instance for us, which in our case, will open up in a new tab because we’re using edge. And because we launched that browser is saying that when we start up the instance, we want to go to this object type a page. And we want to go to this object ID 22. And here in there, you’re going to need to learn some the IDs of pages, it’s pretty handy to just know them. i You don’t have to memorize them, but it can help a bunch. Where did that 22 come from? Well, if we look at the customer list here, and we right click on that, and we do go to definition, which as you can see is keyboard shortcut, F 12. We go here, we can see right up at the very top, this is an object type of page, and it is object ID 22. So that’s where they got that from.
So we did a launch job to launch a new browser, we opened up a page and we opened up page 22. And as you recall, what we did is we modified the customer list with a page extension, that when the unopened page trigger runs, we want to pop a message published. So here in our new tab, it dropped us to the customer list. And the moment the customer list opened, it popped this information message app published HelloWorld. So there we go, we have our extension. And if we look at our extension management window, we come on down here in our section. Oh, here is our first code from the JDBC podcast. And if we, again, anytime it’s a little odd of a color, there’s a high probability it’s clickable. So if we click on this isn’t installed, yes, we can see here is where some of that stuff shows up of the name, the description, and a few other odds and ends. So we’re going to get into a lot of these different pieces later. Because there’s lots of juicy info about some of the mechanics of the system here. But I think that’s about all the time we have.
Hopefully, this has been somewhat valuable, somewhat intro, somewhat interesting. And, yeah, so when you go out there in the world, trying to think a little bit about what people are going through, you know, everyone’s fighting invisible battles, you don’t know the person who’s across the desk from you, what they might be experiencing, fighting with, check in with them, you’re, you’re helping them change their world. So it is what it is worth knowing. Are you okay? And if you come from that place, and you genuinely mean it, you’re gonna have a much happier experience of working together, you potentially will expose fears and be able to address them in your project plans and your documentation. You will expose pain, which maybe are some real challenges that will reveal something that was important that was missed somewhere along the way. So the more that you connect, the more value you can bring in response. So make those connections have a little bit of empathy for you. It was Tuesday. For me, this was Sunday. But yeah, all right.
Well, hopefully everyone found some value out of different pieces today in different levels. It’s gonna be all over the place for a little while, and we’ll see how this can be going. I’m told that you need to do about 30 of these before you feel like you know what you’re doing. So we’ll see in six months. Take care of one and see you next week.
Transcribed by https://otter.ai