Professional Documents
Culture Documents
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
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
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
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.
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)
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
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)
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
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
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.
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
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
a) void
b) null
c) str
d) return
2. You need to instantiate a class. Which will best complete this statement?
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?
a) =
b) +=
c) ==
d) =+
4. What is the command used to call the method named myMethod in the parent class from the
child class?
_____________();
a) insert
b) return
c) void
d) super
5. You need to create inheritance within the classes. Which will best complete this statement?
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?
{
~~~Body of code ~~~
super();
a. public
b. private
c. protected
d. void
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?
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?
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?
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?
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.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
SalesId RecId
SO0003 2234567
SO0002 2234568
SO0003 2234569
SalesTable salesTable;
SalesLine salesLine;
{
info(strfmt("%1",salesTable.salesId));
}
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?
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
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?
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
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);
}
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);
}
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.
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
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)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
3. Which of the following are benefits of using EDTs? (Select all that apply)
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.
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.
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.
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)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
2. You need to instantiate a class. Which will best complete this statement?
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.
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?
a) =
b) +=
c) ==
d) =+
4. What is the command used to call the method named myMethod in the parent class from the
child class?
_____________();
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.
5. You need to create inheritance within the classes. Which will best complete this statement?
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.
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?
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.
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.
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.
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
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.
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.
a) select forUpdate
b) select
c) order by
d) select into
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?
a) =+
b) =
c) !=
d) ==
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
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.
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.
6. You are to complete the code needed to update records. Which will best complete this
statement?
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.
7. You are to complete the code needed to update records. You would like find the equivalent value.
Which will best complete this statement?
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.
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.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.
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.
10. You have tables named salesTable and salesLine. The salesTable contains the following
data:
SalesId RecId
SO0001 1234567
SO0002 1234568
SO0003 1234569
SalesId RecId
SO0003 2234567
SO0002 2234568
SO0003 2234569
SalesTable salesTable;
SalesLine salesLine;
{
info(strfmt("%1",salesTable.salesId));
}
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.
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.
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.
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.
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.
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.
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.
3. You are to complete the code needed to execute exception handling. You need to display this
message. Which will best complete this statement?
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.
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.
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.
Justification:
a) True: This statement is true. The throw statement in an error will execute the
ttsAbort command, thereby halting executing.
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);
}
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.
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.
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.
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.
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.
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.
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.
3. To view one of the default financial reports, such as a Balance Sheet, what needs to be
configured first? (select all that apply)
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.
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.
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.