You are on page 1of 56

80730AE: Development Basics for

Microsoft Dynamics AX Test Your


Knowledge Questions and Answers

Contents
QUESTIONS ................................................................................................................................................. 3
Module 1: Introduction to Visual Studio .................................................................................................... 3
Module 2: Architecture .............................................................................................................................. 3
Module 3: Labels and Resources ................................................................................................................ 4
Module 4: Base Enumerations.................................................................................................................... 4
Module 5: Extended Data Types ................................................................................................................ 5
Module 6: Tables........................................................................................................................................ 5
Module 7: Table Indexes ............................................................................................................................ 6
Module 8: Table Relations.......................................................................................................................... 6
Module 9: Form Patterns ........................................................................................................................... 7
Module 10: Form Creation ......................................................................................................................... 7
Module 11: Menus ..................................................................................................................................... 8
Module 12: X++ Overview ......................................................................................................................... 8
Module 13: Classes .................................................................................................................................... 9
Module 14: Database Manipulation ......................................................................................................... 12
Module 15: Exception Handling ............................................................................................................... 15
Module 16: Security Basics ....................................................................................................................... 17
Module 17: Introduction to Advanced Topics .......................................................................................... 18
ANSWERS .................................................................................................................................................. 19
Module 1: Introduction to Visual Studio .................................................................................................. 19
Module 2: Architecture ............................................................................................................................ 20
Module 3: Labels and Resources .............................................................................................................. 21
Module 4: Base Enumerations.................................................................................................................. 22
Module 5: Extended Data Types .............................................................................................................. 24
Module 6: Tables...................................................................................................................................... 25
Module 7: Table Indexes .......................................................................................................................... 26
Module 8: Table Relations........................................................................................................................ 27
Module 9: Form Patterns ......................................................................................................................... 29
Module 10: Form Creation ....................................................................................................................... 31
Module 11: Menus ................................................................................................................................... 32
Module 12: X++ Overview ....................................................................................................................... 33
Module 13: Classes .................................................................................................................................. 36
Module 14: Database Manipulation ......................................................................................................... 41
Module 15: Exception Handling ............................................................................................................... 48
Module 16: Security Basics ....................................................................................................................... 52
Module 17: Introduction to Advanced Topics .......................................................................................... 54
QUESTIONS
Module 1: Introduction to Visual Studio
1. TRUE OR FALSE. A Visual Studio project can belong to more than one model.
a) True
b) False

2. What is a Dynamics AX model?


a) A Visual Studio project.
b) A collection of elements (metadata/source files) that represent a distributable
software solution.
c) A file used to deploy customizations to a production environment

3. What does an elements XML file contain?


a) Only metadata about the element
b) Only source code for the element
c) Metadata and source code for the element
d) Metadata and source code for the element and all related elements

4. Which operation forces a build of all elements, regardless of whether they have changed
or not?
a) A project build
b) A model build
c) A project rebuild

5. How can you visualize elements organized by model (Model View)?


a) By going to the View menu on the toolbar and selecting Model View
b) By right-clicking on the AOT node in the Application Explorer and selecting
model view
c) By right-clicking any model and selecting model view
d) By navigating to the AX menu and selecting model view

Module 2: Architecture
1. TRUE or FALSE. Model stores are represented as a set of folders and XML artifacts.
a) True
b) False

2. Lifecycle Services and Microsoft Azure are services that relate to which architecture
component in Dynamics AX?
a) Server Architecture
b) Application Stack
c) Virtual Architecture
d) Cloud Architecture

Module 3: Labels and Resources


1. Which of the following are valid types of resource in Dynamics AX?
a) System memory and CPU
b) A data structure that stores textual information
c) Part of a label file
d) Pictures or icons stored in the system

2. TRUE or FALSE. Labels can have multiple values depending on language settings.
a) True
b) False

3. Which scenario best describes when labels should be created and used?
a) For all properties and variables that are text strings visible to application users.
b) Only for the properties and variables that are text strings visible to application
users that require additional clarity.
c) Only for the properties and variables that are text strings visible to application
users that are used across multiple companies.
d) Typically for the properties and variables that are text strings visible to
application users that are also used with multiple languages.

Module 4: Base Enumerations


1. How are base enumerations represented and stored in the database?
a) As a literal string value
b) As a numerical value
c) As an alphabetical character
d) None of the above

2. TRUE or FALSE. The default first literal value or option in an enumeration is internally
represented by the number 1.
a) True
b) False

3. Which of the following are examples of field types where a base enumeration should be
used? (Select all that apply)
a) A posting type field
b) A transaction date field
c) A sales order status field
d) ABC Codes to rate customers, vendors or items
Module 5: Extended Data Types
1. TRUE OR FALSE: Extended Data Types (EDTs) are based on primitive data types and also
have additional properties set.
a) True
b) False

2. TRUE OR FALSE. You should use extended data types whenever possible.
a) True
b) False

3. Which of the following are benefits of using EDTs? (Select all that apply)

a) They are more easily compiled and transferrable


b) Reusability
c) Code is easier to read
d) Inherited properties and consistency

Module 6: Tables
1. Which two key properties work together to control table inheritance?
a) The Support Inheritance and Table Type properties
b) The Table Type and Extends properties
c) The Extends and Support Inheritance properties
d) The Allow Inheritance and Extends properties

2. What are the two main types of temporary tables?


a) Regular and TempDB
b) Inherited table and TempDB
c) Regular and InMemory
d) InMemory and TempDB

3. TRUE or FALSE. If a modification is made to a field group, such as a new field being
added, any forms that contain that field group will automatically update to reflect the
new addition.
a) TRUE
b) FALSE

4. What kind of data can be found in the tables in Dynamics AX? (Select all that apply)

a) Aggregated analytical data


b) Data, such as system settings and parameters
c) Business and transaction data
5. TRUE or FALSE. Queries are reusable elements that can contain only one table as a data
source.
a) TRUE
b) FALSE

Module 7: Table Indexes


1. TRUE OR FALSE. The order of the columns in an index is not important.
a) True
b) False

2. TRUE or FALSE. It is a best practice to always specify a clustered index.


a) TRUE
b) FALSE

3. Which of the following are valid types of table indexes used in Dynamics AX? (Select all
that apply).

a) Primary Index
b) Partial Index
c) Clustered Index
d) Non-clustered Index

Module 8: Table Relations


1. Which of the following values for the On Delete property for a relation specifies to only
permit deletion of records in a table when there is nothing that relates to it in another
table?
a) Restricted
b) Cascade
c) Cascade + Restricted
d) None

2. TRUE or FALSE. It is a best practice to define the relation on the table holding the
Foreign Key.
a) True
b) False

3. Which two of the following types of relations can only be created on numeric fields?
a) Normal relation
b) Field fixed relation
c) Related field fixed relation
d) Foreign Key Relation

Module 9: Form Patterns


1. TRUE or FALSE. Form patterns are applied to a forms design node, while form sub-
patterns are applied to certain form controls.
a) True
b) False

2. Which form pattern contains a vertical arrangement of tabs and is commonly used for
Setup pages?
a) Simple List
b) Details Master
c) Operational Workspaces
d) Table of Contents

3. The Form Statistics dialog shows which of the following pieces of information? (select all
that apply)
a) The name of the applied form pattern
b) The pattern coverage percentage
c) The number of controls covered by a pattern
d) Total count of controls

4. TRUE or FALSE. The form patterns report is a .csv file that is generated by Visual Studio.
a) True
b) False

5. At what point does a pattern truly get applied on a form or container control?
a) When the user right-clicks on a control, points at Apply pattern, and clicks a
specific pattern.
b) When the form is built or rebuilt.
c) When the form fully complies with the pattern and is saved.
d) When the control the pattern was applied to loses focus in the designer.

Module 10: Form Creation


1. TRUE or FALSE. Button groups can be placed directly underneath the Action Pane control
on a form.
a) True
b) False

2. Setting the Grid Style property value to Auto defaults to what type of Grid Style?
a) List Style
b) Simple Read Only Style
c) Tabular Style
d) Details Style

