Quantcast
Channel: Dynamics 365 Business Central/NAV User Group
Viewing all 11285 articles
Browse latest View live

Blog Post: Dynamics 365 Business Central: AppSource demystified

$
0
0
When you develop solutions for Dynamics 365 Business Central , you have essentially two roads for your extensions: Release it as a per-tenant extension (PTE) Release it on AppSource I’ve talked a lot in the past months about per-tenant extensions, their release process (pros and cons) and the pains connected to it. Per-tenant extensions should be seen as “customizations” developed directly for a customer tenant and that will not be widely distributed. You (as a partner) are totally responsible to publish, upgrade and maintain your PTE for your customer, there’s no an approval process by Microsoft for publishing these extensions and you’re forced to used the 50000..99999 object range. Extensions released on AppSource are different. If you’re an ISV and you want to distribute your solution to a global market, AppSource is the right choice. AppSource extensions are under Microsoft’s supervision. To release an extension on AppSource, you’ve to start an approval process as in the following schema: An app is available on AppSource only after the approval process accepted by Microsoft. I receive often a lot of questions related to AppSource and how Microsoft manages the extensions on it, so here I want to try clearing some doubts. Here the main point to remember: An extension released on AppSource must have objects with IDs on a reserved range assigned by Microsoft. You can also use your actual CfMD range if you have one. Please compile your extension with AppSourceCop code analyzer activated on Visual Studio Code (this is your first basic step to avoid problems) Marketing material is extremely important for the approval process, please don’t underestimate the marketing requirements. On AppSource, a published extension is actually released as a free extension. There’s no an automatic way to avoid the installation of an extension before having acquired a license for it. You need to handle the protection of your extension with a licensing system that is totally up to you. The suggestion I normally give is to release a “trial” extension with the possibility to activate a full feature extension online (with a custom license key downloaded maybe after a contact with the partner). You cannot know how many customers has downloaded, installed or unistalled your extension directly from AppSource. If you need these informations, you need to implement the “logging” logic by yourself. When an extension is published on AppSource, also the future updates have to go through the validation process . If you have successfully published version 1.0.0.0 of an app, it’s not automatic that version 2.0.0.0 and so on are automatically published as upgrades. The upgrade submission process is as follows: When you have successfully submitted an updated version of your extension, this update becomes the active version of your extension . Every new customer that downloads your extension from AppSource receives the new updated version. Existing customers that are using your extension are actually not automatically updated to the new available version . More in details: When a customer tenant is upgraded to a new major version, it will receive the updated version of your extension When a customer tenant is upgraded to a minor release (cumulative updates and so on), it will not receive the update of your extension. The admin of the customer tenant can uninstall the actual version of the extension and then reinstall it. In this way it will receive the last updated version. In future, it will be released the possibility to auto-upgrade an installed extension and receive notifications for available updates. A common situation I see now with many partners: if you’re planning to release your addon X on AppSource in the future (and so you’re developing your solution with a reserved object IDs range) but actually you’re not ready for that and you need to deploy your actual addon X (maybe ready at 80%) to a customer, you’re forced to renumber the objects with the PTE range. In this case, remember also that: Two extensions on the same tenant cannot have objects with the same IDs and names If in the future you’ll release addon X on AppSource, the customer that now as addon X in the PTE range cannot install the same addon X app from AppSource. In this situation, you need to move customer’s data from the tables of the PTE addon X extension to the tables of the AppSource addon X extension (data upgrade) On AppSource, you cannot have two versions of the same app published . I’ve received requests from many partners that would like to have something like an Essential and a Premium version of an app on AppSource. To have that you can only: Release a single app with a license key that enables functionalities if a Premium license is acquired (recommended solution). License management for your app is totally up to you. Release two different apps (different App ID in app.json). Monetization is up to you . Hoping to have cleared something on your mind…

Blog Post: Programming Microsoft Dynamics 365 Business Central – Sixth Edition

