In this conversation, Brad and Kristoffer talk with Patrick Schiefer about Business Central design patterns and interfacing with Business Central. Patrick discusses using Azure Relay to access local hardware and Power Automate to access local file systems without writing code. Patrick highlights the power of the Business Central API and the ability to interface with other services. He explains using JavaScript add-ins on Business Central pages to interact with local hardware or services. The conversation provides valuable insights into integrating Business Central with legacy systems.
Connect with Patrick on LinkedIn (https://www.linkedin.com/in/patrickgrabensteiner/)
#MSDyn365BC #BusinessCentral #BC #DynamicsCorner
Follow Kris and Brad for more content:
https://matalino.io/bio
https://bprendergast.bio.link/
00:00 - Business Central Development Design Patterns
14:01 - Local Hardware in Business Central
22:50 - Azure File Service Integration
28:49 - Innovative Solutions for Legacy Interfaces
WEBVTT
00:00:00.860 --> 00:00:07.174
Welcome everyone to another episode of Dynamics Corner, the podcast where we dive deep into all things Microsoft Dynamics.
00:00:07.174 --> 00:00:17.753
Whether you're a seasoned expert or just starting your journey into the world of Dynamics 365, this is your place to gain insights, learn new tricks and make development fun again.
00:00:17.753 --> 00:00:19.225
I'm your co-host, chris.
00:00:19.981 --> 00:00:20.742
And this is Brad.
00:00:20.742 --> 00:00:24.753
This episode was recorded on July 9th 2024.
00:00:24.753 --> 00:00:28.541
This is Brad.
00:00:28.541 --> 00:00:30.085
This episode was recorded on July 9th 2024.
00:00:30.146 --> 00:00:31.149
Chris, chris, chris the heat is on, and so are we.
00:00:31.149 --> 00:00:48.829
This episode was exciting because it goes back to my roots with development, and we learned some neat tips and tricks, new tools, yes, and even new thoughts on ways to approach implementations, to think not with how things were, but how things can be.
00:00:48.829 --> 00:00:51.988
And I learned some cool development tricks.
00:00:51.988 --> 00:00:56.021
And now I want to make a game in Business Central With us today.
00:00:56.021 --> 00:00:59.122
We had the opportunity to speak with Patrick Schaefer of Cosmo Consult.
00:00:59.122 --> 00:01:10.311
Patrick, how are you doing?
00:01:11.373 --> 00:01:11.993
I'm fine and you.
00:01:12.694 --> 00:01:13.734
Good, good, good.
00:01:13.734 --> 00:01:14.316
Welcome back.
00:01:14.316 --> 00:01:15.777
Been looking forward to talk with you again.
00:01:15.777 --> 00:01:32.028
It's been a short time, but after having such great information last time, I've been looking forward to talking to you this time about another important topic that you talked about that I saw that you spoke about at Tech Days, which was an interesting topic.
00:01:32.028 --> 00:01:36.325
But before we get into the conversation, could you tell everyone a little bit about yourself?
00:01:37.009 --> 00:01:39.317
yeah, I'm Patrick Schieffer.
00:01:39.317 --> 00:01:41.823
I'm from Austria, working for Cosmo Consult.
00:01:41.823 --> 00:01:53.750
I'm'm actually MVP for two months now A goal for me for the last couple of years, I guess.
00:01:56.561 --> 00:01:57.626
Congratulations on that.
00:01:57.626 --> 00:01:59.134
By the way, it's a big accomplishment.
00:01:59.134 --> 00:02:00.284
Yeah, congrats.
00:02:02.721 --> 00:02:09.534
Yeah, and on Easy Tech Days, as you already mentioned, I talked a little bit about some stuff I'm working on.
00:02:09.534 --> 00:02:25.717
I talked basically about nothing is impossible in PC, which means that, in my opinion, you don't have any technical restrictions in Business Central, when you just know how to cope with your problems.
00:02:29.221 --> 00:02:31.128
Anything is possible in Business Central.
00:02:34.789 --> 00:02:37.448
In my opinion, everything is possible.
00:02:37.448 --> 00:02:41.646
At my workshop I've done a workshop and a session.
00:02:41.646 --> 00:02:45.282
Actually, I found one problem which I didn't find a solution, of which I didn't find a nice solution.
00:02:45.282 --> 00:02:45.597
I found a dirty solution.
00:02:45.597 --> 00:02:45.663
A session.
00:02:45.663 --> 00:02:47.626
Actually, I found one problem which I didn't find a solution, of which I didn't find a nice solution.
00:02:47.626 --> 00:02:49.687
I found a dirty solution for it.
00:02:49.687 --> 00:03:13.352
But for most problems you will find a solution in Business Central and it's just about knowing how you can work around some things, because we got this universal code thing and we got the migration to cloud and so on, and, yeah, we have many, many restrictions when we think about cloud.
00:03:15.401 --> 00:03:16.265
Oh, yes, there is.
00:03:16.265 --> 00:03:33.925
Well, I mean, there are some challenges that you'd mentioned when you're working in the cloud environment that I know we encounter and I encounter quite often, you know, around file management, around sometimes, information or interface exchanges or the like as well, which can make things difficult.
00:03:33.925 --> 00:03:38.640
But to go back to your point, I've always said that too, that I don't think there's any problem.
00:03:38.640 --> 00:03:49.888
You know other than you know life and, in a lot of cases, medical needs, but there isn't anything that you can't solve if you have the you know proper amount of time and the proper amount of money.
00:03:49.888 --> 00:03:59.129
Usually you can fix most problems or find solutions for most problems Time and money If you spend a little time or a lot of time and a lot of money on it too.
00:03:59.129 --> 00:04:01.891
So, no, no, it's.
00:04:01.891 --> 00:04:19.557
It's an interesting conversation and I'd like to talk with you about some of the Business Central design patterns that you talk about, as far as, as you'd mentioned, being able to solve problems and come across solutions within Business Central, understanding how to code and understanding how it works.
00:04:30.540 --> 00:04:32.225
So yeah, so basically I've showed some different design patterns for solving problems.
00:04:32.225 --> 00:04:45.394
So my main problem, which I was talking about, was accessing local hardware, because still in SaaS we have still many, many situations where we have to access local hardware.
00:04:45.394 --> 00:04:58.704
So we at Cosmo Consult, for example, have one customer which has a smart card secured system and we need to access this smart card from Business Central, and the customer is fully in SaaS.
00:04:58.704 --> 00:05:11.189
So we needed to find a solution and what we did is that we used the Asia Relay service from Microsoft, which is a quite cool technology.
00:05:11.189 --> 00:05:26.192
It's just a technology which is in between Business Central and some local service and you will connect from Business Central to this Asia Relay and then you will have a local service.
00:05:26.192 --> 00:05:36.372
We use the shop for our service, but you can use any, any programming language you want and then we can like from locals service also to this Asia relay.
00:05:37.403 --> 00:05:38.699
And why are these Asia relay?
00:05:38.699 --> 00:05:45.017
You can and synchronously talk to your local hardware and it's very easy.
00:05:45.017 --> 00:05:48.391
And you already mentioned costs at the beginning.
00:05:48.391 --> 00:05:50.418
It's also very cheap to use it.
00:05:50.418 --> 00:06:02.927
So it costs I think it's about nine euro a month to use this Asia service and I guess in most of the business central projects nine euro a month, about nine nine dollars for them.
00:06:02.927 --> 00:06:21.108
For the american um, your uh audience, um, I guess nine dollars are quite nothing inside of a business centric program project because projects are huge and you pay a lot of money for licensing and so on.
00:06:22.009 --> 00:06:29.704
Well, I've seen some solutions that cost quite a bit more than nine euro a month if you lay it all out.
00:06:29.704 --> 00:06:52.625
But you hit on one of the big struggles that I've also encountered with Business Central, and that is in the old Cal days of the non-online environments, you had access to the local system, whether it be the file shares, whether it be the printers, whether it be, you know, any other type of hardware device, and that's one of the big struggles that a lot of implementations are having now.
00:06:52.625 --> 00:06:58.826
Even with printing, you know, with the ability to, you know, automatically print.
00:06:58.826 --> 00:07:02.723
I know you can do PDFs and stuff with the service to do it, and even file transfers.
00:07:03.064 --> 00:07:06.593
And you had mentioned using Azure Relay, which is a great service.
00:07:06.593 --> 00:07:24.771
But that is something important to think about is no longer thinking about the constraints of Business Central, to start to realize now that there's other services in the technology stack that we have access to to solve the problem.
00:07:24.771 --> 00:07:38.187
You know it's strange because if you've been working with Business Central or Navision or Nav, you're accustomed to solving a problem a certain way and this forces us to think differently but to use different tools to solve the problem.
00:07:38.187 --> 00:07:41.180
So that is a great solution.
00:07:41.180 --> 00:07:53.726
So in that case you had created a service, but there are also other services available that somebody could communicate with to interact with this Azure Relay Service and the local system.
00:07:54.442 --> 00:08:02.708
For the Azure Relay Service itself, there is an open source tool from Microsoft which is in the PC Tech Samples.
00:08:02.708 --> 00:08:09.324
It's a GitHub repository and you can use it out of the box.
00:08:09.324 --> 00:08:22.586
There's already some examples, or even for file system and so on, something like that and you can use it out of the box and change just the local service to fit your needs and everything works fine.
00:08:22.586 --> 00:08:28.223
So for our first project we have done with the Asia Relay we use this open source tool.
00:08:28.223 --> 00:08:40.563
Now we wrote our own because our projects are getting bigger and we have more things we want to access, so we wrote our own service.
00:08:40.563 --> 00:08:43.850
But basically you can use this open source service.
00:08:43.850 --> 00:09:01.860
It will work for most of the scenarios and, as you already said, um, when you work for a novitiain of business central for years, you often just think about business central and many, many developers forget about that.
00:09:01.860 --> 00:09:04.889
We are living in a huge ecosystem from microsoft.
00:09:04.889 --> 00:09:08.000
We can use many, many services.
00:09:08.301 --> 00:09:23.429
I also talked about Power Automate, for example, in my session at PC Tech Days, because Power Automate has a lot of connectors for file systems, so you can also use Power Automate to access your local file system.
00:09:23.450 --> 00:09:31.924
So you can also use Power Automate to access your local file system Even without using of any Azure resource or something like that.
00:09:31.945 --> 00:09:34.831
You can really work with your plain local file system.
00:09:34.831 --> 00:09:44.009
You don't just have to install the, as it goes, on-prem data gateway from Microsoft and then you can use the local file system.
00:09:44.009 --> 00:10:06.729
And I'm working on a proof of concept at the moment, because I didn't try it out now, but I'm working on a proof of concept where R Automate is reading a local file system and sending data via the PC connector to Business Central, so you can handle file interfaces without even writing one line of code.
00:10:06.729 --> 00:10:13.232
And that's, in my opinion, is very amazing because Business Central is getting very simple.
00:10:13.232 --> 00:10:29.850
You don't have any additional code for your file system and so on, and you don't have to deal with upgrades, because in SaaS we get these upgrades every six months and so on, and we don't have to deal with any breaking changes because the connector and power automate stays the same.
00:10:29.850 --> 00:10:40.051
So, in my opinion, if it worked like I mentioned, then it would be a very amazing solution to many, many problems.
00:10:41.462 --> 00:11:05.535
I think that would be an amazing solution because I know that I deal with a lot of individuals that have file transfers and in trying to work with everyone to get their head around the technology is not the same, that you have to come up with different solutions and to be able to use that different, like you said, the ecosystem to connect it together and you don't have to write any code is a definite saving.
00:11:06.400 --> 00:11:08.929
We did have a conversation with someone with that.
00:11:08.929 --> 00:11:23.288
You know, when you're designing a solution in Business Central, you really have to have at least an understanding of what other tool options you have out there, not just from an AL standpoint right.
00:11:23.288 --> 00:11:34.206
So you got to learn a little bit more about power automate, what it can do to give you that same result but in a different tool.
00:11:37.437 --> 00:11:42.447
Yeah, and what I always talking about is the Business Central API.
00:11:42.447 --> 00:11:47.216
So Business Central API is very mighty, Even the standard API.
00:11:47.216 --> 00:12:05.365
If you don't use any custom APIs, you can do very much things and you can write any external service which is accessing business-centric and because the versioning of the API you don't have any breaking changes anyway.
00:12:07.892 --> 00:12:21.754
so many ways how you can achieve something in business-centric you say the word breaking changes and I honest I have to admit I cringe every time I hear that because that's over the past several years.
00:12:21.894 --> 00:12:50.232
I hear breaking change, breaking change and it just for some reason it triggers me to hear that you can eliminate or reduce the amount within Business Central and the ability to interface to other services to be able to interact with Business Central.
00:12:50.232 --> 00:12:56.221
It is powerful and they do quite a bit more.
00:12:56.221 --> 00:13:10.105
You can ensure that, whomever is dealing with the contract for the service, you don't have any issues as these updates come out or these changes come out, that it's going to work the same for you and then you can work through the changes.
00:13:10.105 --> 00:13:32.427
So, when talking about the Business Central design patterns and some of these legacy interfaces and thinking differently and implementing Business Central online versus Microsoft Dynamics Nav on-prem or Business Central on-prem, what are some of the other points or challenges that you've had for interfacing information with Business Central?
00:13:32.427 --> 00:13:35.504
I really like the Azure Relay, by the way.
00:13:35.504 --> 00:13:38.504
I have to investigate that a little further.
00:13:39.754 --> 00:14:01.341
Yeah, the Azure Relay is a very huge solution where you can achieve almost everything, but it has one disadvantage it costs nine euros per listener, which means every computer where you want to access hardware you have to install this service, and every service costs nine euros.
00:14:01.341 --> 00:14:05.336
And you also have to cope a little bit with connection and so on.
00:14:05.336 --> 00:14:30.009
And one very common use case in Austria what we have is we have cache drawers, for example, which are connected to the local machine and not to any server or something like that, and you really have to access the hardware of your local machine, which is connected maybe to the web client but not to your server or something like that.
00:14:30.009 --> 00:14:39.059
Or even you are maybe just connected with a SaaS environment via the Internet and maybe you don't have any server anymore, you just have your client.
00:14:39.059 --> 00:14:48.206
And, of course, when you think about cash draws and point of sales, you also may have more than one point of sale in your stores.
00:14:48.947 --> 00:15:15.745
So you have to deal with these different connections, and what I do for that is that I use a JavaScript add-in, because Business Central has the possibility to execute native JavaScript code inside of the web client and the advantage of JavaScript is that it's fully executed on the client side, so you can do whatever you want on the client side.
00:15:15.745 --> 00:15:21.809
And again, what I have done is that I brought a C sharp service as small.
00:15:21.809 --> 00:15:28.126
Again, writing a C sharp web API is a very easy job.
00:15:28.126 --> 00:16:05.964
You can start with web APIs within minutes and you have set up a simple API just by one PowerShell command and it starts up with a studio code and you have the API running and then, from the JavaScript, I just access this web API which is running on the local host, and because the web client and the C-sharp service are both running on the same machine, I can just access it via local host and can so access really my local client hardware and can do whatever I want on the local machine.
00:16:09.216 --> 00:16:14.628
I guess I can do everything which I have done back in the days in Navision with it.
00:16:14.628 --> 00:16:30.202
There's only one problem with it you need an active page for it, because web client add-ins only support add-in pages, because it's JavaScript code and you need some kind of UI.
00:16:30.202 --> 00:16:43.267
But using this solution, you have also the possibility to access your local client hardware and you have the advantage advantage it doesn't cost anything.
00:16:43.267 --> 00:17:03.428
You don't need any additional service in asia or something like that, and when you just use localhost, you don't have to think about much about security because you don't exposing any port or something like that to the internet or you don't have a connection to the internet anyway from your service.
00:17:03.428 --> 00:17:09.462
Your service is just available via the local machine, so it's quite secure.
00:17:09.462 --> 00:17:18.067
Of course, there are always some ways how to hack something, but it's quite secure compared to other solutions.
00:17:19.576 --> 00:17:21.624
Well, there's always a security concern.
00:17:21.624 --> 00:17:23.119
I don't, you know it's.
00:17:23.119 --> 00:17:25.601
You can always take the safest route.
00:17:25.601 --> 00:17:31.102
If somebody's you know in your house, sitting at your computer, you know there's only so much you can do at some point.
00:17:31.102 --> 00:17:33.383
It's doing the best you can to minimize it.
00:17:33.383 --> 00:17:34.641
So what you had mentioned here.
00:17:34.641 --> 00:17:46.884
Another option is you could write JavaScript in Business Central pages that can interact with the local hardware or local service on the computer to perform a function.
00:17:46.884 --> 00:17:53.127
Not many may know that you can create JavaScript or execute JavaScript within a page.
00:17:53.127 --> 00:17:54.922
How does one do that?
00:17:54.922 --> 00:17:56.923
Do you do some sort of control add-in?
00:17:56.923 --> 00:18:01.946
Do you have to load something special for that, or how do you do that?
00:18:03.875 --> 00:18:04.317
Basically.
00:18:04.317 --> 00:18:05.422
I have an example here.
00:18:06.796 --> 00:18:07.641
That is amazing.
00:18:07.641 --> 00:18:09.442
So you created a control add-in.
00:18:09.442 --> 00:18:16.744
The control add-in has JavaScript for the startup and for the scripting, and then you have a method, procedure, function.
00:18:16.994 --> 00:18:33.625
I hear everybody call them different names these days but you have a procedure, a callback procedure, that you can execute within code, which then has the URL to your local servers, which you created, and then you can communicate and send messages back and forth, where they must have had an API, as you had mentioned, to open the cache drawer.
00:18:33.625 --> 00:18:37.181
So even that local API is not something you would have to write if you had another.
00:18:37.181 --> 00:18:49.740
In this case, if you had a company that managed the hardware for the cash drawer or for another device for that pos system I'm assuming it's a pos system with a cash drawer you could just communicate with their service.
00:18:49.740 --> 00:18:58.902
Hey, chris, see how easy that is 10 lines of code done but it's.
00:18:59.021 --> 00:19:16.961
This is the type of solution, these are the types of solutions that are important to think of when you have an online environment, so you get the advantages of the online system, with the upgrade staying current, but then also still the what some would call the limitation of interacting with your local hardware.
00:19:16.961 --> 00:19:24.066
You can, you know, solve that through a number of means, as we're talking about One, you could use JavaScript.
00:19:24.066 --> 00:19:26.061
Two, you could use Azure services.
00:19:26.061 --> 00:19:28.060
And what else could we use?
00:19:28.060 --> 00:19:30.498
There always has to be a number three.
00:19:32.103 --> 00:19:48.625
Yeah, of course the number three for hardware or let's say it's hardware is to just have an API on the client side and call it directly via Business Central.
00:19:48.625 --> 00:19:59.683
Didn't mention this method at first because it's kind of SaaS ready but it's better for on-prem and we don't want to use on-prem anymore.
00:19:59.683 --> 00:20:02.482
That's why I didn't mention it as the first option.
00:20:02.482 --> 00:20:19.255
It's the easiest option from these three options because you only have to write your AL code and you only have to write your C-sharp code and you don't need an additional Azure service.
00:20:19.255 --> 00:20:22.345
You don't need JavaScript knowledge or something like that.
00:20:22.345 --> 00:20:23.375
Um.
00:20:23.375 --> 00:20:34.507
But therefore, uh, the business central server needs access to your API and, um, if you're on prem, that might not be a problem.
00:20:34.855 --> 00:20:37.044
You also can use local hosts or something like that.
00:20:37.044 --> 00:20:53.819
But if you're in in South, you saas, you might expose a port to the internet, so you open up something from your local network to the internet and when you do that you have to think about security very much.
00:20:53.819 --> 00:20:57.127
You have to think about authentication and authorization and so on.
00:20:57.127 --> 00:21:04.308
Of course you can include o out in in Sharp, but it makes your solution more complicated.
00:21:04.308 --> 00:21:11.384
That's why it's not the preferred solution for me when you're in SaaS, but if you're on-premise, it's the easiest solution.
00:21:11.384 --> 00:21:29.714
But what we actually do is that, at least for our product, we use both versions and we implement an AL interface where we can switch between these solutions.
00:21:29.714 --> 00:21:34.787
So we have both ways implemented even in the same C-sharp service.
00:21:34.787 --> 00:21:48.028
So we have one C-sharp service which is allowing us to use the Azure Relay and the API, and inside of Business Central we can switch this implementations.
00:21:48.028 --> 00:21:54.301
So it's also easy to switch between on-premise and SaaS if you're migrating.
00:21:58.180 --> 00:21:59.044
I like that design.
00:21:59.044 --> 00:22:23.104
So you have an interface that can accommodate both solutions, so you can architect the solution appropriately, whether it be an on-premise solution or an online solution, which allows you the opportunity, as you had mentioned, to always consider the security considerations or additional checks that you need to put in place to ensure that the system that you put together is both secure and sound, which is good.
00:22:23.104 --> 00:22:26.233
Do you have any other tips and tricks for us here?
00:22:26.314 --> 00:22:34.970
this is like I'm excited now I've learned some great things today yeah, I talked also about a file system.
00:22:35.696 --> 00:22:49.689
Of course you can use these three options which I showed you, which I talked about, for connecting to the file system also, but for the file system there are already some other solutions which are better.
00:22:49.689 --> 00:22:56.657
So you have some built-in possibilities in Business Central you have, for example, the blobs inside of the database.
00:22:56.657 --> 00:22:58.303
But I, in my personal opinion, would not use blobs inside of the database.
00:22:58.303 --> 00:23:10.796
But I, in my personal opinion, would not use blobs inside of that database because it will will blow up your database somewhere when you store files inside there.
00:23:10.796 --> 00:23:23.613
But there are also other options, like we have a one drive integration, we have asia blob storage integration and we have an asia file share integration and we have an Azure File Share integration.
00:23:32.115 --> 00:23:38.784
And the Azure File Share is the one which we are using the most because it acts like a normal local drive in Windows.
00:23:38.784 --> 00:23:56.688
So if you have a file service or you have a legacy system which is writing files somewhere, you can use the Asia FileShare, connect it to your Windows computer and it acts like a normal local drive and the legacy system will not even recognize that it is now writing to Asia.
00:23:56.688 --> 00:24:04.278
It just writes the path and then from the AEL perspective, it's also very easy.
00:24:04.278 --> 00:24:15.443
There's this new Asia service client which was introduced, I guess, in BC23, or maybe it was also BC24.
00:24:15.443 --> 00:24:17.090
I'm not sure in which version it was introduced.
00:24:17.090 --> 00:24:18.840
I have that same problem.
00:24:19.355 --> 00:24:20.278
My mind is a blur.
00:24:20.278 --> 00:24:20.901
I forget which.
00:24:20.901 --> 00:24:27.922
They come out with so many features at each year that I forget or each wave, or sometimes even in the middle of the wave.
00:24:27.922 --> 00:24:30.723
I guess it's part of the wave still, but I forget where it came from.
00:24:31.996 --> 00:24:36.403
Yeah, I think it was actually an open-source contribution that someone edited.
00:24:36.403 --> 00:24:52.662
Now we have the possibility to read and write files to Azure file services directly from Business Central and we can use it like we've done the CodeUnit 119 earlier.
00:24:52.662 --> 00:25:15.510
We can use now that the Azure file service client and whatever we want with files, and even we just get out streams of it, so we can use this stream for XML ports, excel buffer, xml buffer and so on, for every table and every system we used earlier.
00:25:15.510 --> 00:25:24.662
Enough we now can use this Azure File Service client and, of course, you have to change a little bit of your code, but not that much.
00:25:24.662 --> 00:25:39.904
So the upgrade from local files to Asia file services it's not very complicated and, yeah, every time we talk about Asia, someone will say that what's the cost for Asia?
00:25:41.275 --> 00:25:48.387
I was just about to ask you that, and Asia File Service is a very cheap solution.
00:25:48.515 --> 00:25:58.000
It costs a few euros a month when you stay under 10 gigabytes or something like that, so it's very cheap.
00:25:58.000 --> 00:26:00.834
And as long as you don't store massive data like that, so it's very cheap.
00:26:00.834 --> 00:26:11.622
And as long as you don't store massive data on there, you will not have any cost problems with the Azure file services.
00:26:14.182 --> 00:26:16.300
See, chris, these are all great solutions to think of.
00:26:16.300 --> 00:26:18.277
And again, some of these monthly charges.
00:26:18.277 --> 00:26:21.138
I listen and I hear the same conversations about cost.
00:26:21.138 --> 00:26:25.011
It's important to be conscientious of the cost.
00:26:25.011 --> 00:26:30.824
If you have a subscription, it is difficult sometimes to calculate what that cost would be.
00:26:30.824 --> 00:26:35.559
But I've also been in cases where someone will not want to spend.
00:26:35.559 --> 00:26:44.526
You know, go back to the reference of nine euros per month for a solution for a subscription, but they'll of nine euros per month for a solution for a subscription, but they'll spend 3000 euros to write a solution.
00:26:44.526 --> 00:26:46.348
That's complicated, that's you know.
00:26:46.348 --> 00:26:52.236
So it's, yeah, it costs more.
00:26:52.256 --> 00:27:03.647
You know, in the long term it's cheaper to use some of these services because you can get to use them quicker and they stay within the technology stack and you don't have to also repay to upgrade it in a sense.
00:27:03.647 --> 00:27:05.843
I mean you may have to change some of your code as technology changes.
00:27:05.843 --> 00:27:10.080
I'm not saying it's a cross, but some of the solutions I've come across, so it's important to keep those.
00:27:10.080 --> 00:27:16.020
With the Azure File Service, you had mentioned that, the JavaScript.
00:27:16.020 --> 00:27:17.404
You needed a UI page.
00:27:17.404 --> 00:27:42.436
With the Azure File Service, I know a lot of implementations have imports and exports where they have to deal with files, whether it's bank-type files, that they have to get with FTP and they can't use the API methods With the Azure File Services, can you use those with scheduled jobs, like with a job scheduler, to pull and import them so that you're not required to use a UI or a user?
00:27:43.159 --> 00:27:46.526
Yeah, it's a normal code unit.
00:27:46.526 --> 00:27:47.768
You can use it from everywhere.
00:27:47.768 --> 00:27:51.219
So you can also use it in job queues and so on.
00:27:51.219 --> 00:28:00.050
Well, I personally try to force people to.
00:28:00.050 --> 00:28:08.201
I personally try to force people to not use JobQueue for file services.
00:28:08.201 --> 00:28:14.040
I rather go for any trigger-based system, like I've mentioned already, power Automate at the beginning.
00:28:14.040 --> 00:28:26.431
So in my opinion, it's always better to have a trigger-based solution which is reacting on changes in files and not pauling from time to time.
00:28:26.431 --> 00:28:30.499
But it's just as you like.
00:28:30.499 --> 00:28:36.750
I don't think there are any performance problems when you use job queues or something like that.
00:28:36.750 --> 00:28:41.946
So you have to do very much job que cues, I guess, to get the performance problem.
00:28:41.946 --> 00:28:47.803
But yeah, it's just a personal opinion to have it more trigger-based.
00:28:49.296 --> 00:29:01.319
I like the triggers as well, and so it's nice to know that you can work with those, because that way, you're not checking, you're waiting, in a sense, somebody's telling you that something's happening, instead of you having to check to see if it's happened all the time.
00:29:02.516 --> 00:29:07.486
As you've already mentioned, you have customers which are needing FTP or something like that.
00:29:07.486 --> 00:29:15.386
Power Automate also has the triggers for FTP, so you can directly connect to an FTP server and work with that.
00:29:15.386 --> 00:29:23.210
So, basically, power Automate is a very powerful tool when talking about files.
00:29:25.318 --> 00:29:26.403
Yeah, it's very flexible.
00:29:29.296 --> 00:29:32.045
Yeah, Chris is going to be the Power Automate person here.
00:29:34.036 --> 00:29:34.537
There's so many.
00:29:34.537 --> 00:29:39.365
I mean just hearing from different people with different use cases of Power Automate.
00:29:39.365 --> 00:29:41.068
It's impressive.
00:29:42.056 --> 00:29:44.624
It's almost like a separate application.
00:29:44.624 --> 00:29:46.176
Wait it is, wait it is.
00:29:52.335 --> 00:29:58.585
I really like the approach of keeping code outside of Business Central or even of having no code anyway, because then you don't have any problems with upgrades.
00:29:59.355 --> 00:30:05.779
Yes, and that allows the customers to take advantage of the application and also some of the.
00:30:05.779 --> 00:30:15.067
I think you can create a better solution if you can put together the pieces properly and you have less problems, I think.
00:30:15.067 --> 00:30:17.722
So you have an easier implementation.
00:30:17.722 --> 00:30:32.488
In a sense, the customer is more satisfied because it's not typically a long and costly solution and you don't have to tell them, oh, you can't upgrade, or they don't get those notifications that you can't upgrade or they have broken processes when they do go through an upgrade.
00:30:32.488 --> 00:30:37.241
So it is nice to be able to use the existing pieces and put it all together.
00:30:37.241 --> 00:30:38.885
That's what I look at it now as is.
00:30:38.885 --> 00:30:46.119
You know, when we first started out, you used to have to create and develop a lot to get things to work within the vision right or microsoft dynamics.
00:30:46.119 --> 00:31:02.997
Now, you know, as time's progressed, we've been able to now more and more just take pieces and plug them in and put them together, almost like you have a laptop you plug it into the wall to get electricity, you have something else, you plug it in and everything kind of works and communicates together.
00:31:02.997 --> 00:31:05.079
Chris, you like that analogy there?
00:31:05.079 --> 00:31:07.282
Yeah, it's very good.
00:31:08.806 --> 00:31:16.027
Okay, uh, do you have any other quick business central design pattern legacy interface tips for us.
00:31:16.027 --> 00:31:17.472
I'm writing all these down.
00:31:17.472 --> 00:31:18.657
I'm gonna go practice with all of these.
00:31:18.657 --> 00:31:23.883
I'm going to make a game in business central with javascript that's my goal now, like tic-tac-toe or something.
00:31:23.883 --> 00:31:26.472
I did see someone had tetris the other day.
00:31:26.472 --> 00:31:35.862
I was reading something, I forget which post or who I saw with that, but I want to put a game like one of the games from the seventies, like space invade, or eighties and space invaders or something.
00:31:36.243 --> 00:31:41.644
Yeah, like a break, break time from BC or you're on your break games.
00:31:42.145 --> 00:31:43.067
Yeah, you can play a game.
00:31:43.067 --> 00:31:45.099
Then make it so you can hide it.
00:31:45.099 --> 00:31:54.641
So if somebody comes by, they see your screen and you're back on bc easter egg.
00:31:54.641 --> 00:31:55.142
Yes, there you go.
00:31:55.222 --> 00:31:58.571
We have to do that, that's, that's a mission of mine now, and I'll have to credit patrick for telling me about that.
00:31:58.571 --> 00:31:59.134
So basically that one.
00:31:59.134 --> 00:32:02.618
Where are the solutions which I showed on on bc tech days?
00:32:02.618 --> 00:32:07.385
So I don't have anything, uh, prepared now anymore.
00:32:07.405 --> 00:32:11.250
Okay, I'm always looking for more, always looking for more.
00:32:11.250 --> 00:32:16.626
Have you done anything with printers, local printers?
00:32:16.626 --> 00:32:18.073
That's a big, big challenge.
00:32:18.093 --> 00:32:22.863
That's actually the most used case at Cosmo Consult.
00:32:22.863 --> 00:32:26.461
We even put this together in an AppSource model.
00:32:26.461 --> 00:32:29.000
So we have put it on the AppSource using the Azure Relay.
00:32:29.000 --> 00:32:30.594
So we have put it on the EPSOS using the Asia Relay.
00:32:30.594 --> 00:32:45.398
So we have our own solution with printers on EPSOS using the Asia Relay, and now they are also working the colleagues on making it possible without Asia Relay for on-premise systems.
00:32:45.398 --> 00:32:50.987
So, yeah, we use this technology for printing.
00:32:52.635 --> 00:32:53.480
That is it is.
00:32:53.480 --> 00:32:53.655
It's.
00:32:53.655 --> 00:33:07.782
One of the challenges I come across weekly is not necessarily printing like a user's printing, but they want to print things to specific printers automatically, like years ago when you had the default printer or even if you wanted to schedule printers.
00:33:07.782 --> 00:33:12.994
I don't understand why people print stuff still these days, but you know it's one of those.
00:33:13.134 --> 00:33:15.500
It's still one of our most problems.
00:33:15.500 --> 00:33:24.948
Even when you have warehouses or something like that, you want to print out that warehouse document on the printer which you are working on.
00:33:24.948 --> 00:33:39.121
Even when you think about the universal print which is Microsoft advertising and implementing in Business Central, it's nice, it works, but you pay per print job.
00:33:39.121 --> 00:33:49.602
When you think about warehouses, you have maybe thousands of print jobs, but they are all just one page.
00:33:49.602 --> 00:33:56.028
You don't pay per page, you pay per print shop and you will have problems with costs.
00:33:56.655 --> 00:34:11.083
It gets very expensive if you, if you have a lot of print shops that is one of the things universal print and anytime you mention it, that's what it always comes up to is the cost, like you had mentioned, because it quickly.
00:34:11.083 --> 00:34:25.144
It's unfortunate because it is a great tool, I guess you could say, to allow you to print directly from Business Central, but it really is just cost prohibitive to anybody that would use it with any volume.
00:34:25.144 --> 00:34:39.342
If you have to print one document a month, maybe it'd be okay, but, like you said, if you start working with warehouses where they may have to print out warehouse documents, shipping documents, packing documents, it can get costly rather quickly.
00:34:39.342 --> 00:34:47.965
But that is still the number one use case I see is printing and I think, chris, how many times do we hear that every time?
00:34:48.255 --> 00:34:48.536
It's okay.
00:34:48.637 --> 00:34:51.097
I need to print to this printer that's sitting right next to me.
00:34:52.101 --> 00:35:01.782
Automatically Yep you post something and you want to have your posted warehouse document printed out in front of you.
00:35:04.556 --> 00:35:05.018
That's good.
00:35:05.018 --> 00:35:06.478
It's nice to know that you have a solution.
00:35:06.478 --> 00:35:08.936
I know there's a number of solutions available that are for that and they all have their different options.
00:35:08.936 --> 00:35:09.340
It's nice to know that you have a solution.
00:35:09.340 --> 00:35:15.184
I know there's a number of solutions available for that and they all have their different options, but it's nice to know that you have one at Cosmo Consult as well.
00:35:16.896 --> 00:35:19.983
One funny and easy solution which a colleague of mine had.
00:35:19.983 --> 00:35:37.302
They switched over to a non-paper warehouse and the warehouse people just had problems because they don't want to go to the screen every time and refresh and check if there is a new warehouse document.
00:35:37.302 --> 00:35:38.402
A new goes to Ikea.
00:35:38.402 --> 00:36:20.909
That's a furniture shop, and he bought a lamp with Wi-Fi which can change the color and this lamp already has included an API and what he has done is he just called this API via the on-premise server and every time they have a new order now the lamp starts to flickering in red.
00:36:20.909 --> 00:36:38.324
So the solution was about 10 euros for the lamp and maybe an hour of implementing and they have an easy to use solution now how they see if something new is here to work on.
00:36:38.324 --> 00:36:40.449
That is fine.
00:36:40.829 --> 00:36:50.389
I call that genius project yeah, genius, because you had a problem and you, your colleague, thought of practical ways, efficient ways.
00:36:50.389 --> 00:36:50.949
That's the key.
00:36:50.949 --> 00:37:02.347
You know, you don't need something fancy, you don't need something costly, something so simple as a light that just signify or signals that you have a document, so that they can visually see it.
00:37:02.807 --> 00:37:07.382
See I, like that idea fun projects we're gonna have to spend some time together.
00:37:07.402 --> 00:37:09.226
Patrick, do you want to make a game with me in Business Central?
00:37:09.226 --> 00:37:18.523
Of course, every time We'll have to make a game together, we'll put it out there, we'll make a game.
00:37:18.523 --> 00:37:24.976
We'll make something up, something fun, like trying to match documents or something I don't know.
00:37:24.976 --> 00:37:28.960
Well, patrick, thank you again for taking the time to speak with us.
00:37:28.960 --> 00:37:30.822
We do appreciate you taking the time.
00:37:30.822 --> 00:37:32.244
Time truly is the currency of life.
00:37:32.244 --> 00:37:33.686
Once you spend it, you can't get it back.
00:37:33.686 --> 00:37:37.331
So anyone who spends time speaking with us, we're greatly appreciative of.
00:37:37.331 --> 00:37:53.896
If anyone else would like to, if anyone would like to learn more about some of the sessions that you present or some of the other tips and tricks that you told us today about connecting with legacy interfaces through business central, what is the best way to get in contact with you?
00:37:54.336 --> 00:38:13.380
um, best way to get in contact with me is via twitter or x or linkedin, or I'm also blogging about everything I I show and to also find all my solutions which I have on my sessions and on GitHub.
00:38:13.380 --> 00:38:21.721
So if you go to GitHub, slash Patrick Schiever, you will find all my solutions which I've done in the last couple of years.
00:38:21.721 --> 00:38:33.715
Or you just go to my blog, patrickschiefercom, you will also find some of the solutions.
00:38:34.516 --> 00:38:43.679
I'm definitely going to check out your github listing also and we're going to put the links to your twitter and x.
00:38:43.679 --> 00:38:45.786
Will it ever be called x?
00:38:45.786 --> 00:38:47.481
Will it ever be called x?
00:38:47.481 --> 00:38:49.699
Just be twitter for everybody forever.
00:38:51.204 --> 00:38:52.978
It's going to be Twitter, if you've been there before.
00:38:53.119 --> 00:38:54.164
Yeah, next generation.
00:38:54.164 --> 00:38:56.978
You're right, Maybe they'll call it X, but they hear Twitter.
00:38:57.039 --> 00:38:58.003
enough they may.
00:38:58.003 --> 00:38:59.139
I don't know.
00:38:59.139 --> 00:39:04.023
Maybe he's trying to go the way of Microsoft and changing the name every year just to throw everybody off.
00:39:04.023 --> 00:39:05.360
But again, thank you, Patrick.
00:39:05.360 --> 00:39:09.405
We'll put links to your LinkedIn and Twitter profile in the show notes.
00:39:09.405 --> 00:39:11.742
We look forward to talking with you soon.
00:39:13.815 --> 00:39:16.682
Thank you for inviting me have a great day.
00:39:16.702 --> 00:39:17.244
That's great.
00:39:17.244 --> 00:39:18.447
Thank you, Tata.
00:39:18.447 --> 00:39:18.867
Thank you.
00:39:19.795 --> 00:39:26.943
Thank you, Chris, for your time for another episode of In the Dynamics Corner Chair and thank you to our guests for participating.
00:39:27.255 --> 00:39:28.362
Thank you, brad, for your time.
00:39:28.362 --> 00:39:29.728
It is a wonderful episode of Dynamics Corner Chair and thank you to our guests for participating.
00:39:29.728 --> 00:39:29.969
Thank you, brad, for your time.
00:39:29.969 --> 00:39:32.224
It is a wonderful episode of Dynamics Corner Chair.
00:39:32.224 --> 00:39:35.710
I would also like to thank our guests for joining us.
00:39:35.710 --> 00:39:53.222
Thank you for all of our listeners tuning in as, and you can interact with them via Twitter D-V-L-P-R-L-I-F-E.
00:39:53.222 --> 00:40:06.606
You can also find me at Mattalinoio, m-a-t-a-l-i-n-o, dot I-O, and my Twitter handle is Mattalino16.
00:40:06.606 --> 00:40:10.304
And you can see those links down below in their show notes.
00:40:10.304 --> 00:40:11.675
Again, thank you everyone.
00:40:11.675 --> 00:40:13.215
Thank you and take care.
00:40:13.215 --> 00:40:15.175
You, you, you, you, you, you, you.