3. TRUE or FALSE. If a control for a particular form pattern is missing or in the wrong order,
the build operation will still allow the user to run and view the form in the currently
developed state.
a) True
b) False

4. TRUE or FALSE. A form must have a form pattern applied.


a) True
b) False

Module 11: Menus


1. Suppose you want to attach an SSRS report to a menu item, so that when a user clicks
the menu item, the report will display. Which type of menu item should be used for this
purpose?
a) Display
b) Action
c) Output
d) Window

2. TRUE or FALSE. Menus are prebuilt to include all of the accessible items in AX from the
Navigation Pane. However, you can also add your own.
a) True
b) False

Module 12: X++ Overview


1. What are the three main Object-Oriented Programming components?
a) Classes, objects, variables
b) Classes, methods, objects
c) Methods, variables, classes
d) Methods, objects, variables

2. What is the VAR keyword used for in X++?


a) To define a variable that can change data types
b) To define a variable of a type that the compiler will determine.
c) To define an array type variable
d) To define a container

3. What are the three types of messages in an Infolog?


a) Info, Warning, and Error
b) Info, Box, and Warning
c) Dialog, Box, and Error
d) Info, Dialog, and Box

4. Where can variables be declared in X++?


a) Only at the beginning of a method
b) Only at the beginning of a class declaration
c) Anywhere in the code (in-line)
d) Anywhere within a form

5. You have the following X++ statement:

For(int counter = 1; counter<10; counter+=3)


{
Info(strfmt(%1, counter));
Counter--;
}

You need to identify the output of the statement.

What should you identify?


a) 1, 3, 5, 7, 9
b) 1, 4, 7, 10
c) 0, 3, 6, 9
d) 0, 1, 3, 6, 9

Module 13: Classes


1. You are to complete the code needed to create a method within a class. Your method will NOT
return information. Which will best complete this statement?

public __________ myMethodName

a) void
b) null
c) str
d) return

2. You need to instantiate a class. Which will best complete this statement?

dbfmVehicleEntry vehicleEntry = __________ dbfmVehicleEntry();

a) instantiate
b) new
c) public
d) return
3. You need to explicitly assign a text value from a table buffer variable to a string variable named
Make in a method. Which will best complete this statement?

vehicleTable.dbMake ______ Make;

a) =
b) +=
c) ==
d) =+

4. What is the command used to call the method named myMethod in the parent class from the
child class?

Class myChildClass extends myParentBaseClass

Public void myMethod()

_____________();

~~~Body of new code here~~~

a) insert
b) return
c) void
d) super

5. You need to create inheritance within the classes. Which will best complete this statement?

class dbfmTruckVehicleEntry __________ dbfmVehicleEntry

a) void
b) return
c) extends
d) super

6. You are to complete the code needed to create methods in a class with inheritance. You would
like your method accessible to any class in the system. Which will best complete this statement?

____ void getFromDialog()

{
~~~Body of code ~~~

super();

a. public
b. private
c. protected
d. void

7. Which type of class should be created in order to run a job?


a) A runnable class
b) A normal class
c) A static class
d) A public class

8. What is the reserved word in a function that is used when the method does NOT return a
value?
a) Static
b) Null
c) Void
d) Private

9. Which keyword is used in the class declaration to specify class inheritance? This allows
one child class to inherit the methods and variables of another parent class.
a) Inherits
b) Extends
c) Supports
d) Follows

10. TRUE or FALSE. Using the Private keyword for methods allows access to variables within
those methods from within the current class or subclasses.

a) True
b) False

11. TRUE or FALSE. If a child class inherits methods from a parent class, those methods
cannot be overridden or changed in the child class.

a) True
b) False
Module 14: Database Manipulation
1. You are to complete the code needed to read records. Which will best complete this statement?

While _________ fmVehicleMaint join fmVehicle

a) select forUpdate
b) select
c) order by
d) select into

2. You need to find the equivalent value in the second table. Which will best complete this
statement?

where fmVehicle.dbVehicleID _________ fmVehicleMaint.dbVehicleID

a) =+
b) =
c) !=
d) ==

3. You need to output a value to the screen. Which will best complete this statement?

_________(Int2Str(fmVehicleMaint.dbVehicleID)+', '+fmVehicle.dbMake);

a) info::box
b) info
c) warning
d) pause

4. You are to complete the code needed to insert records. You need to ensure that a transaction
completes successfully so that records are inserted into the database. Which will best complete
this statement?

ttsbegin;

fmVehicle.dbVehicleID = 123456789;

fmVehicle.insert();

_________________

a) ttsabort;
b) insert;
c) escape;
d) ttscommit;

5. You are to complete the code needed to insert a given record. Which will best complete this
statement?

fmVehicle.______________

a) insertRecord();
b) insertAll();
c) insert();
d) insertnow():

6. You are to complete the code needed to update records. Which will best complete this
statement?

while select _______ fmVehicle

a) read
b) forupdate
c) lock
d) firstOnly

7. You are to complete the code needed to update records. You would like find the equivalent value.
Which will best complete this statement?

where fmVehicle.dbVehicleID ________ 1

a) ==
b) =
c) +=
d) !=

8. You are to complete the code needed to update records. You need to assign the updated value
for the vehicle model before updating. Which will best complete this statement?

fmVehicle.dbModel _______ "Big Truck";

fmVehicle.update();

a) ==
b) =
c) +=
d) !=
9. You are to complete the code needed to delete records. Which will best complete this
statement?

fmVehicle.________();

a) drop
b) kill
c) deletefrom
d) delete

10. You have tables named salesTable and salesLine. The salesTable contains the following
data:

SalesId RecId
SO0001 1234567
SO0002 1234568
SO0003 1234569

The salesLine table contains the following information:

SalesId RecId
SO0003 2234567
SO0002 2234568
SO0003 2234569

You need to identify the output of the X++ statement:

SalesTable salesTable;
SalesLine salesLine;

while select salesTable


order by salesLine.Recid desc
join salesLine
where salesLine.salesId == salesTable.salesid

{
info(strfmt("%1",salesTable.salesId));
}

What should you identify?


a) SO0001 SO0002 SO0003
b) SO0002 SO0003 SO0003
c) SO0003 SO0002 SO0003
d) SO0002 SO0002 SO0003

11. What are the three keywords associated with the Transaction Tracking System?
a) ttsBegin
b) ttsCommit
c) ttsEnd
d) ttsCommence
e) ttsAbort

12. You must fetch data from CustTable in ascending order based on City. CustTable
contains a field named City. There is a non-unique cluster index named cityIdx on the
City field. What are three possible statements that achieve the goal?

a) Select custTable index cityIdx;


b) Select custTable order by city;
c) Select custTable order by city ASC;
d) Select custTable index city;

13. TRUE or FALSE. When performing a data insert, the insert() command inserts the
contents of a table buffer.
a) True
b) False

14. TRUE OR FALSE. The Update command modifies existing data in a table with the
contents of a table buffer.
a) True
b) False

Module 15: Exception Handling


1. You are to complete the code needed to start exception handling. Which will best complete this
statement?
____________________ error("Please enter a valid VIN number.");

a. exception
b. catch
c. throw
d. info

2. You are to complete the code needed to catch an exception. Which will best complete this
statement?
catch (_________________________)

a. exception::error
b. error
c. ttsAbort
d. dialog::error

3. You are to complete the code needed to execute exception handling. You need to display this
message. Which will best complete this statement?

___________("An error occurred. Please try again");

a. info::exception
b. catch
c. error
d. dialog::error

4. TRUE OR FALSE. The statements provided in the finally clause are executed irrespective
of whether the try block threw any exceptions.
a) True
b) False

5. Which of the following is NOT a valid exception type?


a) Info
b) Deadlock
c) Stop
d) UpdateConflict

6. TRUE OR FALSE. The throw statement initiates a ttsAbort command.


a) True
b) False

7. You need to validate the date and throw an error if the date entered is null or greater
than current system date. Which of X++ statements should you use?

a) If(InputDate != datenull())
{
Throw error(Wrong selection of date);
}
Else If(inputDate > systemDateGet())
{
Throw error(Wrong selection of date);
}

b) If(InputDate == datenull() || inputDate > systemDateGet())