$
0
0
It’s a wrap. After 9 months of work the latest edition of the programming book is finished. This is the sixth edition but the first to be AL only. A very specific choice that I made when I started on the project. And a bit of a gamble since I was unsure how long C/Side would last when we started. When you buy the book you will recognise the script and programming examples. This is unchanged and based on the creativity of Chris Studebaker. Also the wisdom of half a decade worth of programming is untouched. The legacy of Dave Studebaker. However, the book is probably 100 pages thinner than the previous (and last) C/Side version. Yet it contains just as much information. The reason is relatively simple. “We” (as a community) moved to a standardised Code Editor. Because C/Side is very specific the book spent a lot of time explaining it’s quirks which is necessary to get a newbie up to speed. With Visual Studio Code this is no longer required and there are plenty of getting started video’s and blogs. Another thing that changed is the rapid changes that happen in both Visual Studio Code and the AL programming language. One example is a piece of code about changing the dropdown that was removed from the book at first because it was no longer possible. A few months later this was added to AL by Microsoft. For this reason I tried to keep the book as specific to AL as possible. Two other major changes are the move to Word as report editor and the removal of DotNET client add-ins. The previous edition had a special chapter around specifics for RDLC. Since this is unrelated to AL it was removed. This edition covers how to create the Report’s DataSet and how to access that from Microsoft Word. Another element that is removed is DotNET. This was replaced by JavaScript add-ins which is a specific technology for which a lot of information is already available. The basic interface is described on Microsoft Doc’s. The result of the rewrite is a book which is more affordable and focusses on the essence of AL development. (The price went down together with the page count). My hope is that we get more books around specific topics like Luc van Vugt did with Automated Testing. Since we anticipated on the retirement of C/Side the book is future proof. We do not cover how to add your own events to Microsoft’s code. If you want to cover this I recommend the Quick Start Guide from Stefano and Duilio. My next challenges would be to see how much work is involved in upgrading the Application Design book and the Design Patterns. The latter would probably be relatively doable. The Application Design book is a lot more difficult since it is based on doing core code modifications rather than teaching a programming language. I’ve been involved in this book from day one. First as a reviewer, then co-author. The last two editions where updated completely by me while leaving the great work of the Studebakers in tact. Enjoy the book and let’s make AL, in all it’s awkwardness, shine for a new generation of programmers. https://www.packtpub.com/application-development/programming-microsoft-dynamics-365-business-central-sixth-edition I wanted to thank Microsoft for making the AL-Only preview available just when I needed it for the examples in my book. The work would have been a lot harder without that. Also thanks to Michael Nielsen for the AL Converter which was used to convert most of the example code in the book which can be found on GitHub. If you find any errors please do a pull request. https://github.com/markbrummel/Programming-Microsoft-Dynamics-365-Business-Central

Forum Post: RE: reopened delivered(closed) sales order

$
0
0
To be honest, I don't know what is " packing slip " & " posting packing slip step ", but "Inventory pick" and "sales shipment" => it is hard to help you. For standard warehouse functionality we can use "Register"-term => you can use AddOn|Extension. If we use standard functionality ( "Inventory pick" and "sales shipment") you need to correct quantity in the "sales shipment" and ship. for the rest of the goods, you need to create Inventory put-away and register it in the correct bin.

Forum Post: RE: Convert Text value from Unicode (NAV 2018) to ANSI (NAV 2009 R2 Classis Client)

