O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Microsoft Dynamics NAV

Book Description

Implementing ERP Systems

About This Book

  • Solve common business problems with the valuable features and flexibility of Dynamics NAV
  • Design software that is maintainable outside the ecosystem of their creators
  • Create configuration packages and perform data migration on your own

Who This Book Is For

This book is for Dynamics NAV partners, developers, consultants, and end users who want to know everything about Dynamics NAV implementations and development.

What You Will Learn

  • Create reusable data migration packages
  • Successfully upgrade your installation to the latest version
  • Manage and expand your existing installation with additional functionalities
  • Apply object-oriented practices to C/AL programming
  • Refactor legacy code and avoid anti-patterns
  • Build relationships with COM technologies
  • Clone codes and their application in Dynamics NAV
  • Automate deployment into Dynamics NAV

In Detail

Microsoft Dynamics NAV is an Enterprise Resource Planning (ERP) application used in all kinds of organizations around the world. It provides a great variety of functionality, out-of-the-box, in different topics such as accounting, sales, purchase processing, logistics, and manufacturing. Microsoft Dynamics NAV also allows companies to grow their applications by customizing solutions to meet specific requirements.

This course is a hands-on tutorial on working with a real Dynamics NAV implementation. It begins by providing an insight into the different tools available to migrate data from client legacy systems into Microsoft Dynamics NAV. If you are already live with Microsoft Dynamics NAV, you will learn about upgrades and what to expect from them. We’ll also show you how to implement additional or expanding functionalities within your existing Microsoft Dynamics NAV installation, perform data analysis, debug error messages, and implement free third-party add-ons to your existing installation. From here, you will be introduced to integrated development tools to make you a highly productive developer in the NAV environment.

The course will serve as a comprehensive reference guide, complementing NAV's Help files. You will find this course really useful if you want to evaluate Microsoft Dynamics NAV's development capabilities or need to manage NAV-based projects. Additionally, you will also learn about the NAV application structure, the C/SIDE development environment, the C/AL language, the construction and uses of each object type, and how it all fits together. Moving on, you will be guided through the NAV way of solving problems. You will be introduced to patterns and the software NAV architecture and will then build an example application. Then, you will walk through the details of architectural patterns, design patterns, and implementation patterns and will also learn about anti-patterns and handling legacy code. You will learn how to build solutions using patterns. The course offers premium, highly practical content on this recently released version of Dynamics NAV, and includes material from the following Packt books :

  • Implementing Microsoft Dynamics NAV - Third Edition
  • Programming Microsoft Dynamics™ NAV
  • Learning Dynamics NAV Patterns

Style and approach

This course is for Dynamics NAV partners, developers, consultants, and end users who want to know everything about Dynamics NAV implementations and development.

Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the code file.