{
Throw error(Wrong selection of date);
}

c) If(InputDate != datenull())
{
Throw error(Wrong selection of date);
If(inputDate > systemDateGet())
{
Throw error(Wrong selection of date);
}
}

d) If(InputDate != datenull())
{
Throw error(Wrong selection of date);
}
If(inputDate > systemDateGet())
{
Throw error(Wrong selection of date);
}

Module 16: Security Basics


1. TRUE OR FALSE. All users must be assigned at least one security role in order to access
AX.
a) True
b) False

2. If the property value for the Needed Permission property on a form control is set to
Create, which other permissions does this level allow?
a) It only allows create access.
b) It allows create and read access only.
c) It allows create, read, and update access.
d) It allows create and delete access.

3. TRUE or FALSE. Roles are specific to a company or organization.


a) True
b) False

4. Which of the following are examples of a privilege? (Select all that apply)
a) Being a system administrator
b) Canceling a payment
c) Managing system security
d) Processing deposits
5. Which of the following can be assigned to a role? (select all that apply)
a) Privileges
b) Additional roles
c) Configuration Keys
d) Duties

Module 17: Introduction to Advanced Topics


1. TRUE OR FALSE. In memory, real-time aggregate models will be the default models used
for analytical purposes, instead of SQL Server Analysis Services Cubes.
a) True
b) False

2. TRUE or FALSE. Tiles and charts created on PowerBI.com can be pinned directly into AX.
a) True
b) False

3. To view one of the default financial reports, such as a Balance Sheet, what needs to be
configured first? (select all that apply)

a) Fiscal calendar and currency


b) Chart of accounts
c) Ledger
d) Proper security for the end-user

4. Which of the following are true about data entities? (Select all that apply).
a) They provide a de-normalized view of tables
b) They can be leveraged for Business Intelligence and Data Migration purposes
c) They can be complex to create
d) Enable Synchronous services (APIs) to be exposed on them

5. What are some of the benefits of using the OData v4 protocol? (Select all that apply)
a) Broad integration across platforms
b) Data migration
c) Supports consumption of data using Power BI
d) Uniform URL conventions
ANSWERS
Module 1: Introduction to Visual Studio
1. TRUE OR FALSE. A Visual Studio project can belong to more than one model.
a) True
b) False

Justification:
b) False: This statement is false. A particular Visual Studio project can only belong
to one model. However, a model may contain many projects.

Related Lesson: Projects, Models, and Packages

2. What is a Dynamics AX model?


a) A Visual Studio project.
b) A collection of elements (metadata/source files) that represent a
distributable software solution.
c) A file used to deploy customizations to a production environment

Justification:
a) A visual studio project is not the same thing as a model. A project belongs to a
model, and a model may have several different projects.
b) Models are a logical grouping of elements that relate to some specific
solution.
c) A model is not used to deploy customizations to a production environment, this
would be a package.

Related Lesson: Terminology and Concepts

3. What does an elements XML file contain?


a) Only metadata about the element
b) Only source code for the element
c) Metadata and source code for the element
d) Metadata and source code for the element and all related elements

Justification:
a) The XML file for an element contains metadata, but not only metadata. It also
includes the elements source code.
b) The XML file for an element contains source code, but not only source code. It
also include metadata about the element.
c) An elements XML file contains both metadata and source code.
d) The XML file does not contain information about related elements.

Related Lesson: Projects, Models, and Packages


4. Which operation forces a build of all elements, regardless of whether they have changed
or not?
a) A project build
b) A model build
c) A project rebuild

Justification:
a) A project build will perform a build on only the elements in a project that have
changed.
b) A model build will perform a build on only the elements that have changed in
particular package where the model resides.
c) Performing a project rebuild will force a build of all elements within the
project, regardless of whether they have changed.

Related Lesson: Performing Builds

5. How can you visualize elements organized by model (Model View)?


a) By going to the View menu on the toolbar and selecting Model View
b) By right-clicking on the AOT node in the Application Explorer and selecting
model view
c) By right-clicking any model and selecting model view
d) By navigating to the AX menu and selecting model view

Justification:
a) Model view cannot be accessed from the View menu
b) To see elements organized by model view, you must open the application
explorer and right-click the AOT node to switch between Classic view and
Model view.
c) Right-clicking a model only allows for customizing, refreshing, or viewing the
models properties.
d) The Model view is not accessible from the Dynamics AX menu.

Related Lesson: Navigation

Module 2: Architecture
1. TRUE or FALSE. Model stores are represented as a set of folders and XML artifacts.
a) True
b) False

Justification:
a) True: This statement is true. The model store is represented as folders, organized
by model. XML files represent different elements within that model and store the
metadata and source code for that element.
Related Lesson: Server Architecture

2. Lifecycle Services and Microsoft Azure are services that relate to which architecture
component in Dynamics AX?
a) Server Architecture
b) Application Stack
c) Virtual Architecture
d) Cloud Architecture

Justification:
a) The server architecture deals with the data access layer and items like batch jobs,
workflow and security.
b) The application stack handles the various application components, such as the
application platform and foundation models.
c) Virtual architecture is not a component of the Dynamics AX architecture.
d) Lifecycle services and Microsoft Azure are components of the Cloud
Architecture. They work together to deploy virtual machines containing
instances of Dynamics AX.

Related Lesson: Cloud Architecture

Module 3: Labels and Resources


1. Which of the following are valid types of resource in Dynamics AX?
a) System memory and CPU
b) A data structure that stores textual information
c) Part of a label file
d) Pictures or icons stored in the system

Justification:
a) System memory and CPU can be considered computer resources, however,
resources in Dynamics AX are entirely different.
b) Resources do not store textual information, but graphical or visual information.
c) Label files only store information about labels.
d) Resources are pictures or icons that are stored in the system. For example, a
product image or a logo is considered a resource in Dynamics AX.

Related Lesson: Resources

2. TRUE or FALSE. Labels can have multiple values depending on language settings.
a) True
b) False

Justification:
a) True: This statement is true. Label files may have multiple values, which represent
the same text or value in different languages.

Related Lesson: Labels

3. Which scenario best describes when labels should be created and used?
a) For all properties and variables that are text strings visible to application
users.
b) Only for the properties and variables that are text strings visible to application
users that require additional clarity.
c) Only for the properties and variables that are text strings visible to application
users that are used across multiple companies.
d) Typically for the properties and variables that are text strings visible to
application users that are also used with multiple languages.

Justification:
a) Labels should be used for all properties and variables that are text strings
visible to application users. They provide clarity, consistency and are fully
searchable. In addition, they support direct translation into other
configured languages and can be updated in one spot.
b) The properties and variables that are text strings visible to application users that
need additional label clarity need labels; however, they should all use labels.
c) The properties and variables that are text strings visible to application users that
are used across companies should use labels, but not ONLY these.
d) The properties and variables that are text strings visible to application users that
might need their name or label translated into another language certainly benefit
from using labels. However, labels should be used in all scenarios where text
strings will be visible to end users.

Related Lesson: Best Practices for Labels

Module 4: Base Enumerations


1. How are base enumerations represented and stored in the database?
a) As a literal string value
b) As a numerical value
c) As an alphabetical character
d) None of the above

Justification:
a) The literal string value is defined in Dynamics AX. This is what end users will see
on forms and reports. However, the literal value is not stored in the database.
b) A different numerical value represents a different choice or literal value for
the enumeration. This relationship is defined in Dynamics AX. The value that
is stored in the database is the numerical value for the enumeration.
c) Enumerations do not use alphabetical characters to represent their literal values,
but rather numerical values.
d) This is not correct as base enumerations are represented by numerical values in
the database.

Related Lesson: Create a Base Enumeration

2. TRUE or FALSE. The default first literal value or option in an enumeration is internally
represented by the number 1.
a) True
b) False

Justification:
b) False: This statement is false. The first literal value in a base enumeration is
represented by the number 0 by default. The second literal or option in the
enumeration is represented by a 1, and so on. These numerical values can also be
changed by a developer, however.

Related Lesson: Create a Base Enumeration