$
0
0
[quote userid="2100" url="~/nav/f/technical/96740/convert-text-value-from-unicode-nav-2018-to-ansi-nav-2009-r2-classis-client/502865"]What is the context of this question? What is it that you are trying to do? Your subject says you want to convert a text from unicode and NAV 2018 TO anse and NAV 2009. Are you trying to downgrade a NAV 2018 installation??[/quote] Hi Erik. Thank you very much for your answer and delayed answer with clarification. I do upgrade from NAV 2009 to NAV 2018 and I do not use any export|import procedure. The source of the issue - I have the report in the NAV 2009 which uses the barcode font. Lest imagine that I need to code string "1116020192EW1000089#30095". When internal "conversion procedure" works in the NAV2009 I receive the string "Ò+0"!|ÍEWÌ* (Í9#3Ì ÈMÓ". But when this procedure works in the NAV 2018 CU11 I'm receiving the "Õ+0"!|ÖEW·* (Ö9#3· ¬Mà" and the result - font prints strange "picture". I'm guessing that the issue may be in the source line coding I investigated several solutions for Font barcode printing from other resources and it do not work also for NAV 2018. P.S. about " I come from a country with three special letters ÆØÅ " - I know that you are from DK

Forum Post: Outlook message not creating in navision 2016

$
0
0
I have use code unit 397 (Mail) to create new message in outlook from navision. it was working in navision 2013 R2, Last month i have updated my navison from 2013r2 to nav 2016 and it is not working

Forum Post: Connect two databases in Microsoft Dynamics NAV 2018.

$
0
0
Hi Team, I was trying to connect two databases together, one of the databases is the Dynamics NAV Database while the 2nd database was created with a table called Attach Document due large volume of attach documents in work place. From the Dynamics NAV Database , Where I have a table contains the following fields; S/N Name Data Type 1 No. Code (10) 2 Employee Name Text (100) 3 Employee Age Code (10) 4 Employee Grade Text (30) 5 Employee Mobile No. Text (30) 6 Created By code (50) 7 Created Date Date From the 2nd Database , where I have a table contains the following fields Document No - Code (20), File File1 File Created By - Code (50) Created Date - Date What i want to is that, when I click attach button from a page in Dynamics NAV Database it should open a connection and allow me to attach the document in the 2nd Database . Regards.

Comment on Welcome to the Microsoft Dynamics C5 2014 users and professionals

$
0
0
Looking forward to the new version although not many details have been told. If you are interested you can learn the details of this software here at college assignments and at this site. I hope that the full details of this version will be displayed soon.

Forum Post: RE: Create a Freight Calculator Page in AL - Dynamics 365 Business Central

$
0
0
Probably not a bad thing to have more information online about AL Programming... I want to thank you very much for all your insight and help... I picked up Programming Microsoft Dynamics 365 Business Central, Sixth Edition by Mark Brummel last night and I'm only in chapter 2 and it starting to get much clearer. It has exactly what I was looking for... I will follow up shortly with my solution. Thanks again. Yann

Forum Post: Set Job Task No. with extension

$
0
0
Hi everyone, I'm finding a problem finding the event where I can set the "job Task No." before the insert of the registry. In a job card, when I'm trying to create a Job Task, I want to create it without setting the Job Task No, which I want to be filled when inserting, adding for example, the date. Which event can I sue fro this purpose? I'm trying to use the events from the "Job Task" table, but I can't find the correct way.... Is possible to develop this with extensions? Thnak you very much

Blog Post: A book and the things unsaid

$
0
0
You might not have noticed anything about it yet, but after 260 hours, spread over 5 months, of designing, coding, writing, and reviewing on my side, my first book , and the first book on test automation for Microsoft Dynamics NAV / Dynamics 365 Business Central has been released last week. FInally, a wish came true, an ambition, started probabably back in 2011 with my series on NAV and Test-Drive Development . Having been a tester in the Global Localization Development team at Microsoft (and having too leave to just when we were getting into test automation) the inner testing fire was lit again by Bas Graaf 's NAV TechDays 2011 presentation High-Quality Test Automation for NAV Applications . And I have kept it glowing, and got it burning more and more over the years past. By blogging, by talking at various conferences, and not the least, by pushing automated testing into the development practice of my main employer, The Learning Network (TLN). Against the flood in the early years, as little to none of us seemed to dare to step into it. Well. except Microsoft, but, yeah, Microsoft, that's not us and they initially did not make it easy for us to get on it. You know, I already launched the idea of a book on test automation to Packt in November 2011, but, sign of the time, it was never picked up. Disappointment? Well, in way, yes, but you know, I still have the portfolio manager among my contacts on LinkedIn. I am not a real hard-hearted guy. I surely do not want to be one. All the years following there wasn't a real change in how automated testing was looked upon. True, it did evolve; maybe I contributed to that. I hope I did, sure. But like many others Packt did not react. Until last summer. Even though I knew I was going to put me up with a hell lot of work, I also knew the tide was the right one: Microsoft enabling us more and more, more people picking up, and not the least AppSource requiring test automation. So I reposed my idea of a book on test automation to Packt and Packt agreed. Yeah, I could have done it on my own, like various others do and to whom I have been looking with all repsect, but I needed others to get those things organized that I would have had a hard time to manage while also focusing on the designing, coding, writing, and reviewing. Being a quality focused person, both with respect to the product and the process, there is a lot of things at Packt I kicked against, but I am sincerely grateful for their "dedication and endurance", as I wrote down in my original acknowledgement, but which did not make it as it was beyond the 450 allowed maximum number of characters. Here starts the part for which I am mainly writing this post, being the... Things left unsaid ...in the book due to protocols at Packt and the scope of the book. Acknowledgements I owe a lot to my two major contacts at Packt: Roshan Kumar (Content Development Editor) and Snehal Dalmet (Technical Editor). I know I haven't made their lives always easy as I had clear ideas on how I wanted to put things down. Both of them have done there utmost best to go with my flow and still justify things within the Packt protocols. Working remotely I did not have the fortune to meet them live , but I recon that some times the go-with-Luc's-flow did make steam escape from their ears. A big bow towards you both, Roshan and Snedal. The proof is in eating the pudding as we say, and this surely applies to the topic of the book. The knowledge that I am sharing with you is based upon a lot of things I learned from others by reading, arguing and listening. But it has matured by having been able to apply it in real live. For that I owe my main employer, TLN , and specifically my team, Team Dynamics : Bert Kootstra, Gert Kleinjan, Jack Reitsema, Marcel Müller, Martijn de Blaauw, René Brummel en Stefan Venhuizen. Another major influence to the book, who als fell of the 450-characters-including-spaces table, is my peer MVP James Crowter . A great, a tall, a knowledgable, and a challenging guy. The guy with whom I did the 2017 NAV TechDays presentation on test automation, in retrospect an important step in cristalyzing my thoughts and ideas that made it to the book. And not the least James the owner and managing director who apparently has the gift to form a great team around himself and invests in them. For the latter he asked me to introduce his whole team to test automation and about a year ago I performed two functional and two technical workshops with them, including James himself (and the other James who was a reviewer and wrote the foreword to the book). It was a great experience with all this dedicated and jolly nice people, and learned me a lot. It also brought me to the from customer wish to test automation concept for a number of presentation and the key part of the book. Topics that did not make the book Approx. 200 pages is a lot of space to fill when you start. A huge fan of Kansas when an adolescent the first line of one of there songs returned in my conscious a zillion times when writing, and still a vast amount of pages to go. Nevertheless the pages got filled and some topics had to be left untouched, among them the following: Using SQL queries when wanting to inspect the data created Making your tests and helper functions extendable Elaborate the TestPage more extensively More on the automation of a test run Let's see if I can find time to get back to so more frequent blogging, or others to step in, like James Pearson did with respect to the last bullet: Testing Microsoft Dynamics 365 Business Central from VS Code . I guess I have said what was left unsaid in the book. I sure hope, when you acquire the book, it helps you get on test automation as we need to, our clients need us to! And even more: I hope you can enjoy it as much as I do.

Blog Post: A book, conferences and workshops

$
0
0
If you read my book and want to confront me live, or too lazy to read it (yet) and want to hear me speaking or teaching, or you did not get to buy the book yet, you will have a number of chances to do so: May 18, 2019, 365 Saturday Amsterdam 2019 , Netherlands I wil present Test Automation for Business Central . May 24, 2019, Days of Knowledge , Odense, Denmark I wil be presenting with Erik Ernst and Palle Arentoft on how to speed up your development including automated testing. June 27/28, 2019, UK Masterclass Test Automation for D365 Business Central , Southampton, UK A two days workshop with a lot of hands-on. And if your interested to join a workshops somewhere else, please let me know. At this very moment I am trying to set up one in France , but my feet, car, the train and/or plane can bring me anywhere.

Forum Post: RE: Set Job Task No. with extension

$
0
0
If I understand you, you want to create a job task record and automatic fill Job task no.? You could use OnBeforeInsertEvent on job task.

Forum Post: RE: Set Job Task No. with extension

$
0
0
Thanks for your answer Lars Sander . That is the first event I tried, but still having the same issue. This is my code: [EventSubscriber(ObjectType::Table, Database::"Job Task", 'OnBeforeInsertEvent', '', true, true)] local procedure setJobTaskNo(VAR Rec: Record "Job Task") begin if Rec."Job Task No." = '' then begin Rec."Job Task No." := 'jobnumber'; Rec.Modify(); end; end; I think that probably is because of using the "Rec". If we are doing it on the "OnBeforeInsertEvent", the Rec isn't created yet, so it seems not to work correctly... Am I right? Or may be I'm coding the development incorrectly? Thanks again, really appreciated

Forum Post: Delete data from custom fields of tables for upgrading

$
0
0
Hello Experts, I have to replace tables in client database for upgrading purpose, but client database have many custom fields in tables and these fields also have data. When i try to replace these objects with standard objects i get error message due to custom fields data. Now I have to delete all custom fields data from tables and than I will able to replace the tables one by one. Is there any possible way I can select all conflicting tables than I select all custom fields after that I delete all data from these custom fields ?

Forum Post: RE: AL0296: The type or method 'Initialize' cannot be used for 'Extension' development.

$
0
0
Thanks Alexander for your response. I will check and update you.

Forum Post: RE: Set Job Task No. with extension

$
0
0
I've simplified the code like this, just to show a messaje int he event: [EventSubscriber(ObjectType::Table, Database::"Job Task", 'OnBeforeInsertEvent', '', true, true)] local procedure setJobTaskNo(VAR Rec: Record "Job Task") begin Message('aitor'); end; But the error notification appears before my message, so, the validation is made before the "OnBeforeInsertEvent"...

Forum Post: RE: Set Job Task No. with extension

$
0
0
Turn on the debugger, where in your code are you getting a error?

Forum Post: RE: Set Job Task No. with extension

$
0
0
My guess is that debugger will not catch this error, since the field "Job Task No." is marked as NotBlank in the table. Server performs this verification before trying to insert the record, so it never comes to the OnBeforeInsert event. I'm not aware of any way to override this property in extensions. Seems the only option is to fill the jon task no. in page triggers - create a page extension and do the trick in OnNewRecord / OnInsertRecord.

Blog Post: Report 795 Adjust Cost - Item Entries performance issues

$
0
0
We have been recently seeing some performance issues with the notorious Adjust Cost - Item Entries batch job. Currently we have a customer who has NAV 2015 with a serial number tracking set to a couple of items, which is normally no issue at all. Upgrade to later version, probably Business Central is already scheduled, but this issue had to be resolved ASAP. The problem is that the customer can have up to 80.000 serial numbers on one batch of arriving items. The items Costing Method is set to Standard to reduce the need for adjustments on item costs. Sometimes the customer anyways wants to assign costs to these items, and that causes records in table 5804 Avg. Cost Adjmt. Entry Point which is the table for Report 795 when it searches for non-applied costs for item entries. Adjust Item Costs batch job is segmented to run one item Product Group at a time. The night only has like 6 or 7 hours efficient time frame for Adjust Item Cost batch job, and now this time has been too short for the job to run. Luckily they have very efficient hardware, SQL has loads of RAM and processors are the best ones I have seen in my NAV career. They also have like 6 load balancing servers for NAV services to even up the load from different stores and integrations. The customer has now millions of entries in table 32 Item Ledger Entry. Also, the customer requires that SQL server is set to "Always Row-Lock". Well, this is not good. Millions of item ledger entries and tens of thousands of ledger entries for one item, and one assignment of item costs. This causes a lot of rowlocks wen you adjust the item costs. We monitored the queries, and found out that after some 10.000 handled item ledger entries the filtering to find the correct Item Ledger entry could take up to 4 seconds, even though the search used optimal key and only one row was returned. The solution was easy enough; Create a scheduled SQL job that turns off the "Always Rowlock" for the duration of the nightly Adjust batch job, and another scheduled SQL job to turn it back on after, say, 5 AM or so. Problem solved!

Forum Post: Why the Invoice discount calculation is not applied on the G/L account on Sales Invoice

$
0
0
I am using Nav 2018 Why the Invoice discount % calculation is not applied on the line with a G/L account on Sales Invoice. It is able to apply for Items. Kindly suggest... Thanks in advance...
Viewing all 11285 articles
Browse latest View live