Curriculum
Course 80436A: C/Side Introduction in Microsoft Dynamics NAV 2013
Module 1: Microsoft Dynamics NAV Development Environment
This module explains fundamental aspects of Microsoft Dynamics NAV Development Environment.
Lessons
- Basic Objects in Microsoft Dynamics NAV 2013
- Object Designer Fundamentals
- Team Development Features
- The Physical and Logical Database
Lab : Designing and Running an Object
- Accessing the Object Designer
- Creating an object
After completing this module, you'll be able to:
- Present the basic object types in Microsoft Dynamics NAV
2013.
- Describe fundamental aspects of Microsoft Dynamics NAV
Development Environment. This includes the UI, application objects, and basic
metadata concepts.
- Explain the physical and logical database structure.
- Explain the features for multi-developer environments.
Module 2: Tables
This module explains the concepts and the use of tables and
table components.
Lessons
- Tables Fundamentals
- Primary and Secondary Keys
- Table Relationships
- Special Table Fields
Lab : Create a Table
After completing this module, you'll be able to:
- Explain the concepts of tables and table components.
- Examine the concept behind primary and secondary keys, and
explain how to set them.
- Create a simple table with primary and secondary keys, and
add data to the table.
- Review the concept of table relation.
- Set table relations with a filter and condition.
- Describe the special table fields.
- Use special table fields to improve table features.
Module 3: Pages
This module explains the concepts of pages and page
components.
Lessons
- Page Fundamentals
- Page Designer
- Page Types and Characteristics
Lab : Create a Card and a List Page
- Create a Card page for the Course table
- Create a List page for the Course table
After completing this module, you'll be able to:
- Explain the concepts of pages and page components.
- Describe Page Designer and Action Designer.
- Create a simple page and add basic controls to the page.
- Provide an overview of different page types and their
characteristics.
- Discuss best practices in designing pages.
- Create a Card page, add a container, FastTabs, and fields.
- Create a List page and link it to the Card page.
- Create a main page, a Part page, and link the two pages.
Module 4: Introduction to C/AL Programming
This module explains the concepts and use of C/AL code
elements.
Lessons
- C/AL Programming
- Intrinsic Data Types
- Identifiers, Variables and Syntax
- Variable Scope
Lab : Investigate Data Types
- Data Types
- Display the Variables
After completing this module, you'll be able to:
- Describe the concepts and basic use of C/AL code elements.
- Describe the concepts of data types, simple data types and
complex data types.
- Explain the concepts of identifiers, variables, and syntax.
- Explain the syntax of identifiers.
- Explain the scope of variables.
- Explain the initialisation of variables.
- Create a simple codeunit to demonstrate how to define
variables, assign data types, and investigate several default values that are
initialised for several data types.
Module 5: Assignment Statements and Expressions
This module explains the concepts of assignments,
statements, and assignment statements.
Lessons
- Assignment Statements
- The Syntax of Statements
- Automatic Type Conversions
- Use Assignment Statements and the Symbol Menu
- Expressions, Evaluations, Terms, and Operators
- The String Operator
- Function Calls in Expressions
- Numeric Expressions
- Arithmetic Operators
- Relational and Logical Expressions
- Relational Expressions for Comparison
- Relational Expressions for Set Inclusion
- Logical Expressions
Lab : Use Logical and Relational Expressions in a Page
After completing this module, you'll be able to:
- Explain the concepts of assignment, statement, and
assignment statement.
- Describe the syntax of statements and introduce the
statement separator.
- Describe automatic type conversions for string, numeric, and
other data types.
- Use assignment statements and the Symbol Menu.
- Explain the concepts of expressions, terms, and operators.
- Describe the syntax of an expression.
- Describe the string operator.
- Use the string operator.
- Describe the MAXSTRLEN and the COPYSTR functions.
- Use the MAXSTRLEN and the COPYSTR functions in an
expression.
- Define numeric expressions, arithmetic operators, and
operator precedence.
- Describe the arithmetic operators, and provide examples.
- Use the arithmetic operators and examine the operator
precedence.
- Define relational and logical operators and expressions.
- Describe the use of relational expressions for comparison.
- Describe the use of relational expressions for set
inclusion.
- Describe the use of logical expressions.
- Use logical and relational expressions in a page.
Module 6: C/AL Statements
This module explains concepts of conditional statement and
the Boolean expression.
Lessons
- Conditional Statement and Boolean Expressions
- The IF Statement
- The EXIT Statement
- The CASE Statement
- Compound Statements and Comments
- The Syntax of Compound Statements
- Compound Statements by Using Nested IF Statements
- The Syntax of Comments
- Practice: Nested IF
- Arrays
- The Syntax of Arrays
- The Power of Arrays
- Strings as Arrays of Characters
- Repetitive Statements
- The WITH Statement
Lab : Use Conditional and Compound Statements
After completing this module, you'll be able to:
- Define conditional statements and Boolean expressions.
- Describe the IF statement, the IF-THEN, and IF-THEN-ELSE
syntax.
- Describe the EXIT statement and code indentation.
- Describe the CASE statement and the syntax of the CASE
statement.
- Define compound statements and comments.
- Describe the syntax of compound statements with BEGIN and
END.
- Understand the concepts of nested IF statements and the rule
of correct indentation.
- Describe the syntax of comments.
- Use the IF, EXIT, CASE, and compound statements in a page.
- Test knowledge about C/AL statements.
- Define arrays and describe the components of arrays.
- Describe the syntax of arrays.
- Explain the power of arrays.
- Describe how to use strings as arrays of characters.
- Introduce repetitive statements that are available in C/AL.
- Use arrays and repetitive statements in a page.
- Describe the WITH statement, record variables, and the
syntax of the WITH statement.
Module 7: C/AL Functions
This module explains C/AL functions.
Lessons
- Functions and Parameters
- Review Built-in Functions
- Data Access Functions
- Sorting and Filtering Functions
- Data Manipulation Functions
- Working with Fields
- Using Interaction Functions
- Other Common C/AL Functions
- Create Custom Functions
- Local Functions, Variables and the EXIT Statement
Lab : Create Custom Functions
- Create Functions
- Add Action to Page
- Add Code to Functions
After completing this module, you'll be able to:
- Explain the concepts of functions and parameters.
- Explain the C/AL Symbol Menu.
- Describe the use and syntax of data access, filtering, and
manipulation functions.
- Describe the use and syntax of user interaction functions.
- Describe the use and syntax of string functions.
- Describe the use and syntax of system functions.
- Describe the use and syntax of date functions.
- Describe the use and syntax of number functions.
- Describe the use and syntax of array functions.
- Describe the use and syntax of several other important
functions.
- Provide an overview of the benefits of creating custom
functions.
- Explain the concepts of local functions and local variables.
- Create custom functions in a page and call the functions
from Actions.
Module 8: Reports
This module explains the concept of reports and report
components.
Lessons
- Report Fundamentals
- Report Design Process
- Design the Data Model
- Create a Data Model
- Design the Layout
- The Request Page Designer
- Design the Request Options Page
- Grouping and Totaling
- Add Advanced Features
Lab : Create a Basic Report
After completing this module, you'll be able to:
- Explain the concepts of reports and report components.
- Provide an overview of different report types and their
characteristics.
- Describe the difference between the logical and the visual
design of reports and introduce Report Designer.
- Describe the logical design of a report.
- Create the data model for a new report by defining data
items in the Report Dataset Designer.
- Describe the visual design of a report and introduce
Microsoft Visual Studio Report Designer.
- Design the report layout.
- Introduce Request Page Designer.
- Design the Request Options page.
- Explain the concepts of grouping and totaling in a report.
- Create a grouping and totaling for a report.
- Add advanced features to a report.
Module 9: XMLports
This module explains the fundamentals of XMLports and its
components.
Lessons
- XMLport Fundamentals
- Design XMLports
- Importing and Exporting Plain Text
- Using XMLports in C/AL Code
Lab : Create an XMLport to Export XML Data
- Create an XMLport for export to the XML document
Lab : Create an XMLport to Export Variable Text
- Create an XMLport for Export to the Variable Text Document
After completing this module, you'll be able to:
- Describe the fundamentals of an XMLport and its components.
- Review how to design XMLports.
- Explain the Request Page functionality.
- Describe the process of using XMLports from C/AL code.
- Create XMLports for export and import with XML format.
- Create XMLports for export and import with fixed and a
variable text format.
Module 10: Codeunits
This module explains the concepts of codeunits.
Lessons
- Codeunit Fundamentals
- Design Codeunits
- Use Codeunits
- SMTP
After completing this module, you'll be able to:
- Explain the concepts of codeunits.
- Provide an overview of designing codeunits.
- Provide an overview by using codeunits.
- Define variables and functions in a codeunit.
- Use the SMTP Mail codeunit.
Module 11: Microsoft .NET Framework Interoperability
This module explains the .NET Interoperability features
Lessons
- The DotNetDataType
- Datatype Mapping and Assignment
- .NET Framework Interoperability C/AL functions
- Streaming
Lab : Use a Dictionary Object
- Declare and Instantiate a Dictionary
- Populate the dictionary
After completing this module, you'll be able to:
- Explain the .NET Interoperability features.
- Describe the concept of constructors.
- Communicate between client-side and server-side objects.
- Describe how to respond to events that are raised by .NET
objects.
- Examine mapping between C/AL and .NET data types.
- Review the most important C/AL functions for managing .NET
objects.
- Use arrays, collections, and enumerations.
- Explain how to stream data between C/AL and .NET objects
Module 12: Queries
This module introduces the query object type by explaining
various use cases for queries: using queries in charts, in OData web services,
and accessing them programmatically from C/AL.
Lessons
- Query Design
- Accessing Queries from C/AL
- Advanced Query Concepts
Lab : Using a Query from a Chart
- Creating a query
- Creating a chart
- Adding the chart to the Role Center
Lab : Using Queries in C/AL
- Create a codeunit which uses a query
After completing this module, you'll be able to:
- Present the Query Designer and its features.
- Explain the principles of the query design process.
- Show how to select, join, filter, aggregate, and order data.
- Show how to access queries from C/AL code.
- Explain how to export data from queries.
Course 80437A: C/Side Solution Development in Microsoft Dynamics NAV 2013
Module 1: Data and Process Model
This module explains the standard application functionality in Microsoft Dynamics NAV 2013 and it discusses the importance of following the same standards in all customisations. Table Types and Characteristics.
- Standard Data Model
- Standard Process Model
After completing this module, you'll be able to:
- Explain the different table types and their characteristics.
- Present the standard data model and introduce the data-related business logic.
- Present the standard process model that governs the transactions in Microsoft Dynamics NAV 2013.
Module 2: Master Tables and Pages
This module explains what is involved in solution development to meet customer requirements.
- Prerequisite Knowledge
- Participants
- Instructors and Rooms
- Seminars
Customise Resource Tables and Pages
- Customise Resource Table
- Customise Resource Card
- Customise Resource List
Creating Seminar Tables and Pages
- Append the Table Name Option in the Comment Line table
- Create the Seminar Tables
- Create the Seminar Pages
After completing this module, you'll be able to:
- Explain the master table and page standards.
- Work with table event triggers.
- Work with complex data types and their member functions.
- Explain the multilanguage functionality.
- Define the strategy for implementing Customers and Participants.
- Create the tables to manage the seminar rooms.
- Create instructor data management.
- Create seminar data management.
Module 3: Documents
This module explains the purpose and benefits in using documents to enter transactions in Microsoft Dynamics NAV 2013.
- Prerequisite Knowledge
- Registrations
- Reviewing the Table Code
Importing, Reviewing, and Completing the Seminar Registration Tables
- Import the Starter Objects
- Review the Seminar Registration Header Table
Create Seminar Registration Pages
- Import and Review the Pages
- Completing the Document Pages
After completing this module, you'll be able to:
- Import and export objects as text files.
- Support multilanguage functionality.
- Use document pages.
- Use virtual tables.
- Use temporary tables.
- Review the various types of tables.
- Review different page and table C/AL functions.
- Create additional tables and pages to maintain registrations.
Module 4: Posting
This module explains the posting routine.
- Prerequisite Knowledge
- Posting Seminar Registrations
Reviewing and Completing the Journal and Ledger Tables
- Reviewing the Import File Contents and Importing the Objects
- Reviewing the Seminar Journal Line Table
- Reviewing Other Tables
- Customise the Source Code Setup Table and Page
Creating Codeunits and Pages for Seminar Journal Posting
- Create the Seminar Jnl.-Check Line Codeunit
- Create the Seminar Jnl.-Post Line Codeunit
- Create the Seminar Ledger Entries Page
- Create the Seminar Reg.-Show Ledger Codeunit
- Create the Seminar Registers Page
Creating the Tables and Pages for Posted Registration Information
- Create the Posted Registration Tables
- Import the Posted Registration Pages
Modifying Tables, Pages, and Codeunits for Resource Posting
Creating the Codeunits for Document Posting
- Complete the Seminar-Post Codeunit
- Enable Posting from the Seminar Registration Pages
After completing this module, you'll be able to:
- Explain the working and posting tables.
- Explain the posting routines and their relationships.
- Create journal posting routines.
- Create document posting routines.
- Present the best practices for documenting changes to existing objects.
- Program for minimum effect on the application.
Module 5: Feature Integration
This module explains the integration of custom features into standard functionality to provide a seamless and familiar experience to the users.
- Prerequisite Knowledge
- Seminar Feature Integration
- Navigate Integration
Integrating Seminar Features
- Customise Seminar Registration Master Pages
Changing Objects to Integrate with Navigate
- Customise Tables
- Customise the Navigate Page
- Customise Pages
After completing this module, you'll be able to:
- Integrate previously created Seminar Management module features with one another.
- Explain the architecture of the Navigate feature.
- Extend the Navigate functionality to enable finding posted seminar information.
- Enable easier searching for information by adding Navigate functionality to Seminar Management pages.
- Enable looking up Seminar Management information from standard application areas.
Module 6: Reporting
This module explains reporting principles.
- Prerequisite Knowledge
- Reporting Lab Overview
- Participant List Reporting
- Invoice Posting Batch Job
Creating the Seminar Participant List
- Part A: The Report Dataset
- Part B: The Report Layout
- Part C: Report Selections Table and Page
- Part D: Testing
Creating the Invoice Posting Batch Job
Module 7: Statistics
This module explains the different types of statistics in the standard application.
- Prerequisite Knowledge
- Seminar Statistics
Creating FlowFields for Sums
- Implement FlowFields for sums in the Seminar solution
Creating the Seminar Statistics Page
- Implement a Statistics Page
After completing this module, you'll be able to:
- Create a page that calculates price sums efficiently.
- Make the page available from the Seminar pages.
- Use FlowFilters to easily calculate statistics for different time periods.
Module 8: Dimensions
This module explains the importance of dimensions and their use throughout the standard application and accompany all transactional data and process.
- Prerequisite Knowledge
- Integrating Seminar Management with Dimensions
Integrating with Dimension Management
- Extending Master Data with Dimensions
- Extending Documents with Dimensions
- Extending Ledger Entries and Posting Process with Dimensions
After completing this module, you'll be able to:
- Describe Global, Shortcut, and Budget dimension types and their functions.
- List the basic rules of Dimension Setup.
- Present the dimension management data and process models.
- Implement dimensions on the master record level.
Module 9: Role Tailoring
This module explains the importance of user roles and profiles in Microsoft Dynamics NAV 2013.
- Prerequisite Knowledge
- Seminar Manager Role Center
- MenuSuite Object Type
- Seminar Management Department Page
Create the Seminar Manager Role Center
- Seminar Activity Page
- My Seminars Page
- The Role Center Page
Create Seminar Management Department Page
- Create and Design the MenuSuite
After completing this module, you'll be able to:
- Define the components of the RoleTailored user interface.
- Explain the structure, purpose, and functionality of a Role Center-type page.
- Create the Seminar Manager Role Center page.
- Describe the functionality of the Departments page and the MenuSuite object type.
- Integrate the Seminar Management department into the Departments page.
Module 10: Interfaces
This module explains how interfacing with features or applications outside Microsoft Dynamics NAV is a frequent requirement. It also describes the different types of interfacing features that are present in Microsoft Dynamics NAV.
- Prerequisite Knowledge
- Email Confirmation
Create Email Confirmations
- Import the Setup Table and Page
- Verify the Configuration
- Create the Codeunit
After completing this module, you'll be able to:
- Explain how to use Automation and OCX to perform tasks with other applications.
- Describe file handling functions to import or export data.
- Design and implement email capability.
Module 11: Web Services
This module explains what web services are and how they are used in Microsoft Dynamics NAV 2013.
- Prerequisite Knowledge
- Registration Web Service
Creating a Web Service
- Customise the Objects
- Configure and Test the Web Service
- Extend the ScheduledSeminar Web Service with an Extension Codeunit
Create a Windows Forms Application to Test the Web Service
- Create a new Windows Forms Application
After completing this module, you'll be able to:
- Describe Microsoft Dynamics NAV 2013 Web services architecture.
- Explain the protocols that Microsoft Dynamics NAV 2013 uses for Web services.
- Evaluate the benefits of Web services over other integration options in Microsoft Dynamics NAV.
- Explain how to expose codeunit, page, and query objects as Web services.
- Consume Web services from external applications.
Module 12: Testing and Debugging
This module explains testing practices and presents the test-driven development (TDD) approach followed by Microsoft.
- Prerequisite Knowledge
- Testing Seminar Management
- Debugging
Create Seminar Management Unit Tests
- Import the Testing Framework
- Create the Unit Tests
- Run Unit Tests
After completing this module, you'll be able to:
- Demonstrate the testing features of Microsoft Dynamics NAV 2013.
- Explain the test codeunits, test functions, and handler functions.
- Describe how to automate user interface testing.
- Explain the functionality and purpose of test runner codeunits.
- Develop a unit testing framework for the Seminar Management solution.
- Describe the Debugger functionality and features.
- Demonstrate the debugging process.
Module 13: Optimising for SQL Server
This module explains the SQL Server for Microsoft Dynamics NAV 2013.
- SQL Server for Microsoft Dynamics NAV
- Representation of Microsoft Dynamics NAV Tables and Indexes in SQL Server
- Collation Options
- SQL Server Query Optimiser
- Optimising a Microsoft Dynamics NAV Application
- Data Access Redesign
- C/AL Database Functions and Performance on SQL Server
- Bulk Inserts
- Locking, Blocking, and Deadlocks
- SIFT Data Storage in SQL Server
- SQL Server Profiler
Analyse Index Usage
- Use the Index Information Query to identify and disable unused indexes
Optimise C/AL Code
- Analyse and improve the C/AL code and corresponding SQL statements
After completing this module, you'll be able to:
- Explain the advantages of SQL Server for Microsoft Dynamics NAV 2013.
- Work with tables and indexes.
- Use collation options and descriptions.
- Explain SQL Server Query Optimiser.
- Explain the areas within Microsoft Dynamics NAV that can be optimised.
- Explain how the Microsoft Dynamics NAV database driver enables the Microsoft Dynamics NAV clients to communicate with SQL Server.
- Understand the performance effect of locking, blocking and deadlocks.
- Understand how SIFT data is stored in SQL Server.
Module 14: Appendix
This module contains reference information about the case study that is implemented throughout the course.
- CRONUS International Ltd.
- Functional Requirements
- Content Structure
Function Testing
- Function Testing: Master Tables and Pages
- Function Testing: Documents
- Function Testing: Posting
- Function Testing: Feature Integration
- Function Testing: Dimensions
- Function Testing: RoleTailoring
After completing this module, you'll be able to:
- Present the case study for the CRONUS International Ltd. implementation project.
- Provide test scripts for function testing of customised functionality