3. Which of the following are examples of field types where a base enumeration should be
used? (Select all that apply)
a) A posting type field
b) A transaction date field
c) A sales order status field
d) ABC Codes to rate customers, vendors or items

Justification:
a) A posting type field typically represents a finite list of posting types. This
can be represented as a radio button or drop down list on the user interface.
A different numerical value can be associated with each literal value of
posting type.
b) A transaction date field can have many different values and would be best
represented by using the date time or UTC Date Time data type, not a base
enumeration.
c) A sales order status field will contain a list of literal values to indicate the
status of sales order. For example, Delivered can be one value. This list of
different sales order statuses is represented by a base enumeration in AX.
d) ABC Codes can store a list of literal values to be represented by a base
enumeration. ABC Codes can be used as rating a system for a customers
credit, for example.

Related Lesson: Create a Base Enumeration


Module 5: Extended Data Types
1. TRUE OR FALSE: Extended Data Types (EDTs) are based on primitive data types and also
have additional properties set.
a) True
b) False

Justification:
a) True: This statement is true. Extended data types extend a primitive data type,
like a string for example. It then has additional properties set on that data type,
such as a set field length.

Related Lesson: Create an EDT

2. TRUE OR FALSE. You should use extended data types whenever possible.
a) True
b) False

Justification:
a) True: This statement is true. EDTs offer many benefits, such as reusability and
easier code navigation and reduce overall work. They should be used whenever
possible.

Related Lesson: Best Practices

3. Which of the following are benefits of using EDTs? (Select all that apply)

a) They are more easily compiled and transferrable


b) Reusability
c) Code is easier to read
d) Inherited properties and consistency

Justification:
a) EDTs are compiled and transferred in the same way as any primitive data type or
system element.
b) EDTs are reusable in the system. For example, the AccountNum EDT can be
used in a variety of areas in the system.
c) EDTs can be referenced in code by name. This makes reading the code easier
to understand and decipher.
d) EDTs have inherited properties and can be used in a hierarchical format. This
way, you can reuse and inherit the properties you desire, and change others.
Reuse of EDTs also provides more consistency.

Related Lesson: Create an EDT


Module 6: Tables
1. Which two key properties work together to control table inheritance?
a) The Support Inheritance and Table Type properties
b) The Table Type and Extends properties
c) The Extends and Support Inheritance properties
d) The Allow Inheritance and Extends properties

Justification:
a) The Table Type property is used only to determine if the table will be temporary
b) The Table Type property is used only to determine if the table will be temporary
c) The Support Inheritance property contains the values Yes and No to
determine if a table supports inheritance. The Extends property is used to
determine which table will be inherited from or extended.
d) Allow Inheritance is not a valid table property.

Related Lesson: Table Inheritance

2. What are the two main types of temporary tables?


a) Regular and TempDB
b) Inherited table and TempDB
c) Regular and InMemory
d) InMemory and TempDB

Justification:
a) A regular table is a normal system table that resides in the database.
b) An inherited table is normal system table, not a temporary table.
c) A regular table is a normal system table that resides in the database.
d) InMemory and TempDB are the two temporary table types. InMemory
tables are held in memory and TempDB tables are created in the database
only when instantiated.

Related Lesson: Temporary Tables

3. TRUE or FALSE. If a modification is made to a field group, such as a new field being
added, any forms that contain that field group will automatically update to reflect the
new addition.
a) TRUE
b) FALSE

Justification:
a) True: This statement is true. Field groups store logical groupings of fields, such as
different fields relating to an address. If fields are added to a field group, and that
field group is used on a form, the form will automatically update to reflect the
new fields that were added to the field group on the table.
Related Lesson: Adding Data Types

4. What kind of data can be found in the tables in Dynamics AX? (Select all that apply)

a) Aggregated analytical data


b) Data, such as system settings and parameters
c) Business and transaction data

Justification:
a) Aggregate analytical data is found in other data structures called aggregate
models. These are business intelligence objects for obtaining aggregated data
b) Data, such as system settings and configuration parameters can be found in
tables. For example, details about a report server or batch job history
details.
c) Business and transaction data will be stored in a majority of the tables. This
includes information like sales orders, journals, employees, and inventory.

5. TRUE or FALSE. Queries are reusable elements that can contain only one table as a data
source.
a) TRUE
b) FALSE

Justification:
b) False: This statement is false. Queries are indeed reusable elements, however,
they may contain many tables as data sources.

Related Lesson: Queries

Module 7: Table Indexes


1. TRUE OR FALSE. The order of the columns in an index is not important.
a) True
b) False

Justification:
b) False: This statement is false. The order of the columns in an index is very
important. The columns in an index should be organized from the most granular
to least granular.

Related Lesson: Index Types

2. TRUE or FALSE. It is a best practice to always specify a clustered index.


a) TRUE
b) FALSE

Justification:
a) True: This statement is true. It is a best practice to specify a clustered index as
this determines how the data in the table will be organized or sorted.

Related Lesson: Best Practices

3. Which of the following are valid types of table indexes used in Dynamics AX? (Select all
that apply).

a) Primary Index
b) Partial Index
c) Clustered Index
d) Non-clustered Index

Justification:
a) A Primary Index is used to provide a unique key to each record in a table.
The allow duplicates property must be set to No to prevent duplicate key
values
b) A partial index is not used in Dynamics AX.
c) A Clustered index is used to determine how data is organized in a table.
d) A Non-Clustered Index is used to quickly reference data found in the
clustered index.

Related Lesson: Index Types

Module 8: Table Relations


1. Which of the following values for the On Delete property for a relation specifies to only
permit deletion of records in a table when there is nothing that relates to it in another
table?
a) Restricted
b) Cascade
c) Cascade + Restricted
d) None

Justification:
a) When the value Restricted is set for the On Delete property, records can
only be deleted from the table when there is nothing that relates to it in
another table.
b) The Cascade property value specifies to delete the selected row in the table,
along with all data in relating tables
c) The Cascade + Restricted property value will perform a cascade delete, meaning
the data will be deleted despite records existing in relating tables. However, a
warning will appear first providing the user with the option to confirm or deny
the cascade delete action.
d) When the property value is set to None, it allows the row in the table to be
deleted, but does nothing to records in related tables.

Related Lesson: Relations

2. TRUE or FALSE. It is a best practice to define the relation on the table holding the
Foreign Key.
a) True
b) False

Justification:
a) True: This statement is true. Defining the relation on the table holding the
primary key is a best practice.

Related Lesson: Best Practices

3. Which two of the following types of relations can only be created on numeric fields?
a) Normal relation
b) Field fixed relation
c) Related field fixed relation
d) Foreign Key Relation

Justification:
a) A normal relation can be created on any field type.
b) A field fixed relation can only be created on a numeric field. A numerical
value must be entered for the Value property of the selected field to act as a
filter.
c) A related field fixed relation can also only be created on a numeric field. A
numerical value must be entered for the Value property of the selected field
to act as a filter.
d) A Foreign Key Relation specifies correspondence between a foreign key field in
the present table and the primary key field in another parent table. It is not
restricted to numerical field types.

Related Lesson: Relations


Module 9: Form Patterns
1. TRUE or FALSE. Form patterns are applied to a forms design node, while form sub-
patterns are applied to certain form controls.
a) True
b) False

Justification:
a) True: The statement is true. Form patterns are applied on the forms design node
and sub-patterns are applied to specific controls within the form. The form
pattern impacts the layout of the entire form, while the sub-pattern impacts a
specific part, such as a tab page or group control.

Related Lesson: Form Patterns and Sub-patterns

2. Which form pattern contains a vertical arrangement of tabs and is commonly used for
Setup pages?
a) Simple List
b) Details Master
c) Operational Workspaces
d) Table of Contents

Justification:
a) A simple list form pattern is typically used to display a list of data for a simple
entity, where there is often less than ten fields. An example of this would be the
Customer Group form.
b) The details master form pattern is commonly used for displaying the data of a
complex entity, such as a customer.
c) The Operational Workspace form pattern requires the Panorama tab style for a
horizontal arrangement; this pattern is used to display data about a specific
activity.
d) The Table of Contents form pattern is commonly used for Setup pages.
Setup pages use the vertical tab style, which has the tabs arranged in a
sequential order on the left pane. An example of this is the Accounts
Receivable parameters form.