Table of Contents

  1. Microsoft Dynamics NAV
    1. Table of Contents
    2. Microsoft Dynamics NAV
    3. Microsoft Dynamics NAV
    4. Credits
    5. Preface
      1. What this learning path covers
      2. What you need for this learning path
      3. Who this learning path is for
      4. Reader feedback
      5. Customer support
        1. Downloading the example code
        2. Errata
        3. Piracy
        4. Questions
    6. 1. Module 1
      1. 1. Exploring Microsoft Dynamics NAV – An Introduction
        1. Understanding Microsoft Dynamics NAV
        2. The functional areas within Dynamics NAV
        3. History of Dynamics NAV
        4. Functional areas
          1. Financial Management
            1. General Ledger
            2. G/L budgets
            3. Account Schedules
            4. Cash Management
            5. Fixed Assets
            6. VAT reporting and intrastat
            7. Sales tax
            8. Intercompany transactions
            9. Consolidation
            10. Multicurrency
          2. Sales and marketing
            1. Customers
            2. Order processing
            3. Approvals
            4. Pricing
            5. Marketing
          3. Purchase
            1. Vendors
            2. Order processing
          4. Approvals
            1. Pricing
            2. Planning
          5. Warehouse
            1. Items
            2. Locations
            3. Transfer orders
            4. Assembly
            5. Pick and put-away
            6. Inventory
          6. Manufacturing
            1. Product design
            2. Capacities
            3. Planning
            4. Execution
            5. Costing
            6. Subcontracting
          7. Job
            1. Job card
            2. Phases and tasks
            3. Planning
            4. Time sheet
            5. Invoice jobs
            6. Work in process (WIP)
          8. Resource planning
            1. Resource card
            2. Pricing
          9. Service
            1. Service items
            2. Contracts
            3. Price management
            4. Service orders
            5. Service tasks
            6. Fault reporting
          10. Human resources
            1. Employees
            2. Absence registration
            3. Country localizations
          11. Vertical and horizontal solutions
        5. Accessing Dynamics NAV
          1. Windows client
          2. Web client
          3. Tablet client
          4. SharePoint client
          5. Web Services
          6. Development Environment
        6. Summary
      2. 2. What's New in NAV 2016?
        1. Application changes
          1. Improvements for the application users
            1. Cues with color indicator
            2. Mandatory fields
            3. Simplified user interface for small businesses
          2. Tablet client
          3. New application features
            1. Automatic payment and bank reconciliation
            2. Signing up for the Bank Data Conversion Service
            3. Reconciling payments automatically
            4. Reconciling bank statements automatically
            5. Social Listening
            6. Power Business Intelligence
            7. RapidStart services
            8. Schedule reports
            9. E-mailing documents
            10. Document exchange service (OCR Services)
            11. Exchange rates update
            12. Native integration with Dynamics CRM
            13. Universal app
            14. Workflow management
            15. Posting Preview
            16. Deferrals
        2. Development changes
          1. Document reporting
          2. Upgrade automation – an overview
            1. Upgrade automation – the application code
            2. Upgrade automation – data
          3. Enhancement in security and encryption
            1. Changes to C/AL functions, data types, properties, and triggers
            2. .NET interoperability
            3. Enhancements in RoleTailored client control add-ins
        3. IT changes
          1. Dynamics NAV Server administration
          2. Windows PowerShell cmdlets
        4. Summary
      3. 3. Dynamics NAV – General Considerations
        1. The data model
          1. Master data
          2. Documents
          3. Journals
          4. Entries
            1. Creating ledger entries
          5. Combining all concepts
        2. No save button
          1. The main advantage
          2. When is the data verified?
          3. The main drawback
        3. The posting routines
          1. Posted data cannot be modified (or deleted)
        4. Navigating through your data
          1. The Navigate functionality
          2. Other ways to browse data
          3. Sorting on list pages
          4. Filtering for the data you need
          5. Saving views for the filters you've set
        5. Real-time data gathering – the SIFT technology
        6. Everything leads to accounting
        7. The Dynamics NAV database
          1. The TableRelation property
          2. Coded data rules
        8. Summary
      4. 4. The Implementation Process – From the Reseller
        1. What is an implementation?
        2. Methodology
          1. The Waterfall approach
          2. The Agile approach
          3. Using the best of both
          4. Microsoft Dynamics Sure Step
            1. Project types based on the Waterfall approach
              1. The Rapid project type
              2. The Standard project type
              3. The Enterprise project type
              4. The Upgrade project type
            2. The Agile project type
        3. Roles
          1. Salesperson
          2. Project manager
          3. Business consultant
          4. Key users
          5. Analyst
          6. Developer
          7. Implementer
          8. End users
          9. Summarizing the roles
        4. Phases
          1. Presales
          2. Getting the project requirements
          3. Designing the solution
            1. Configuration
            2. Modifying standard Dynamics NAV functionality
            3. New functionalities
            4. Data migration
          4. Development
          5. Deployment
            1. Software and hardware installation
            2. Configuration
            3. Data migration
            4. User-acceptance test
            5. End users' training
            6. Go-live!
          6. Post Implementation Support
        5. Summary
      5. 5. The Implementation Process on the Customer Side
        1. Definition of goals
        2. Measuring goals
        3. Defining the internal processes
          1. Questions to be asked
        4. Improve before automating
        5. Getting the requirements
        6. Change management
        7. Get involved in testing the system
        8. Involve end users
        9. Summary
      6. 6. Migrating Data
        1. Tools to migrate data
          1. RapidStart Services
            1. Creating a new company using PowerShell
            2. Changing the profile to RapidStart Services Implementer
            3. Using the configuration wizard
            4. Creating a data conversion package
              1. Creating a configuration package
              2. Applying a configuration package
            5. Configuration worksheet
              1. Creating the migration structure
              2. Copying related tables
            6. Using Excel templates
            7. Configuration templates
              1. Creating a configuration template
              2. Using configuration templates
            8. Configuration questionnaire
              1. Creating a configuration questionnaire
              2. Completing the configuration questionnaire
            9. Summarizing RapidStart Services
          2. Using XMLports to migrate data
            1. The XMLport structure
            2. Running the XMLport
            3. Writing code inside the XMLport
              1. The document structure
              2. Filling data not included in the XML file
              3. Validation order may change our data
          3. Writing your own tools
        2. Converting data from the old system to Dynamics NAV's needs
          1. Fields particular to Microsoft Dynamics NAV
        3. Master data
        4. Open entries
          1. Customer entries
          2. Vendor entries
          3. Bank entries
          4. Item entries
          5. Fixed-asset entries
          6. General Ledger balances
        5. Historical data
        6. Open documents
        7. Choosing a go-live date
          1. Going live at the beginning of the fiscal year
            1. What cons do we have?
          2. Going live in the middle of a fiscal year
        8. Summary
      7. 7. Upgrading Microsoft Dynamics NAV
        1. Upgrading philosophy
        2. Upgrades prior to Dynamics NAV 2013
        3. Upgrades from Dynamics NAV 2013 forward
        4. Upgrading process checklist
          1. Upgrading from 2013, 2013 R2, or 2015
            1. Technical upgrade (converting the database)
              1. Connecting the Dynamics NAV Server
              2. Application code upgrade
              3. Merging the code
              4. Importing the merged code
              5. Upgrading the application data
              6. Automating upgrading using PowerShell
          2. Upgrading from 2009, 2009 SP1, or 2009 R2
            1. Upgrading the 2009 application code
            2. Upgrading the 2009 data
          3. Upgrading from 5.0 or 5.0 SP1
            1. Upgrading the 5.0 application code
            2. Upgrading the 5.0 data
          4. Upgrading from 4.0, 4.0 SP1, 4.0 SP2, or 4.0 SP3
            1. Upgrading the 4.0 application code
            2. Upgrading the 4.0 data
          5. Upgrading from 3.60 or 3.70
            1. Upgrading the 3.60 or 3.70 application code
            2. Upgrading the 3.60 or 3.70 data
        5. Upgrading steps to NAV 2013
          1. Preparing to upgrade
            1. Migrating to SQL Server
            2. Testing the database
          2. Upgrading the application code
            1. Getting object versions
            2. Converting objects to the Dynamics NAV 2013 format
            3. Carrying out customizations to the new version
            4. Transforming forms to pages
            5. Transforming reports
          3. Upgrading the data
        6. Upgrading tools
          1. Upgrade toolkit
          2. Text format upgrade
          3. Form transformation
          4. Report transformation
            1. Upgrading hybrid reports
            2. Upgrading classic reports
          5. Comparing text tools
          6. MergeTool
            1. Downloading MergeTool
            2. Installing MergeTool
            3. Using MergeTool
              1. Importing the old base version
              2. Importing the old custom version
              3. Importing the new base version
              4. Comparing the old base and new base versions
              5. Merging all versions
              6. Exporting the new custom version
              7. Importing the new custom version to a Dynamics NAV 2013 database
        7. Summary
      8. 8. Development Considerations
        1. Setup versus customization
        2. Data model principles
          1. Basic objects
            1. Object elements
          2. How tables are structured
            1. Understanding table structures
              1. Master tables
              2. Secondary tables
              3. Setup tables
              4. Document tables
              5. Entry tables
              6. Journal tables
            2. The final picture
          3. The structure of pages
            1. Understanding page structures
              1. Role center pages
              2. Card pages
              3. List pages
              4. Document pages
              5. ListPart pages
              6. Worksheet pages
              7. ConfirmationDialog pages
              8. NavigatePage pages
        3. The posting process
          1. The codeunit structure for sales posting
          2. The codeunit structure for General Journal posting
        4. Where to write customized code
          1. Validating fields
          2. Batch jobs
        5. Formatting customized code
        6. Summary
      9. 9. Functional Changes on Existing Implementations
        1. General guidelines
        2. What is a functional change?
          1. The Requisition Worksheet
          2. Fixed Assets
          3. Item Tracking
          4. Extending a customized functionality
        3. Interactions with other functionalities
          1. The Requisition Worksheet
          2. Fixed Assets
          3. Item Tracking
            1. Creating a new item
            2. Creating and posting a purchase order for the new item
            3. Creating and posting a sales order for the new item
            4. Turning on Item Tracking for the new item
          4. Extending a customized functionality
        4. Writing a to-do list to implement a change
          1. The Requisition Worksheet
          2. Fixed Assets
          3. Item Tracking
          4. Extending a customized functionality
        5. Choosing the right time
          1. The Requisition Worksheet
          2. Fixed Assets
          3. Item Tracking
          4. Extending a customized functionality
        6. Planning the change
          1. The Requisition Worksheet
          2. Fixed Assets
          3. Item Tracking
          4. Extending a customized functionality
        7. Summary
      10. 10. Data Analysis and Reporting
        1. Using filters and FlowFilters
        2. Creating views
        3. Statistics
        4. Charts
          1. The Show as Chart option
          2. Adding charts to the Role Center page
          3. Creating and configuring charts
        5. Using reports
          1. Finding reports
          2. Running reports
          3. Types of reports
            1. List reports
            2. Test reports
            3. Posting reports
            4. Transaction reports
            5. Document reports
              1. Report selection
            6. Other reports
        6. Account schedules
        7. Analysis views
          1. Understanding dimensions
            1. Setting up new dimensions
            2. Categorizing dimensions
            3. Accessing dimensions
          2. Creating an analysis view
          3. Updating analysis views
          4. Using analysis views
            1. Analysis by dimensions
            2. Analysis views as a source for account schedules
        8. Extracting data
          1. Sending data to Microsoft Office applications
            1. Sending data to Microsoft Word
            2. Sending data to Microsoft Excel
          2. Extracting data through web services
          3. Other ways to extract Dynamics NAV data
        9. Understanding report development
          1. Reports anatomy
          2. Defining the dataset
          3. Designing the visual layout
        10. Summary
      11. 11. Debugging
        1. The art of debugging
        2. Debugging in Dynamics NAV 2016
          1. Break Rules
        3. Placing breakpoints
          1. From the Object Designer
          2. In the current statement of the debugger
          3. Conditional breakpoint
          4. Debugger Breakpoint List
        4. Line-by-line execution
          1. The Step Into option
          2. The Step Over option
          3. The Step Out option
          4. The Continue option
        5. The Call Stack FactBox
        6. The Watches FactBox
          1. Adding variables from the Debugger Variables List window
          2. Adding variables from the code viewer
        7. Summary
      12. 12. Popular Reporting Options with Microsoft Dynamics NAV
        1. What is a query?
        2. Query Designer
          1. Defining our first query
          2. Adding additional data to the query
        3. Charts
        4. Web services
          1. External applications
            1. Excel and PowerPivot
        5. Power BI
        6. Jet Reports Express
          1. Downloading Jet Reports Express
          2. Installing Jet Reports Express
          3. Report pack for Jet Reports Express
        7. Summary
    7. 2. Module 2
      1. 1. An Introduction to NAV 2015
        1. NAV 2015 – an ERP system
          1. Financial Management
          2. Manufacturing
          3. Supply Chain Management
          4. Business Intelligence and reporting
          5. Relationship Management
          6. Human Resource management
          7. Project Management
        2. Significant changes in NAV 2015
          1. Application changes
          2. Client enhancements
          3. Development tools
          4. Other areas
        3. A developer's overview of NAV 2015
          1. NAV object types
          2. The C/SIDE integrated development environment
          3. Object Designer tool icons
          4. The C/AL programming language
          5. NAV object and system elements
          6. NAV functional terminology
          7. User interface
        4. Hands-on development in NAV 2015
          1. The NAV 2015 development exercise scenario
          2. Getting started with application design
          3. Application tables
            1. Designing a simple table
            2. Creating a simple table
          4. Pages
            1. Standard elements of pages
            2. List pages
            3. Card pages
            4. Document pages
            5. Journal/Worksheet pages
          5. Creating a List page
          6. Creating a Card page
          7. Creating some sample data
          8. Creating a List Report
          9. Other NAV object types
            1. Codeunits
            2. Queries
            3. MenuSuites
            4. XMLports
          10. Development backups and documentation
        5. Summary
        6. Review questions
      2. 2. Tables
        1. An overview of tables
          1. Components of a table
          2. Naming a table
          3. Table numbering
          4. Table properties
          5. Table triggers
          6. Keys
          7. SumIndexFields
          8. Field Groups
        2. Enhancing our sample application
          1. Creating and modifying tables
          2. Assigning a Table Relation property
          3. Assigning an InitValue property
          4. Adding a few activity-tracking tables
          5. New tables for our WDTU project
          6. New list pages for our WDTU project
          7. Keys, SumIndexFields, and table relations in our examples
            1. Secondary keys and SumIndexFields
            2. Table relations
          8. Modifying a standard table
          9. Version list documentation
        3. Types of tables
          1. Fully Modifiable tables
            1. Master
            2. Journal
            3. Template
            4. Ledger
            5. Reference tables
            6. Register
            7. Posted Document
            8. Setup
            9. Temporary
          2. Content modifiable tables
            1. System
          3. Read-only tables
            1. Virtual
        4. Summary
        5. Review questions
      3. 3. Data Types and Fields
        1. Basic definitions
        2. Fields
          1. Field properties
          2. Field triggers
          3. Data structure examples
          4. Field numbering
          5. Field and Variable naming
        3. Data types
          1. Fundamental data types
            1. Numeric data
            2. String data
            3. Date/Time data
          2. Complex data types
            1. Data structure
            2. Objects
            3. Automation
            4. Input/Output
            5. DateFormula
            6. References and other data types
          3. Data type usage
        4. FieldClass property options
          1. FieldClass – Normal
          2. FieldClass – FlowField
          3. FieldClass – FlowFilter
          4. FlowFields and a FlowFilter for our application
        5. Filtering
          1. Experimenting with filters
          2. Accessing filter controls
            1. Development Environment filter access
            2. Role Tailored Client filter access
        6. Summary
        7. Review questions
      4. 4. Pages – The Interactive Interface
        1. Page design and structure overview
          1. Page design guidelines
          2. The NAV 2015 page structure
        2. Types of pages
          1. Role Center page
          2. List page
          3. Card page
          4. Document page
            1. FastTab
          5. ListPlus page
          6. Worksheet (Journal) page
          7. ConfirmationDialog page
          8. StandardDialog page
          9. NavigatePage
            1. Navigate page 344
          10. Special pages
            1. Request page
            2. Departments page
          11. Page parts
            1. FactBox Area
              1. CardParts and ListParts
          12. Charts
            1. Chart part
              1. Chart Control Add-in
          13. Page names
        3. Page Designer
          1. New Page Wizard
        4. Page components
          1. Page Triggers
          2. Page properties
          3. Page Preview tool
          4. Inheritance
        5. WDTU Page Enhancement – part 1
        6. Page controls
          1. Control types
            1. Container controls
            2. Group controls
            3. Field controls
          2. Page Part controls
            1. Page control triggers
          3. Bound and Unbound Pages
        7. WDTU Page Enhancement – part 2
        8. Page Actions
          1. Page Action Types and Subtypes
          2. Action Groups
          3. Action properties
          4. Navigation Pane Button actions
          5. Actions Summary
        9. Learning more
          1. UX (User Experience) Guidelines
          2. Creative plagiarism and patterns
          3. Experimenting on our own
          4. Experimentation
        10. Summary
        11. Review questions
      5. 5. Queries and Reports
        1. Queries
          1. Building a simple Query object
          2. Query and Query component properties
            1. Query properties
            2. The DataItem properties
            3. Column properties
        2. Reports
          1. What is a report?
          2. Four NAV report designers
          3. NAV report types
            1. Report types summarized
            2. Report naming
        3. Report components – overview
          1. Report structure
            1. Report data overview
            2. Report Layout overview
        4. Report data flow
        5. Report components – detail
          1. C/SIDE Report properties
          2. SQL Server Report Builder – Report properties
          3. Report triggers
          4. Request Page Properties
          5. Request page triggers
          6. DataItem properties
          7. DataItem triggers
        6. Creating a Report in NAV 2015
          1. Learn by experimentation
          2. Report building – phase 1
          3. Report building – phase 2
          4. Report building – phase 3
            1. Modifying an existing report with Report Designer or Word
            2. Runtime rendering
            3. Inheritance
          5. Interactive report capabilities
            1. Interactive sorting
            2. Interactive visible/not visible
          6. Request page
            1. Add a Request Page option
          7. Processing-Only reports
          8. Creative report plagiarism and patterns
        7. Summary
        8. Review questions
      6. 6. Introduction to C/SIDE and C/AL
        1. Understanding C/SIDE
          1. Object Designer
            1. Starting a new object
              1. Accessing the Table Designer
              2. Accessing the Page Designer
              3. Accessing the Report Dataset Designer
              4. Accessing the Codeunit Designer
            2. Query Designer
            3. XMLport Designer
            4. MenuSuite Designer
            5. Object Designer Navigation
              1. Exporting objects
            6. Importing objects
              1. Import Table object changes
          2. Text objects
            1. Some useful practices
              1. Changing data definitions
              2. Saving and compiling
            2. Some C/AL naming conventions
            3. Variables
              1. C/AL Globals
              2. C/AL Locals
                1. Function local identifiers
                2. Other local identifiers
              3. Special working storage variables
                1. Temporary tables
                2. Arrays
                3. Initialization
                4. System-defined variables
          3. C/SIDE programming
            1. Non-modifiable functions
            2. Modifiable functions
            3. Custom functions
              1. Create a function
        2. C/AL syntax
          1. Assignment and punctuation
          2. Expressions
            1. Operators
              1. Arithmetic operators and functions
              2. Boolean operators
              3. Relational operators and functions
              4. Precedence of operators
          3. Frequently used C/AL functions
            1. The MESSAGE function
            2. The ERROR function
            3. The CONFIRM function
            4. The STRMENU function
            5. Record functions
              1. The SETCURRENTKEY function
              2. The SETRANGE function
              3. The SETFILTER function
              4. GET function
            6. FIND functions
              1. FIND ([Which]) options and the SQL Server alternates
          4. Conditional statements
            1. The BEGIN–END compound statement
            2. The IF–THEN–ELSE statement
          5. Indenting code
        3. Some simple coding modifications
          1. Adding field validation to a table
          2. Adding code to a report
          3. Lay out the new Report Heading
          4. Save and test
          5. Lookup Related table data
          6. Layout the new report body
            1. Save and test
            2. Handling User-entered report options
            3. Defining the Request Page
        4. Finishing the processing code
          1. Test the completed report
          2. Output to Excel
        5. Summary
        6. Review questions
      7. 7. Intermediate C/AL
        1. C/AL Symbol Menu
        2. Internal documentation
        3. Validation functions
          1. TESTFIELD
          2. FIELDERROR
          3. INIT
          4. VALIDATE
        4. Date and Time functions
          1. TODAY, TIME, and CURRENTDATETIME functions
          2. WORKDATE function
          3. DATE2DMY function
          4. DATE2DWY function
          5. DMY2DATE and DWY2DATE functions
          6. CALCDATE function
        5. Data conversion and formatting functions
          1. ROUND
          2. FORMAT function
          3. EVALUATE function
        6. FlowField and SumIndexField functions
          1. CALCFIELDS function
          2. SETAUTOCALCFIELDS function
          3. CALCSUMS function
            1. CALCFIELDS and CALCSUMS comparison
        7. Flow control
          1. REPEAT-UNTIL
          2. WHILE-DO
          3. FOR-TO or FOR-DOWNTO
          4. CASE-ELSE statement
          5. WITH-DO statement
          6. QUIT, BREAK, EXIT, and SKIP functions
            1. QUIT function
            2. BREAK function
            3. EXIT function
            4. SKIP function
        8. Input and Output functions
          1. NEXT function with FIND or FINDSET
          2. INSERT function
          3. MODIFY function
            1. Rec and xRec
          4. DELETE function
          5. MODIFYALL function
          6. DELETEALL function
        9. Filtering
          1. SETFILTER function
          2. COPYFILTER and COPYFILTERS functions
          3. GETFILTER and GETFILTERS functions
          4. FILTERGROUP function
          5. MARK function
          6. CLEARMARKS function
          7. MARKEDONLY function
          8. RESET function
        10. InterObject communication
          1. Communication via data
          2. Communication through function parameters
          3. Communication via object calls
        11. Enhancing the WDTU application
          1. Modifying Table Fields
          2. Add Validation logic
            1. Playlist Header Validations
          3. Creating the Playlist Subform page
            1. Playlist Line Validations
          4. Creating a function for our Factbox
          5. Creating a Factbox page
        12. Summary
        13. Review questions
      8. 8. Advanced NAV Development Tools
        1. NAV process flow
          1. Initial setup and data preparation
          2. Transaction entry
          3. Testing and posting the Journal batch
          4. Utilizing and maintaining the data
          5. Data maintenance
        2. Role Center pages
          1. The Role Center structure
            1. The Role Center activities page
            2. Cue Groups and Cues
            3. Cue source table
            4. Cue Group Actions
          2. System Part
          3. Page Parts
            1. Page Parts not visible
            2. Page Part Charts
            3. Page Parts for user data
          4. The Navigation Pane and Action menus
            1. Action Designer
            2. Create a WDTU Role Center Ribbon
              1. Promoted Actions Categories
              2. Action Groups
              3. Configuration/Personalization
            3. The Navigation Pane
              1. The Navigation Home Button
              2. The Navigation Departments Button
              3. Other Navigation Buttons
        3. XMLports
          1. XMLport components
            1. XMLport properties
            2. XMLport triggers
            3. XMLport data lines
            4. XMLport line properties
              1. SourceType as Text
              2. SourceType as Table
              3. SourceType as Field
            5. The Element or Attribute
              1. NodeType of Element
              2. NodeType of Attribute
            6. XMLport line triggers
              1. DataType as Text
              2. DataType as Table
              3. DataType as Field
            7. XMLport Request Page
        4. Web services
          1. Exposing a web service
          2. Publishing a web service
          3. Enabling web services
          4. Determining what was published
          5. XMLport – a web services integration example for WDTU
        5. Summary
        6. Review questions
      9. 9. Successful Conclusions
        1. Creating new C/AL routines
          1. Callable functions
            1. Codeunit 358 – Date FilterCalc
            2. Codeunit 359 – Period Form Management
            3. Codeunit 365 – Format Address
            4. Codeunit 396 – NoSeriesManagement
            5. Function models to review and use
          2. Management codeunits
        2. Multi-language system
        3. Multi-currency system
        4. Navigate
          1. Modifying for Navigate
        5. Debugging in NAV 2015
          1. Text Exports of Objects
          2. Dialog function debugging techniques
            1. Debugging with MESSAGE and CONFIRM
            2. Debugging with DIALOG
            3. Debugging with text output
            4. Debugging with ERROR
          3. The NAV 2015 Debugger
            1. Activating the Debugger
            2. Attaching the Debugger to a Session
            3. Creating Break Events
            4. The Debugger window
            5. Changing code while debugging
        6. C/SIDE Test-driven development
        7. Other Interfaces
          1. Automation Controller
          2. Linked Data Sources
        8. NAV Application Server (NAS)
        9. Client Add-ins
          1. Client Add-in construction
          2. WDTU Client Add-in
          3. Client Add-in comments
        10. Customizing Help
        11. NAV development projects – general guidance
          1. Knowledge is the key
          2. Data-focused design
            1. Defining the needed data views
            2. Designing the data tables
            3. Designing the user data access interface
            4. Designing the data validation
            5. Data design review and revision
          3. Designing the posting processes
          4. Designing the supporting processes
          5. Double-check everything
        12. Design for efficiency
          1. Disk I/O
          2. Locking
        13. Updating and upgrading
          1. Design for updating
            1. Customization project recommendations
              1. One change at a time
            2. Testing
              1. Database testing approaches
              2. Testing in production
              3. Using a testing database
              4. Testing techniques
            3. Deliverables
            4. Finishing the project
          2. Plan for upgrading
            1. Benefits of upgrading
          3. Coding considerations
            1. Good documentation
            2. Low-impact coding
        14. Supporting material
        15. Summary
        16. Review questions
    8. 3. Module 3
      1. 1. Introducing Dynamics NAV Patterns and Software Architecture
        1. What do we mean by 'patterns'?
          1. Software design patterns
          2. The Procedural software design patterns
        2. Microsoft Dynamics NAV Design Patterns
          1. The object-oriented patterns
          2. Non-object-oriented patterns
          3. The functional oriented patterns
        3. Patterns elements and hierarchy
          1. Architectural patterns
          2. Design patterns
          3. Structuring code
          4. The coding standards
          5. Anti-patterns
            1. Code cloning
          6. Legacy code
          7. Upgradability
            1. The upgrade frequency
            2. Design patterns and upgrades
          8. Delta files
          9. Repeatability
            1. Design patterns and repeatability
          10. Lifecycle of a design pattern
            1. Technology changes
            2. Old habits die hard
            3. New design patterns
          11. Software architecture in Microsoft Dynamics NAV
            1. Metadata
        4. Building blocks
          1. Table
          2. Page
          3. Report
          4. Codeunit
          5. Query
          6. XMLPort
          7. MenuSuite
        5. Metadata
          1. Flowfields
          2. Flowfilters
        6. Base application
          1. Functional processes
        7. Summary
      2. 2. Architectural Patterns
        1. The Singleton Pattern
          1. Technical description
          2. Company-Initialize
          3. Implementations
            1. Examples
          4. Enhancements
        2. The Supplemental and Subsidiary Pattern
          1. Technical description
          2. Implementations
            1. Examples
        3. The Compound Pattern
          1. Technical description
            1. Implementation
            2. Examples
        4. The Rules Pattern
          1. Technical description
          2. Implementations
          3. Examples
        5. The Master Data Pattern
          1. Technical description
          2. Implementations
          3. Examples
        6. The Journal Template-Batch-Line Pattern
          1. Technical description
            1. The Journal Template table
            2. The Journal Batch table
            3. The Journal Line table
              1. Recurring Journals
              2. Pages
            4. Codeunits
          2. Implementations
            1. Hierarchy
            2. Journals as contracts
          3. Examples
        7. The Entry Pattern
          1. Technical description
          2. The Entry Table types
            1. Historical entries
            2. Temporary entries
          3. Entries that can be deleted
            1. Temporary tracking buckets
          4. Implementations
          5. Examples
        8. Document Pattern
          1. Technical description
            1. The Header table
            2. The Line table
            3. Posting and archiving
          2. Implementations
          3. Examples
        9. The Argument table
          1. Technical description
          2. Implementations
        10. Summary
      3. 3. Design Patterns
        1. The Entity State Pattern
          1. Technical description
          2. Setting the State
          3. Testing the State
          4. Implementations
          5. Examples
        2. The Select Pattern
          1. Technical description
          2. Implementations
            1. Examples
        3. The Number Series Pattern
          1. Technical description
            1. The Table reference field
            2. Setup reference
            3. C/AL functions and variables
          2. Implementations
          3. Examples
        4. Address Integration Pattern
          1. Technical description
            1. Fields
          2. Copying the address
            1. Printing addresses
          3. Implementations
          4. Examples
        5. Multi-Level Setup
          1. Technical description
          2. Implementations
          3. Examples
        6. Document History
          1. Technical description
            1. The naming conventions
            2. Codeunit Structure
            3. Test Near, Test Far
            4. Do it
            5. Clean up
            6. An Example
            7. TRANSFERFIELDS
          2. Implementations
          3. Examples
        7. Copy Document Pattern
          1. Technical description
            1. Validation logic
          2. Implementations
          3. Examples
        8. Job Queue Entry Pattern
          1. Technical description
            1. Preprocessing
            2. Getting records
            3. The Main function
            4. Post-processing
            5. Error handling
          2. Implementations
            1. Examples
        9. Dismissible dialogs and save preferences
          1. Technical description
            1. Dismissible dialog
          2. Implementations
            1. Examples
        10. Setup Update Pattern
          1. Technical description
            1. Restrictions
          2. Implementations
          3. Example
        11. Model-View ViewModel Pattern
          1. Technical description
          2. Implementations
          3. Examples
        12. Summary
      4. 4. Building an Example Application Using Patterns
        1. The design elements
        2. The Pattern dependencies
        3. Step one – Foundation
          1. Example setup
          2. Which Patterns to use
          3. The implementation
          4. The Multi-Level Setup Pattern
        4. Step two – Master Data
          1. Example Person
          2. The Example Product
          3. Number Series
            1. Adding Setup fields
            2. Adding variables
            3. Adding the No. Series field
            4. Code snippets
          4. Entity State
          5. Implementing the Address Integration Pattern
        5. Step three – Journals & Entries
          1. Creating your own Journal and Entry
          2. Validation in Journals
        6. Step four – Documents
          1. Implementing a Document
          2. Document history
          3. Selecting a Pattern
          4. Other Patterns
          5. Posting
            1. The ThrowErrorIfNoSelection function
            2. The TestNear function
            3. The TestFar function
            4. The PostExampleOne/PostExampleTwo function
            5. The PostExJnlLine function
            6. The DeleteExampeDocument function
        7. The layered model
        8. Summary
      5. 5. Coding Best Practices
        1. Coding guidelines
          1. Code design
            1. Variable capacity
            2. The Cyclomatic Complexity
            3. The function size
            4. Using complex data types
            5. Localizability
            6. Date formulas
          2. Code readability
            1. Variable naming
            2. Self-explaining
            3. Suffix versus prefix
            4. Approved abbreviations
        2. Class-Method-Property
          1. The Table as a class
          2. A Codeunit as a method
        3. Function libraries and interfaces
        4. Natural Language Programming
          1. Pitfalls
          2. Bonus – debugging
        5. Encapsulation
          1. Override Functions
        6. Façade
        7. Hooks
          1. Disabling the original source code
          2. Predefined hooks
        8. Variant variables
        9. Managing DLL
        10. Summary
      6. 6. Anti-patterns and Handling Legacy Code
        1. Anti-patterns
          1. Code cloning
            1. Forking
            2. Templating
            3. Customizing
            4. Exact match
            5. Examples
            6. Transaction mirroring
            7. Code normalization and writing clean code
            8. The Document type normalization
            9. The small business application
            10. The VAT and Sales Tax calculation
            11. Avoiding code cloning
          2. Boat anchors
          3. Other anti-patterns and context
          4. Programming language capabilities
        2. Legacy code
        3. Refactoring the C/AL Code
          1. Refactoring tables
            1. Renaming
            2. Normalization
          2. Code refactoring
            1. Finding the process owner
            2. Moving to Codeunit
            3. Breaking down the code into functions
            4. Encapsulating functions
            5. Normalizing the code
        4. The boy scout rule
        5. Summary
      7. 7. Building Solutions Using Patterns
        1. Building blocks
          1. Applying Architectural Patterns
            1. The application setup
            2. Guests
            3. Room
            4. Season
            5. Price
            6. Reservation
            7. Stay
            8. Check-in
            9. Check-out
            10. Clean
            11. Evaluation
            12. Invoice
        2. Creating the Table objects
        3. Applying Design Patterns
          1. The Bed and Breakfast setup
          2. Bed and Breakfast season
          3. Bed and Breakfast room
          4. Bed and Breakfast price
          5. Bed and Breakfast clean entry
          6. Bed and Breakfast stay
          7. Bed and Breakfast journal and entry
          8. The Bed and Breakfast evaluation header and evaluation line
        4. Defining the methods
        5. Writing the Code and Link methods
          1. Creating the cleaning entries
        6. Refactoring
          1. The new class members
          2. The new function library
          3. Room members
          4. The room price calculation
        7. Testing the application
          1. Test isolation
          2. Analyzing the results
        8. Upgrading the application
          1. Creating a Delta file
          2. The steps of creating a Delta file
          3. Inside the Delta file
        9. Building our application
          1. Building the result
        10. Managing the source code
          1. Creating the workspace
          2. Setting up Visual Studio
          3. Uploading the files
        11. Summary
    9. Bibliography
    10. Index