Description
Efnisyfirlit
- Title Page
- Copyright and Credits
- Mastering Microsoft Dynamics 365 Business Central
- About Packt
- Why subscribe?
- Contributors
- About the authors
- About the contributors
- Packt is searching for authors like you
- Preface
- Who this book is for
- What this book covers
- To get the most out of this book
- Download the example code files
- Download the color images
- Conventions used
- Get in touch
- Reviews
- Section 1: Dynamics 365 Business Central – Platform Overview and the Basics of Modern Development
- Microsoft Dynamics 365 Business Central Overview
- Understanding the customer perspective
- Understanding the partner’s perspective
- An example of Dynamics 365 Business Central Admin Center portal
- Environments
- Notification recipients
- Telemetry
- Reported production outages
- How it works behind the scenes
- Under the skin of Dynamics 365 Business Central
- Regional control planes
- Regional data planes
- Data-tier
- Understanding the future perspective
- Proactive scenarios (Microsoft listens)
- New event requests
- Reactive scenarios (Microsoft acts)
- Summary
- Mastering a Modern Development Environment
- Mastering Visual Studio Code
- Code editor
- Status bar
- View bar
- Sidebar
- EXPLORER (Ctrl + Shift + E)
- SEARCH (Ctrl + Shift + F)
- SOURCE CONTROL (Ctrl + Shift + G)
- DEBUG (Ctrl + Shift + D)
- EXTENSIONS (Ctrl + Shift + X)
- Manage
- Command Palette
- Panels area
- PROBLEMS
- OUTPUT
- DEBUG CONSOLE
- TERMINAL
- Visual Studio Code – the editing features
- Comment lines
- Delimiter matching
- Text selection
- Code block folding
- Multiple cursors (or multi-cursor)
- Mini-map
- Breadcrumbs
- IntelliSense
- Word completion
- The Go To Definition
- Find All References
- Peek Definition
- Renaming symbols
- Understanding the AL Language extension
- AL Language
- launch.json
- app.json
- System and base application
- Platform
- Runtime
- Understanding symbols
- Inside symbols
- Understanding AL Language extension configuration
- Mastering AL Language code snippets
- Summary
- Online and Container-Based Sandboxes
- Creating online sandboxes
- Online sandboxes–pros and cons
- Introducing Docker
- Some base mechanisms when using Docker
- Environment variables
- Volumes
- Networks and ports
- Scenarios where Docker is especially useful for Dynamics 365 Business Central sandboxes
- Locally available environments using pure Docker commands
- Your first container
- Pulling new image versions
- Connecting to an existing SQL Server
- Handling your running containers with Docker cmdlets
- Creating locally available environments using navcontainerhelper
- Installing navcontainerhelper and keeping it updated
- Your first container
- Pulling new image versions
- Using more environment parameters, a volume, and port mapping
- Connecting to an existing SQL Server
- Handling your running containers with NavContainerHelper
- Centrally available on-premise environments
- Containers hosted on Azure VMs
- Choosing the right image
- Modifying scripts inside standard images
- Creating your own images
- Summary
- Section 2: Developing Extensions for Dynamics 365 Business Central
- Extension Development Fundamentals
- Technical requirements
- Basic concepts regarding extensions
- Understanding the basics of the AL Language
- Table definition
- Page object definition
- Table extension definition
- Page extension definition
- Codeunit definition
- Event definitions
- XMLport definition
- Defining query objects
- Extending the options – enums
- Creating a profile object
- Understanding AL project structure best practices
- Naming guidelines and AL object ranges
- Working on AL coding guidelines
- Summary
- Developing a Customized Solution for Dynamics 365 Business Central
- Translating a business case into a real-world extension
- Customer Category implementations
- Tables definition
- Pages definition
- The tableextension definition
- The pageextension definition
- Codeunit definition
- Gift campaign implementations
- Table definition
- Page definition
- Codeunit definition
- Vendor quality implementations
- Table definition
- Page definition
- The pageextension definition
- Codeunit definition
- Creating page views
- Installing and upgrading codeunits
- Understanding a dependent extension
- Summary
- Advanced AL Development
- Understanding immutable keys
- Handling files with AL
- Handling attachments
- Reading and writing text data to and from BLOB fields
- Using XMLports in AL code
- Creating and extending Role Centers
- Customizing the Headline
- Handling XML and JSON files with the AL language
- Consuming web services and APIs from AL
- Publishing Dynamics 365 Business Central objects as web services from AL
- Using Azure Functions to replace .NET code
- Understanding Isolated Storage
- Working with control add-ins
- Creating a timer-based control add-in
- Notifications inside Dynamics 365 Business Central
- Understanding page background tasks
- Summary
- Report Development with AL
- Anatomy of the AL report object
- Tools to use for Word and RDL layouts
- RDL and Word layout features
- Part 1 – Designing the dataset
- Part 2 – Creating a simple RDL layout
- Part 2.1 – Creating the RDL report header
- Part 2.2 – Adding a table control to the RDLC report body
- Part 3 – Understanding grouping
- Part 4 – Building a simple request page
- Part 5 – Adding database images
- Part 6 – Adding a Word layout
- Converting an existing C/AL report into AL
- Feature limitation when developing an RDL or Word layout report
- Understanding report performance considerations
- Summary
- Section 3: Debugging, Testing, and Release Management (DevOps)
- Installing and Upgrading Extensions
- Deploying extensions
- Automatically
- Manually
- Some deployment tips
- Deployment under the hood
- Deploying the main extension
- Deploying a dependent extension
- Deploying a new version of the main extension
- Deploying a new version of the dependent extension
- Summary
- Debugging
- Running in debug mode
- Visual Studio Code debugger sections
- Debugger sidebar
- Variables
- Watch
- Callstack
- Breakpoints
- Debugger toolbar
- Debugging in attach mode
- Non-debuggable items
- Mastering debugger issues
- Understanding code analyzers
- al.codeAnalyzers[]
- al.ruleSetPath
- Understanding Event Recorder
- Summary
- Automated Test Development with AL
- Test automation and testing design principles
- Designing tests with ATDD
- Preparing the environment
- Setting up test development for extensions
- Setting up our Visual Studio Code test project
- Learning about the technique behind test code
- Designing our test scenarios
- Test codeunit and test function – test example 1
- asserterror – test example 2
- Test page – test example 3
- UI handlers – test example 4
- Implementing our test scenarios
- Test codeunit and test function – test example 1
- Create a test codeunit
- Embed the requirement
- Writing the test story
- Constructing the real code
- CreateNonBlockedCustomerCategory
- CreateCustomer
- SetCustomerCategoryOnCustomer
- VerifyCustomerCategoryOnCustomer
- Running the test
- asserterror – test example 2
- Creating a test codeunit
- Embedding the requirement
- Writing the test story
- Constructing the real code
- CreateBlockedCustomerCategory
- VerifyBlockedCategoryErrorThrown
- Running the test
- Testing the test
- Test page – test example 3
- Creating a test codeunit
- Embedding and writing
- Constructing the real code
- CreateNonBlockedDefaultCustomerCategory
- CreateCustomerWithCustomerCategoryNotEqualToDefault
- SelectAssignDefaultCategoryActionOnCustomerCard
- VerifyCustomerHasDefaultCustomerCategory
- Running the test
- More examples for the Customer Category feature
- UI handler – test example 4
- Creating a test codeunit
- Embedding and writing
- Constructing the real code
- CreatePacktSetupWithGiftToleranceQty
- The CreateCustomerWithNonBlockedCustomerCategoryWithFreeGiftsAvailable helper function
- CreateItem
- CreateGiftCampaignForItemAndCustomerCategoryWithMinimumOrderQuantity
- CreateSalesInvoiceForCustomerWithLineForItem
- SetQuantityOnInvoiceLineSmallerThanMinimumOrderQuantityAndWithinGiftToleranceQty
- Running the test
- VerifyActivePromotionMessageIsDisplayed
- Summary
- Source Control Management and DevOps with Business Central
- Understanding Azure DevOps and what it offers
- Creating an Azure DevOps account and project
- Managing tasks, sprints, and boards in Azure DevOps
- Creating a repository for your code
- Managing repositories
- Security
- Options
- Branching policies
- Branching strategies
- Only a master branch
- Feature/developer branches
- Release branching
- Other strategies
- Git flow
- GitHub flow
- Branching considerations
- Understanding Git merge strategies
- Fast-forward merge
- Squash commit
- Rebase
- Git merge considerations
- Exploring Git with Visual Studio Code
- Visual Studio Code GUI for Git
- Workflow with Git
- Merges
- Understanding Azure DevOps Pipelines
- Agents
- Creating a build pipeline
- Variable groups and secure files
- Understanding the YAML pipeline
- Creating a YAML pipeline
- YAML pipeline templates
- Release pipeline
- Summary
- Section 4: Advanced Integrations with Dynamics 365 Business Central
- Dynamics 365 Business Central APIs
- Comparing OData and APIs in Dynamics 365 Business Central
- Using Dynamics 365 Business Central standard APIs
- Creating a custom API in Dynamics 365 Business Central
- Implementing a new API for a custom entity
- Implementing a new API for an existing entity
- Creating an application that uses Dynamics 365 Business Central APIs
- Using bound actions
- Using Dynamics 365 Business Central webhooks
- Working with Dynamics 365 Business Central APIs in Microsoft Graph
- Automation APIs in Dynamics 365 Business Central
- Summary
- Serverless Business Processes with Business Central and Azure
- Technical requirements
- Overview of Microsoft Azure serverless services
- Getting an overview of Azure Functions
- Developing an Azure function with Visual Studio
- Testing the Azure function locally
- Deploying the function to Azure
- Developing an Azure function with Visual Studio Code
- Testing your Azure function locally
- Publishing your function to Azure
- Calling an Azure function from AL
- Interacting with Azure Blob Storage to handle files in the cloud
- Creating an Azure Blob Storage account
- Creating Azure functions with Visual Studio
- The UploadFile function
- The DownloadFile function
- The ListFiles function
- Deploying the Azure functions
- Managing Azure Functions keys
- Testing the Azure functions
- Writing the Dynamics 365 Business Central extension
- Codeunit definition
- The pageextension definition
- Testing our application
- Summary
- Monitoring, Scaling, and CI/CD with Azure Functions
- Technical requirements
- Monitoring Azure Functions
- Scaling Azure Functions
- Azure Functions and DevOps
- Summary
- Business Central and Integration with the Power Platform
- Technical requirements
- Introducing the Power Platform
- Understanding Flow
- Understanding PowerApps
- Integration scenarios with Power Platform
- Scenario 1 – creating a human resources recruiting/onboarding process
- Scenario 2 – creating a simple sales order approval workflow
- Scenario 3 – creating a simple app to list all customers and sales quotes
- Summary
- Section 5: Moving Solutions to the New Extension Model
- Integrating Machine Learning into Dynamics 365 Business Central
- What are AI and ML?
- An overview of the ML process
- Understanding the Business Central ML Framework
- The Time Series API
- Step 1 – Downloading the dataset to Dynamics 365 Business Central
- Step 2 – Publishing a model as a web service from a public template
- Step 3 – Sending your data from Business Central to the ML endpoint to get predictions
- Understanding the ML Prediction API
- Step 1 – Publishing a general prediction model as a web service from a public template
- Step 2 – Training the ML model from AL
- Step 3 – Predicting using the trained model
- Step 4 – Getting insights into how ML works
- Step 5 – Publishing and running the forecast
- Summary
- Moving Existing ISV Solutions to the New Extension Model
- Preparing the transition from C/AL to AL and extensions
- Planning the number of extensions to code
- Converting existing solutions into AL
- C/AL to AL conversion
- C/AL to AL code customizations
- Upgrading from Dynamics 365 Business Central version 14 to version 15
- Handling customer-specific personalization’s
- Other things to remember
- Handling the MenuSuite
- .NET variables and add-ins
- File management
- Printing
- Dynamics 365 Business Central wave 2 release changes
- Summary
- Useful and Proficient Tools for AL Developers
- Who is Waldo?
- What tools to use
- The AL Extension Pack
- The CRS AL Language Extension
- Run objects
- Renaming/reorganizing files
- Search on Google/Microsoft Docs
- Snippets
- Feedback
- WaldoNavPad
- How to get it to work
- Running the app for the first time
- The background
- Implementing the logic
- MostUselessAppEver
- PowerShell tools
- GitHub
- Docker scripts
- Publishers
- ALOps
- DevOps extension
- Steps
- Documentation on GitHub
- App templates
- Example of using ALOps
- Summary
- Other Books You May Enjoy
- Leave a review – let other readers know what you think