Related Lesson: Form Patterns and Sub-patterns

3. The Form Statistics dialog shows which of the following pieces of information? (select all
that apply)
a) The name of the applied form pattern
b) The pattern coverage percentage
c) The number of controls covered by a pattern
d) Total count of controls
Justification:
a) The form statistics dialog shows the name of the form pattern applied to
that form.
b) The form statistics dialog shows the pattern coverage percentage.
c) The form statistics dialog shows the number of form controls that are
covered by a pattern, including both sub-patterns and the form pattern.
d) The form statistics dialog shows the total count of controls on a given form.

Related Lesson: Form Patterns and Sub-patterns

4. TRUE or FALSE. The form patterns report is a .csv file that is generated by Visual Studio.
a) True
b) False

Justification:
a) True: The statement is true. The form patterns report will output as a .csv file and
can be opened in Microsoft Excel to filter and view the different details relating to
forms as well as their applied patterns.

Related Lesson: Check Form Pattern

5. At what point does a pattern truly get applied on a form or container control?
a) When the user right-clicks on a control, points at Apply pattern, and clicks a
specific pattern.
b) When the form is built or rebuilt.
c) When the form fully complies with the pattern and is saved.
d) When the control the pattern was applied to loses focus in the designer.

Justification:
a) A form pattern may be chosen and applied during the development process, but
it is not fully applied until the form is fully compiled and saved with the chosen
pattern applied.
b) Building or rebuilding the form element builds the .NET module that the
element is included in; however, the pattern is not fully applied until a compile
and save is performed.
c) You must first set the form you want to preview as the Startup object for
the project. This can be done by right-clicking the form from the Solution
Explorer and selecting Set as startup object. Then, you may proceed with
building and running the project by pressing CTRL + F5.
d) A rebuild of the form will cause the element to be rebuilt and compiled and
checked for errors; however, it will not run the form unless it is set as the startup
object first.

Related Lesson: Check Form Pattern


Module 10: Form Creation
1. TRUE or FALSE. Button groups can be placed directly underneath the Action Pane control
on a form.
a) True
b) False

Justification:
a) True: The statement is true. Button groups can be placed directly beneath the
Action Pane control on a form. They can also be placed beneath the action pane
tab control.

Related Lesson: Form Controls

2. Setting the Grid Style property value to Auto defaults to what type of Grid Style?
a) List Style
b) Simple Read Only Style
c) Tabular Style
d) Details Style

Justification:
a) The Auto property for Grid Style does not default to the List Style type.
b) The Auto property for Grid Style does not default to the Simple Read Only type.
c) The Auto property for Grid Style defaults to the Tabular Style grid. This is
a commonly used grid type that displays data in a table like format.
d) The Details Style is not a valid Grid Style in Dynamics AX.

Related Lesson: Form Controls

3. TRUE or FALSE. If a control for a particular form pattern is missing or in the wrong order,
the build operation will still allow the user to run and view the form in the currently
developed state.
a) True
b) False

Justification:
b) False: The statement is false. When using a form pattern, you cannot build or
run a form unless all of the control requirements for the pattern are satisfied.

Related Lesson: Adding Elements

4. TRUE or FALSE. A form must have a form pattern applied.


a) True
b) False

Justification:
b) False: The statement is false. A form is not required to have a form pattern.
However, it is a best practice to maintain consistency. When no suitable pattern
is found, Custom can be used to indicate that no pattern fits.

Related Lesson: Create a Form

Module 11: Menus


1. Suppose you want to attach an SSRS report to a menu item, so that when a user clicks
the menu item, the report will display. Which type of menu item should be used for this
purpose?
a) Display
b) Action
c) Output
d) Window

Justification:
a) The display menu item type is used to present forms or dialog objects.
b) The action menu item type is used to perform some kind of job. For example, a
process that will update some records in the database.
c) The output menu item is the one used for printing a result, such as an SSRS
report.
d) The window menu item type does not exist in Dynamics AX.

Related Lesson: Creating Menu Items

2. TRUE or FALSE. Menus are prebuilt to include all of the accessible items in AX from the
Navigation Pane. However, you can also add your own.
a) True
b) False

Justification:
a) True: This statement is true. Menus are prebuilt in the navigation pane and
contain all of the default accessible items in AX, such as the Accounts Receivable
menu. A developer can also create new or extend existing menus.

Related Lesson: Creating Menus


Module 12: X++ Overview
1. What are the three main Object-Oriented Programming components?
a) Classes, objects, variables
b) Classes, methods, objects
c) Methods, variables, classes
d) Methods, objects, variables

Justification:
a) Classes and objects are two of three components of object oriented
programming. While variables are used in programming, they are not considered
a component of object oriented programming.
b) The three pillars of object oriented programming are classes, methods and
objects. Classes are blueprints that describe the objects derived from them.
A class is a model classification of the methods and variables in a specific
type of object. Objects are instances of classes. Each instance has data
members and logic (methods) defined in the class. Methods are functions
(subroutines) associated with a class or an object. An object implements its
behavior with methods.
c) Methods and classes are two of the three pillars. However, variables are not
considered one of the three main components of object oriented programming.
They are used in many programming languages, but are not object oriented
programming specific.
d) Methods and objects are two of the three pillars. However, variables are not
considered one of the three main components of object oriented programming.
They are used in many programming languages, but are not object oriented
programming specific.

Related Lesson: Code Editor

2. What is the VAR keyword used for in X++?


a. To define a variable that can change data types
b. To define a variable of a type that the compiler will determine.
c. To define an array type variable
d. To define a container

Justification:
a) A variable cannot change data type without explicitly changing or converting the
data type with a code statement.
b) The VAR keyword allows a variable to be defined without explicitly
specifying the type; the compiler will automatically determine the data type
based on the mandatory initialization expression.
c) An array can be declared using a data type. For example, int myArray[10],
declares an array of type integer with up to 10 values.
d) A container is declared using the container keyword. For example, container
myContainer. A container can store variables of mixed data types.

Related Lesson: Variable Declaration

3. What are the three types of messages in an Infolog?


a. Info, Warning, and Error
b. Info, Box, and Warning
c. Dialog, Box, and Error
d. Info, Dialog, and Box

Justification:
a) Info, Warning and Error are the three types of output supported by the info
log.
b) Info and Error are correct. However, the box output is not based from the Info
Log output, but from the Box output type.
c) Error is a correct choice. However, the box output is from the output type of Box,
and the Dialog output is from the output type of Dialog button.
d) Info is a correct output type for the Info Log type. However, Dialog and Box
outputs are of the Dialog button and Box output types, not the Info Log output
type.

Related Lesson: Basic Syntax

4. Where can variables be declared in X++?


a. Only at the beginning of a method
b. Only at the beginning of a class declaration
c. Anywhere in the code (in-line)
d. Anywhere within a form

Justification:
a) Variables can be declared at the beginning of a method. However, they may be
declared elsewhere as well.
b) Variables may be declared at the beginning of a class declaration. However, they
may be declared elsewhere as well.
c) Variables can be declared anywhere in the code for small scopes. In-line
variable declaration means you can declare and define the variable in a
block of code as you plan to use it.
d) Variables are not declared on forms themselves.

Related Lesson: Variable Declaration

5. You have the following X++ statement:

For(int counter = 1; counter<10; counter+=3)


{
Info(strfmt(%1, counter));
Counter--;
}

You need to identify the output of the statement.

What should you identify?


a) 1, 3, 5, 7, 9
b) 1, 4, 7, 10
c) 0, 3, 6, 9
d) 0, 1, 3, 6, 9

Justification:
a) 1, 3, 5, 7, 9 is the correct output. We declare the counter variable of type int
inside the For loop and initialize its value to 1. The second clause of the For
loop tells it to continue looping as long as the condition is met that the
counter variable is less than 10. The third clause specifies how the counter
will increment or change each time the loop executes. In the block of code,
we also decrement the counter by 1 using the syntax counter- -.
Therefore, we observe the output, which prints at 1 and increases by 2 each
time.
b) The output will not increase by 3 each time due to the counter variable being
decremented by one inside the block of code, after it prints. The upper limit for
the For loop is 9 since the condition is <10; therefore, the value of 10 would
not print.
c) The first value must be 1, since that is what the counter is initialized to, and
enters the loop with that value. We would not observe a value of 0 with this code.
d) The first value must be 1, since that is what the counter is initialized to, and
enters the loop with that value. We would not observe a value of 0 with this code.

Related Lesson: Basic Syntax


Module 13: Classes
1. You are to complete the code needed to create a method within a class. Your method will NOT
return information. Which will best complete this statement?

public __________ myMethodName

a) void
b) null
c) str
d) return

Justification:
a) The void keyword is used before a method name to indicate that the given
method does not return a value.
b) The null keyword is not used for specifying whether a method returns a value or
not.
c) Placing the str keyword before the method name implies that it will be
returning a value of type string.
d) Return is not a valid keyword to be used before a method.

Related Lesson: Create a Base Class

2. You need to instantiate a class. Which will best complete this statement?

dbfmVehicleEntry vehicleEntry = __________ dbfmVehicleEntry();

a) instantiate
b) new
c) public
d) return

Justification:
a) Instantiate is not a valid keyword.
b) The new keyword is used to instantiate a class.
c) The public keyword is used to determine the scope and accessibility of a
method, and is not used in instantiation of classes.
d) Return is not a valid keyword to instantiate a new class.

Related Lesson: Create a Base Class

3. You need to explicitly assign a text value from a table buffer variable to a string variable named
Make in a method. Which will best complete this statement?

vehicleTable.dbMake ______ Make;

a) =
b) +=
c) ==
d) =+

Related Lesson: Create a Base Class

4. What is the command used to call the method named myMethod in the parent class from the
child class?

Class myChildClass extends myParentBaseClass

Public void myMethod()

_____________();

~~~Body of new code here~~~

a) insert
b) return
c) void
d) super

Justification:
a) Insert is not a keyword, but a method on tables. It is not used to call an override
method, but to insert data into a table .
b) Return is not a valid keyword used in inheritance scenarios.
c) The void keyword is used before a method. This indicates that a given method
does not return a value. The void keyword is already used before myMethod().
d) Super() is the correct call to ensure that the method of the same name,
myMethod is called.

Related Lesson: Class Inheritance

5. You need to create inheritance within the classes. Which will best complete this statement?

class dbfmTruckVehicleEntry __________ dbfmVehicleEntry

a) void
b) return
c) extends
d) super
Justification:
a) The void keyword is only used with methods. This indicates that a given method
does not return a value.
b) The return keyword is not a valid keyword to be used with classes.
c) The extends keyword is used in the class declaration to determine which
class the given class is extending or inheriting from.
d) The super keyword is called within a method and indicates whether or not to call
the method of the same name from the parent class.

Related Lesson: Class Inheritance

6. You are to complete the code needed to create methods in a class with inheritance. You would
like your method accessible to any class in the system. Which will best complete this statement?

____ void getFromDialog()

~~~Body of code ~~~

super();

a. public
b. private
c. protected
d. void

Justification:
a) The public keyword is used to make the given method accessible from any
other class in the system.
b) The private keyword only allows access from within the scope of the given
method. This prevents accidental or unintentional re-use.
c) The protected keyword allows access to any subclasses that may extend the
class that the method resides in. However, it prevents access from all other
outside object calls.
d) The void keyword is already explicitly stated in the code snippet, and should not
be used twice. This indicates that the given method does not return a value. The
void keyword is used in conjunction with the scoping keywords: private, public
and protected.

Related Lesson: Best Practices

7. Which type of class should be created in order to run a job?


a) A runnable class
b) A normal class
c) A static class
d) A public class

Justification:
a) A runnable class is a class that can be used as a startup object in a project. It
contains a static main method. The main method is the entry point of your
job.
b) A normal class should not be used when testing random code samples
c) A static class is not a valid class
d) A public class implies that the methods from the class can be accessed anywhere.
However, to test code, you should use a runnable class that contains a static main
method.

Related Lesson: Methods

8. What is the reserved word in a function that is used when the method does NOT return a
value?
a) Static
b) Null
c) Void
d) Private

Justification:
a) A static method is a method that does not require object instantiation, but this
does not determine whether or not a value will be returned.
b) A method of type null is not a valid method in Dynamics AX.
c) Void is the keyword used to specify that nothing should be returned from
this method.
d) The Private keyword determines the scope or accessibility of a methods variables
and does not determine what, if anything should be returned.

Related Lesson: Methods

9. Which keyword is used in the class declaration to specify class inheritance? This allows
one child class to inherit the methods and variables of another parent class.
a) Inherits
b) Extends
c) Supports
d) Follows

Justification:
a) Inherits is not a valid keyword in X++ for class inheritance
b) Extends is the correct keyword to use in the class declaration in order to
specify Class Inheritance. For example, class ChildClass extends
ParentClass
c) Supports is not a valid keyword in X++ for class inheritance
d) Follows is not a valid keyword in X++ for class inheritance

Related Lesson: Class Inheritance

10. TRUE or FALSE. Using the Private keyword for methods allows access to variables within
those methods from within the current class or subclasses.

a) True
b) False

Justification:
b) False: This statement is false. The Private keyword only allows access to variables
within the scope of the current class. Subclasses cannot access these variables.
The Protected keyword should be used to provide access to subclasses as well.

Related Lesson: Best Practices

11. TRUE or FALSE. If a child class inherits methods from a parent class, those methods
cannot be overridden or changed in the child class.

a) True
b) False

Justification:
b) False: This statement is false. A child class that inherits methods from a parent
can override the inherited methods.

Related Lesson: Class Inheritance


Module 14: Database Manipulation
1. You are to complete the code needed to read records. Which will best complete this statement?

While _________ fmVehicleMaint join fmVehicle

a) select forUpdate
b) select
c) order by
d) select into

Related Lesson: Reading Records

Justification:
a) The select forUpdate command indicates that the table buffer will alter the
contents of the table and is typically used for inserting or deleting records, not
simply reading them.
b) The select keyword is used to retrieve and read records.
c) Order by is not used to read records, but rather to order the resulting records
that are returned in the select statement.
d) Select into is not used in X++ to read or retrieve records.

2. You need to find the equivalent value in the second table. Which will best complete this
statement?

where fmVehicle.dbVehicleID _________ fmVehicleMaint.dbVehicleID

a) =+
b) =
c) !=
d) ==

Related Lesson: Reading Records

Justification:
a) The =+ operator is not valid in X++.
b) The = is not used in a where statement to indicate equivalency. It is used when
assigning values to variables, for example.
c) The != operator returns records that are NOT equivalent.
d) The == is a relational operator used in the where statement to determine
equivalency.

3. You need to output a value to the screen. Which will best complete this statement?

_________(Int2Str(fmVehicleMaint.dbVehicleID)+', '+fmVehicle.dbMake);

a) info::box
b) info
c) warning
d) pause

Related Lesson: Reading Records

Justification:
a) Info::box is not a valid output statement.
b) The info keyword is used to output the value(s) to the screen in an
informational display format
c) The warning keyword will create a warning output message.
d) The pause keyword is not supported in Dynamics AX.

4. You are to complete the code needed to insert records. You need to ensure that a transaction
completes successfully so that records are inserted into the database. Which will best complete
this statement?

ttsbegin;

fmVehicle.dbVehicleID = 123456789;

fmVehicle.insert();

_________________

a) ttsabort;
b) insert;
c) escape;
d) ttscommit;

Justification:
a) ttsAbort will prevent the data from being written to the table and roll the
transaction back to the state before the ttsBegin was called.
b) The insert method is called on table to insert data, but it does not control the
transaction tracking system.
c) This is not a valid command used for transaction integrity.
d) This is correct. The ttsCommit command ensures there were no errors
during the insertion process. After the ttsCommit is called, the data will be
written to the given table.

Related Lesson: Data Insert

5. You are to complete the code needed to insert a given record. Which will best complete this
statement?
fmVehicle.______________

a) insertRecord();
b) insertAll();
c) insert();
d) insertnow():

Justification:
a) insertRecord is not a valid method call.
b) InsertAll is not a valid method call.
c) The insert method is the correct method to call to insert a record or records
into the table that the method is being called on.
d) InsertNow is not a valid method call.

Related Lesson: Data Insert

6. You are to complete the code needed to update records. Which will best complete this
statement?

while select _______ fmVehicle

a) read
b) forupdate
c) lock
d) firstOnly

Justification:
a) Read is not a valid keyword to be used in a select statement or to update records.
b) The forUpdate keyword is used in a select statement to indicate the table is
being selected for the purpose of updating or changing data.
c) Lock is not a valid keyword to be used in a select statement or to update records.
d) The firstOnly keyword is used to retrieve only the first record from the table.

Related Lesson: Data Updates

7. You are to complete the code needed to update records. You would like find the equivalent value.
Which will best complete this statement?

where fmVehicle.dbVehicleID ________ 1

a) ==
b) =
c) +=
d) !=

Justification:
a) The == is used as a relational operator between the field and the value of
1 in this example. This returns true when the two expressions are equal.
b) The = operator is an assignment operator. Therefore, it is used when assigning
values to variables. It is not a relational operator.
c) The += is an assignment operator that increments the value of the variable on
the left by the value of the expression on the right.
d) The != operator is a relational operator returns true if the expressions are NOT
equal.

Related Lesson: Data Updates

8. You are to complete the code needed to update records. You need to assign the updated value
for the vehicle model before updating. Which will best complete this statement?

fmVehicle.dbModel _______ "Big Truck";

fmVehicle.update();

a) ==
b) =
c) +=
d) !=

Justification:
a) The == is used as a relational operator. This returns true when the two
expressions are equal, it does not assign any values.
b) The = is the correct operator to use to assign the value of the dbModel
field to the value Big Truck in this example.
c) The += is an assignment operator that increments the value of the variable on
the left by the value of the expression on the right. It does not assign values.
d) The != operator is a relational operator returns true if two expressions are
NOT equal. It does assign values.

Related Lesson: Data Updates

9. You are to complete the code needed to delete records. Which will best complete this
statement?

fmVehicle.________();

}
a) drop
b) kill
c) deletefrom
d) delete

Justification:
a) Drop is not a valid method call on the given table and does not delete records.
b) Kill is not a valid method call on the given table and does not delete records.
c) Deletefrom is not a valid method call on the given table and will not delete
records.
d) The delete method on the table is called when records are to be deleted.

Related Lesson: Data Deletion

10. You have tables named salesTable and salesLine. The salesTable contains the following
data:

SalesId RecId
SO0001 1234567
SO0002 1234568
SO0003 1234569

The salesLine table contains the following information:

SalesId RecId
SO0003 2234567
SO0002 2234568
SO0003 2234569

You need to identify the output of the X++ statement:

SalesTable salesTable;
SalesLine salesLine;

while select salesTable


order by salesLine.Recid desc
join salesLine
where salesLine.salesId == salesTable.salesid

{
info(strfmt("%1",salesTable.salesId));
}

What should you identify?


a) SO0001 SO0002 SO0003
b) SO0002 SO0003 SO0003
c) SO0003 SO0002 SO0003
d) SO0002 SO0002 SO0003

Justification:
a) The code performs a join between the two tables on SalesID, which means only related
records, or records that exists in both locations for that field will be returned. Therefore,
we will not see SO0001 in the output.

b) The three sales order IDs are correct, but they are in the wrong order because the
order of the selects is based on the record ID on the sales line descending - resulting in
SO0003 (highest recID on the lines), then SO0002, then finally SO0003 again (lowest
recID on the lines).

c) The code performs a join between the two tables on SalesID, which means only
related records, or records that exists in both locations for that field will be
returned. Therefore, we will not see SO0001 in the output. We then specify to
order the salesLine table in descending order based on the RecID field. The while
loop will print the SalesID line by line in that order, which would yield the result:
SO0003 SO0002 SO0003.

d) The code performs a join between the two tables on SalesID, which means only
related records, or records that exists in both locations for that field will be returned.
There is only one sales line with SalesID SO0002.

Related Lesson: Data Retrieval

11. What are the three keywords associated with the Transaction Tracking System?
a) ttsBegin
b) ttsCommit
c) ttsEnd
d) ttsCommence
e) ttsAbort

Justification:
a) ttsBegin- You mark the beginning of the transaction with ttsbegin.
b) ttsCommit - You mark the successful end of a transaction with a ttscommit.
c) ttsEnd is not a valid command for the transaction tracking system.
d) ttsCommence is not a valid command for the transaction tracking system.
e) ttsAbort - This can be used as an exception to make a transaction be
aborted and rolled back to its state before the ttsbegin. You insert a
ttsAbort wherever you want this to occur.

Related Lesson: Transaction Integrity Checking


12. You must fetch data from CustTable in ascending order based on City. CustTable
contains a field named City. There is a non-unique cluster index named cityIdx on the
City field. What are three possible statements that achieve the goal?

a) Select custTable index cityIdx;


b) Select custTable order by city;
c) Select custTable order by city ASC;
d) Select custTable index city;

Justification:
a) This statement will select all records from the CustTable organized by the
index titled cityIdx, which is configured on the custTable.
b) This statement selects all records from the custTable and specifies the city
field in the table to order by. The default direction order by is ascending
order.
c) This statement selects all records in the CustTable and specifies to order by
the city field in ascending order. This is the same as the default order. The
order by clause will default to ascending order if none is specified as well.
d) This statement will not work because the index name is not city, but cityIdx.

Related Lesson: Data Retrieval

13. TRUE or FALSE. When performing a data insert, the insert() command inserts the
contents of a table buffer.
a) True
b) False

Justification:
a) True: This statement is true. The insert command is used on a table buffer.

Related Lesson: Data Insert

14. TRUE OR FALSE. The Update command modifies existing data in a table with the
contents of a table buffer.
a) True
b) False

Justification:
a) True: This statement is true. The update() method is called on a table to update
its contents using a table buffer. The data is updated by assigning new values to
the fields.

Related Lesson: Data Updates

Module 15: Exception Handling


1. You are to complete the code needed to start exception handling. Which will best complete this
statement?
____________________ error("Please enter a valid VIN number.");

a. exception
b. catch
c. throw
d. info

Justification:
a) Exception is not a keyword to be used in conjunction with the error output
message. Exception is a system enumeration used to specify the type of
exception.
b) The catch command is used to catch exceptions and uses the system
enumeration exception to indicate which type of exception is to be expected.
c) The throw keyword is used to start exception handling. In the example, it is
followed by the text value that will be displayed for the error message
being thrown.
d) Info is used to display an informational output value to the end user in an info
log, it does initiate error handling.

Related Lesson: Code Statements

2. You are to complete the code needed to catch an exception. Which will best complete this
statement?

catch (_________________________)

a. exception::error
b. error
c. ttsAbort
d. dialog::error

Justification:
a) The system enumeration exception is used in the parenthesis after the
catch statement to specify which type of exception to catch.
b) Error is not used to catch an exception, but rather display an error message to
the user. It is commonly used after the throw keyword.
c) ttsAbort is used in the transaction tracking system to stop a transaction roll back
the changes to the state before the ttsBegin statement was called. It is not used
in catch statements.
d) The Dialog::Error statement is not valid. The dialog object is not an enumeration
and does not contain an error value; therefore, it cannot be used in a catch
statement.

Related Lesson: Code Statements

3. You are to complete the code needed to execute exception handling. You need to display this
message. Which will best complete this statement?

___________("An error occurred. Please try again");

a. info::exception
b. catch
c. error
d. dialog::error

Justification:
a) Info::Exception is not valid as it is not a base enumeration.
b) The catch statement is not used to output a specific message to the end user.
c) The error keyword is used to display an error message to the end user. It is
often preceded by the throw keyword in error handling.
d) Return is not a valid keyword.

Related Lesson: Code Statements

4. TRUE OR FALSE. The statements provided in the finally clause are executed irrespective
of whether the try block threw any exceptions.
a) True
b) False

Justification:
a) True: This statement is true. The finally keyword is used after a try and catch
statement. Anything within that clause will be executed despite any errors that
occurred during the try and catch execution.

Related Lesson: Key Commands

5. Which of the following is NOT a valid exception type?


a) Info
b) Deadlock
c) Stop
d) UpdateConflict

Justification:
a) Info is a valid exception type. It allows you to display an informational exception
in the info log.
b) Deadlock is a valid expectation type. It informs the user of a deadlock situation in
the database.
c) Stop is not a valid exception type. However, there is an exception type of
break, which indicates that the user has pressed the break key.
d) UpdateConflict is a valid exception type. This indicates that an error has occurred
in the optimistic concurrency control, and that the transaction will be retired.

Related Lesson: Exception Types

6. TRUE OR FALSE. The throw statement initiates a ttsAbort command.


a) True
b) False

Justification:
a) True: This statement is true. The throw statement in an error will execute the
ttsAbort command, thereby halting executing.

Related Lesson: Key Commands

7. You need to validate the date and throw an error if the date entered is null or greater
than current system date. Which of X++ statements should you use?

a) If(InputDate != datenull())
{
Throw error(Wrong selection of date);
}
Else If(inputDate > systemDateGet())
{
Throw error(Wrong selection of date);
}

b) If(InputDate == datenull() || inputDate > systemDateGet())


{
Throw error(Wrong selection of date);
}

c) If(InputDate != datenull())
{
Throw error(Wrong selection of date);
If(inputDate > systemDateGet())
{
Throw error(Wrong selection of date);
}
}

d) If(InputDate != datenull())
{
Throw error(Wrong selection of date);
}
If(inputDate > systemDateGet())
{
Throw error(Wrong selection of date);
}

Justification:
a) This statement is incorrect in the initial comparison. It states that if the input date
is not null (that is, it contains a value), then throw an error. This does not meet
the requirement, which states to throw an error if the input date is in fact null.
b) This statement correctly performs the comparison against the input date.
The first comparison checks to see if the input date is equal to null, or if it is
after todays date. If either of these conditions is met, the throw error is
then executed.
c) This statement is incorrect in the initial comparison. It states that if the input date
is not null (i.e. it contains a value), then throw an error. This does not meet the
requirement, which states to throw an error if the input date is in fact null.
d) This statement is incorrect in the initial comparison. It states that if the input date
is not null (that is, it contains a value), then throw an error. This does not meet
the requirement, which states to throw an error if the input date is in fact null.

Related Lesson: Code Statements


Module 16: Security Basics
1. TRUE OR FALSE. All users must be assigned at least one security role in order to access
AX.
a) True
b) False

Justification:
a) True: This statement is true. Every user needs at least one security role assigned
to them in order to access Dynamics AX. For example, system user. A user may
have multiple roles assigned to them as well.

Related Lesson: Security Architecture Overview

2. If the property value for the Needed Permission property on a form control is set to
Create, which other permissions does this level allow?
a) It only allows create access.
b) It allows create and read access only.
c) It allows create, read, and update access.
d) It allows create and delete access.

Justification:
a) The needed permissions property is hierarchy, with read being the weakest and
delete being the strongest. Each level encompasses the permissions below it;
therefore, create access implies more than only create.
b) The needed permissions property is hierarchy, with read being the weakest and
delete being the strongest. Each level encompasses the permissions below it. In
order to create, you must also have access to update.
c) The needed permissions property is hierarchy, with read being the weakest
and delete being the strongest. Each level encompasses the permissions
below it; therefore, create access also implies read and update access.
d) The Create permissions does not allow Delete. The Delete permission is higher in
the hierarchy.

Related Lesson: Security Architecture Overview

3. TRUE or FALSE. Roles are specific to a company or organization.


a) True
b) False

Justification:
b) False: This statement is false. Roles are not specific to a company or organization.
The administrator can still specify a company or organization context for a
particular user in a role, however.
Related Lesson: Security Architecture Overview

4. Which of the following are examples of a privilege? (Select all that apply)
a) Being a system administrator
b) Canceling a payment
c) Managing system security
d) Processing deposits

Justification:
a) A system administrator is a role. Therefore, being a system administrator does
not represent a privilege.
b) Canceling a payment represents permission to perform a specific task in the
system. This is a privilege.
c) Managing system security represents a duty. It encompasses many permissions
or tasks.
d) Processing deposits also represents a specific task. Permission to perform
this task is defined by a privilege.

Related Lesson: Security Architecture Overview

5. Which of the following can be assigned to a role? (select all that apply)
a) Privileges
b) Additional roles
c) Configuration Keys
d) Duties

Justification:
a) A role can be assigned privileges, which are permissions to perform certain
tasks. For example, a system administrator role can have a permission to
add users.
b) Roles cannot be assigned to roles. However, a user may have multiple roles.
c) Configuration Keys are not assigned to a role; they are used to enable or disable
certain features for all users.
d) A duty can also be assigned to a role. A duty corresponds to a business
process and can also contain privileges.

Related Lesson: Security Architecture Overview


Module 17: Introduction to Advanced Topics
1. TRUE OR FALSE. In memory, real-time aggregate models will be the default models used
for analytical purposes, instead of SQL Server Analysis Services Cubes.
a) True
b) False

Justification:
a) True: This statement is true. In memory aggregate models can be created within
the development environment. These models will work with aggregate
measurements and entities to provide business intelligence capabilities, thus
eliminating the need for cubes and complex MDX queries. However, support for
SSAS based aggregate models will be added later to enable migration of existing
MDX code and customized analysis projects with minimum effort.

Related Lesson: Business Intelligence

2. TRUE or FALSE. Tiles and charts created on PowerBI.com can be pinned directly into AX.
a) True
b) False

Justification:
a) True: This statement is true. Visuals created in the PowerBI.com cloud service can
be pinned directly into the AX client. These tiles can also support drill down into
the underlying data.

Related Lesson: Business Intelligence

3. To view one of the default financial reports, such as a Balance Sheet, what needs to be
configured first? (select all that apply)

a) Fiscal calendar and currency


b) Chart of accounts
c) Ledger
d) Proper security for the end-user

Justification:
a) The fiscal calendar and currency must be set up before viewing the financial
reports that come out of the box. These are critical components of financial
reports.
b) A chart of accounts must be set up to use financial reporting. This way,
reports can be broken out my different accounts.
c) A ledger must be configured before using financial reporting. This is where
a majority of financial data will originate from.
d) The end-user must have the correct privileges and duties assigned to them
in order to run the financial reports. For example, they may be assigned the
role of Security Administrator.

Related Lesson: Reporting Services

4. Which of the following are true about data entities? (Select all that apply).
a) They provide a de-normalized view of tables
b) They can be leveraged for Business Intelligence and Data Migration
purposes
c) They can be complex to create
d) Enable Synchronous services (APIs) to be exposed on them

Justification:
a) Data entities provide a de-normalized view of tables. This means data
spanning across multiple tables is now condensed into a single table with
more columns. This allows for easier data migration.
b) Data entities can be configured as aggregate entities and contain measures
that can then be used for business intelligence and reporting purposes. Data
entities will replace the DIXF tool using and be provide a more streamlined
way to achieve data migration.
c) Data entities are not complex to create. There is a data entity wizard that walks
the user through setting up the entity.
d) Data entities allow for synchronous services, such as public APIs. This
includes third party mobile applications as well as the Excel Data Connector
application.

Related Lesson: Data Entities

5. What are some of the benefits of using the OData v4 protocol? (Select all that apply)
a) Broad integration across platforms
b) Data migration
c) Supports consumption of data using Power BI
d) Uniform URL conventions

Justification:
a) OData is a standard protocol for creating and consuming data. OData
applies web technologies such as HTTP and JavaScript Object Notation
(JSON) to provide access to information from various programs.
b) OData itself is not used for data migration purposes. Data entities are used for
this.
c) OData is a supported protocol in Power BI. Power BI can connect to and
create reports based on an OData feed from AX; it also enforces AX security.
d) Uniform URL conventions for filtering and sorting data within the URL itself
is a key feature of the OData protocol. It always for quicker access to
specific information.

Related Lesson: Services and Integration

You might also like