Exam4Training

Microsoft MB6-894 Development, Extensions and Deployment for Microsoft Dynamics 365 for Finance and Operations Online Training

Question #1

You create a new class named NewClass1 in a model. NewClass1 manipulates the CustTable table in the protected method modifyCustTable.

NewClass1 has the following code:

class NewClass1

{

public static MainClass1 construct()

{

return new MainClass1();

}

protected void modifyCustTable()

{



}

}

In the same model as NewClass1, you create a new class named NewClass2. You want to run the code in

the modifyCustTable method from the callModifyCustTable method in NewClass2.

What is a correct example of calling the modifyCustTable method from NewClass2?

  • A . {
    public static NewClass2 construct()
    {
    return new NewClass2();
    }
    public void callModifyCustTable()
    {
    NewClass1 newClass1 = NewClass1::construct();
    newClass1.modifyCustTable();
    }
    }
  • B . class NewClass2
    {
    public static NewClass2 contsruct()
    {
    return new NewClass2();
    }
    public void classModifyCustTable()
    {
    newClass1.modifyCustTable();
    }
    }
  • C . class NewClass2 extends NewClass1
    {
    public static NewClass2 contsruct()
    {
    return new NewClass2();
    }
    public void callModifyCustTable()
    {
    this construct().modifyCustTable();
    }
    }
  • D . class NewClass2 extends NewClass1
    {
    public static NewClass2 construct()
    {
    return new NewClass2();
    }
    public void callModifyCustTable()
    {
    this.modifyCustTable();
    }
    }

Reveal Solution Hide Solution

Correct Answer: D
Question #2

You are writing a method to update the Customer reference field on a Sales order table record. You begin

by writing the following code:

class ExampleClass

{

/// <summary>

/// Update the Customer reference field on the Sales orders table.

/// </summary>

/// <param name = "_salesId">

/// Sales order to update

/// </param>

/// <param name = "_customerRef">

/// Updated Customer reference value

/// </param>

public static void updateSalesTableCustomerReference(SalesId _salesId,

CustRef _customerRef)

{

SalesTable salesTable;

}

}

Which statement will complete the method?

  • A . salesTable = SalesTable::find(_salesId);
    salesTable.CustomerRef = _customerRef;
    salesTable.update();
  • B . update_recordset salesTable
    setting CustomerRef=_customerRef
    where salesTable.salesid==_salesId;
  • C . salesTable = SalesTable::find(_salesId, true);
    salesTable.CustomerRef = _customerRef;
    salesTable.update();
  • D . update_recordset salesTable
    setting SalesId = _salesId
    where salesTable.CustomerRef == _customerRef;

Reveal Solution Hide Solution

Correct Answer: C
Question #3

A junior programmer asks you to review an order of operator precedence so that a math operation evaluates appropriately.

Which list is ordered correctly?

  • A . unary, multiplicative, additive, logical, relational
  • B . shift, relational, additive, unary, logical
  • C . unary, multiplicative, additive, relational, logical
  • D . equality, multiplicative, additive, relational, unary

Reveal Solution Hide Solution

Correct Answer: C
C

Explanation:



Question #4

You are an Independent Software Vendor (ISV) developer, and you are reviewing the code in a solution.

During the code review, you see the following:

using (var sr = new System.IO.StreamReader(_inputFilename))

{

var textFromFile = sr.ReadToEnd();

this.processFileDate(textFromFile);

}

Which two statements about the sr and textFromFile variables are true? Each correct answer presents a complete solution.

  • A . The variables storing .Net Framework objects have to be declared using the var keyword.
  • B . The var keyword indicates the variables can store values of any type.
  • C . The variables are valid within the block of code in which they were declared.
  • D . The var keyword infers the type of the variables from their initialization expression.

Reveal Solution Hide Solution

Correct Answer: CD
Question #5

You are writing an X++ method.

You need to perform the same logic for multiple records in the database.

How should you iterate over multiple records in X++?

  • A . Declare a table buffer variable, and then write a "while select" statement to iterate through each record.
  • B . Declare a shared variable for the table, and use the next() method to read each record.
  • C . Declare a RecordSortedList variable for the table, and use the next() method to read each record.
  • D . Declare an enumerator for the table, and call the moveNext() method to read each record.

Reveal Solution Hide Solution

Correct Answer: A
Question #6

You have previously written a PurchOrderActivation class with the following logic:

class PurchOrderActivation

{

private static PurchOrderActivation construct()

{

return new PurchOrderActivation();

}



}

You need to instantiate PurchOrderActivation from a new class named

PurchOrderActivationExtended, which extends PurchOrderActivation.

What are two possible ways to instantiate the PurchOrderActivation class in the initialize method of

the PurchOrderActivationExtended class? Each correct answer presents a complete solution.

  • A . class PurchOrderActivationExtended extends PurchOrderActivation
    {
    public void initialize()
    {
    PurchOrderActivation purchOrderActivation =
    PurchOrderActivation::construct();
    }
    }
  • B . class PurchOrderActivationExtended extends PurchOrderActivation
    {
    public void initialize()
    {
    var purchOrderActivation = new PurchOrderActivation();
    }
    }
  • C . class PurchOrderActivationExtended extends PurchOrderActivation
    {
    public void initialize()
    {
    var purchOrderActivation = PurchOrderActivation::construct();
    }
    }
  • D . class PurchOrderActivationExtended extends PurchOrderActivation
    {
    public void initialize()
    {
    PurchOrderActivation purchOrderActivation = new PurchOrderActivation
    ();
    }
    }

Reveal Solution Hide Solution

Correct Answer: BD
BD

Explanation:

The construct method is private, so you can not call it from another class.

Question #7

You are a developer working on a new customized form and are troubleshooting a defect on the form.

The form displays a summary for each line. The defect report says that the form shows the incorrect

summary for return order lines.

A display method provides the summary, and the method calls the following:

public str salesLineSummary(

SalesType _type,

str _orderNum,

ItemId _itemId,

Qty _lineQty,

Amount _lineAmount

)

{

Amount baseAmount = _lineAmount > 0 ? _lineAmount : -1 * _lineAmount;

str formattedAmount = num2Str(baseAmount, 10, 2, DecimalSeparator::Dot,

ThousandSeparator::Comma);

str summary;

switch (_type)

{

case SalesType::Sales:

summary = strFmt(‘Order %1 ordered %2 of %3 [Subtotal: %4]’,

_orderNum, _lineQty, _itemId, formattedAmount);

break;

case SalesType::ReturnItem:

summary = strFmt(‘RMA %1 expecting %2 of %3 for %4 credit’,

_orderNum, _lineQty, _itemId, formattedAmount);

default:

summary = strFmt(‘Journal %1: %2 of %3’, _orderNum, _lineQty,

_itemId);

}

return summary;

}

You need to fix the defect in the most efficient way possible.

Which modification should you make?

  • A . Remove the default block of code from the switch statement.
  • B . Add an If statement to the default block of code in the switch statement.
  • C . Exchange the SalesType::Sales with the SalesType::ReturnItem blocks of code in the switch
    statement.
  • D . Add a break statement before the default block of code in the switch statement.

Reveal Solution Hide Solution

Correct Answer: D
Question #8

You are planning to use X++ to develop a solution that will update multiple records.

You need to ensure that if the solution attempts to modify records that are currently being edited by a user, the operation will be retried.

Which type of exception should you handle?

  • A . UpdateConflict
  • B . CodeAccessSecurity
  • C . UpdateConflictNotRecovered
  • D . Deadlock

Reveal Solution Hide Solution

Correct Answer: A
A

Explanation:

UpdateConflict: Indicates that an error has occurred in a transaction that is using Optimistic Concurrency

Control. The transaction can be retried (use a retry statement in the catch block).

Question #9

You are developing a solution to insert and update records in a table named Table1, and you need to ensure that you handle the possible exceptions. Table1 does not have any unique indexes that include the ID or the Description fields.

The table has the following structure:

What is the output of the X++ code?

  • A . Max value
    DDEerror
    Data error
  • B . Break
  • C . Data error_RC
  • D . Max value
    DDEerror
    Error has occurred

Reveal Solution Hide Solution

Correct Answer: D
D



Question #10

You are reviewing the basic set of primitive data types in Microsoft Dynamics 365 for Finance and

Operations with a client.

The client wants to know the best data type to use for a set of literals, such as states of nature or key reporting structures.

Which type should you tell the client?

  • A . Strings
  • B . Anytype
  • C . Containers
  • D . Enumerations

Reveal Solution Hide Solution

Correct Answer: D
D

Explanation:

Enums: An abbreviation for enumerated text – a set of literals.

Question #11

You are a developer for an Independent Software Vendor (ISV).

You need to create new extended data types in Microsoft Dynamics 365 for Finance and Operations.

What are two best practices for extending a series of data types? Each correct answer presents a complete solution.

  • A . An EDT should be created for each atomic entity being utilized.
  • B . Subtypes are not required for EDTs that do not contain any property changes.
  • C . You cannot extend the recID or tableID system data types.
  • D . You cannot use EDTs if one of them is a member of the parent extended data.

Reveal Solution Hide Solution

Correct Answer: AB
AB

Explanation:

Whenever possible, you will want to use EDTs and EDTs should be created for each atomic entity in the situation that your application is modeling. You should only create subtypes when they are needed. In other words, when you are creating an EDT that extends another EDT, but you aren’t changing any of its properties, you probably do not need to create a new subtype.

Question #12

You need to add indexes to a table.

Which two best practices should you follow? Each correct answer presents part of the solution.

  • A . Determine how the table should be organized by specifying a clustered index.
  • B . Specify a primary index to determine the unique key on the table.
  • C . Maintain indexes by making changes directly in the database.
  • D . Add as many indexes as possible, since more indexes will lead to better performance.

Reveal Solution Hide Solution

Correct Answer: AB
AB

Explanation:

You’ll always maintain indexes in a development environment using the table designer versus making changes directly in the database.

You’ll always specify a clustered index to determine how the table should be organized.

You should always specify a primary index to determine the unique key on the table.

You should only add the index if the speed improvements gained are greater than the cost to update the index.

To maintain efficiency of the index, you should limit the number of columns that you use in the index.

It’s important to not create duplicate indexes.

Question #13

You are an Independent Software Vendor (ISV) developer working in the "ABCModule" module in an existing solution.

You create a new label in the XYZ-en-US.label.txt file with a Label ID of "LabelText", a Label of "Text for the Label", and a Description of "ABC".

How should you reference this new label in the Label property of an artifact?

  • A . @ABCModule.XYZ.LabelText
  • B . @XYZ:LabelText
  • C . @ABCModule.XYZ[LabelText]
  • D . @XYZ[LabelText]

Reveal Solution Hide Solution

Correct Answer: B
Question #14

You are an Independent Software Vendor (ISV) developer.

You are working on a new solution that will support multiple languages and regions, and you need to use labels.

Which two best practices should you follow when using the labels? Each correct answer presents a complete solution.

  • A . Use descriptive text for the label file ID.
  • B . Use labels for elements and artifacts.
  • C . Use the name of the model for of the label file name.
  • D . Use a new label ID for every element or artifact.

Reveal Solution Hide Solution

Correct Answer: BC
BC

Explanation:

You should use labels for every user-facing element or artifact in Dynamics 365 for Finance and

Operations.

For multi-language label files, you should ensure that labels contain appropriate translations of the activity or item that they describe.

You should also use labels when programming for all external strings.

You should create a label file with the same name as the associated model.

Question #15

You are an Independent Software Vendor (ISV) developer working on a new solution, and you need to use a custom icon.

What should you create to add this icon to the solution?

  • A . a reference to the icon in the project
  • B . an Image folder, and then add the icon
  • C . a tile item in the model
  • D . a resource item in the model

Reveal Solution Hide Solution

Correct Answer: D
D

Explanation:

Resources enable management of the pictures, icons, and other visual representations for elements that are used within the user interface.

Question #16

You need to explain to a team member the difference between TempDB and InMemory table types.

In which three ways do TempDB table types differ from InMemory table types for reporting? Each correct answer presents part of the solution.

  • A . TempDB tables have a persistent database schema, and the data is deleted when the table goes out of scope.
  • B . TempDB tables are created and destroyed upon use, which not take any database schema space.
  • C . TempDB tables are for the storage of large data sets and do not allow exchanging between RAM and
    disk space.
  • D . TempDB tables are used for small data sets that are under 128 KB in size.
  • E . TempDB tables are used when you are unsure of the size of the data set returned.

Reveal Solution Hide Solution

Correct Answer: ACE
ACE

Explanation:

Temp DB tables have a persistent schema in the database, but they are configured to delete table data when references to the table go out of scope.

An important thing to remember about in-memory tables is that once the table size exceeds 128 kilobytes, the system begins to allocate additional space between the RAM and disk space, which can cause performance to suffer. Because of this, it is recommended to use temp DB tables to handle larger temporary datasets.

Temp DB tables are often used to store data from reports, as report data is usually temporary and that it is not needed after the report is closed.

Question #17

You are a developer for an Independent Software Vendor (ISV) and will be working with the X++ programming language and Microsoft Dynamics 365 for Finance and Operations.

Which three primitive data types will you use in this situation? Each correct answer presents a complete solution.

  • A . Float
  • B . Real
  • C . Short
  • D . AnyType
  • E . Boolean

Reveal Solution Hide Solution

Correct Answer: BDE
BDE

Explanation:

Anytype C A placeholder for any data type.

Booleans C Can only contain the values false and true.

Dates C Contains day, month, and year.

Enums C An abbreviation for enumerated text C a set of literals.

GUIDs C A globally unique identifier.

Integers C A number without a decimal point. To declare an integer, use the keyword int.

Reals C Numbers with a decimal point; also called decimals.

Strings C A number of characters. To declare a string, use the keyword str.

TimeOfDay C Contains hours, minutes, and seconds. To declare a time, use the system type timeOfDay.

utcdatetime C Contains year, month, day, hour, minute and second.

Question #18

You are adding a relationship to a table.

Which two best practices should you follow? Each correct answer presents part of the solution.

  • A . Define a navigational relationship; the validate property on the relation should be set to "Yes" for easier
    navigation.
  • B . Set the validate property to No when you are using navigational relationships so that the application is
    easy to navigate.
  • C . Name the relationship with an "_rel" suffix in order to differentiate it from the index that is appended with "_idx".
  • D . Define the relationship to a foreign key on the child table by setting the validate property on the relation
    to Yes.

Reveal Solution Hide Solution

Correct Answer: BD
BD

Explanation:

Name

The name of a relation should be postfixed with the name of the table it relates to. For example,

CustBankAccounts could be a relation on the BankAccounts table.

If there is only one relation for a table, you can just use the table name for the relation instead.

Relations in the Data Model

A relation should be defined on the table that is holding the foreign key to the relating table. The Validate

property must be set to Yes.

The system guarantees that data entered in the database fulfills the specified relations.

The Self Relation

If a table has a key, the key must be defined by using relations. Such a relation is called the ‘self relation’.

The self relation should not be set up in situations where the fields in the key are all foreign keys (such as

relations to other tables) – or more specifically, where the last field in the self relation is a foreign key.

Navigational Relations

Navigational relations are definitions of relations that exist among data in tables where there are no integrity constraints.

Defining a navigational relation benefits the system’s Auto Join system when one form is opened from within another form.

Define navigational relations to make it easy to navigate in the application by using related information.

A navigational relation has the Validate property set to No.

The Auto Join system uses relations that are defined at both the involved tables, which means that you only have to define a navigational relation on the one table to the other to make the Auto Join system work both ways.

Configuration Keys

The configuration key that is specified for the field in a relation must be the same key, or in the same tree

of keys, as the key used for the related field. If the external field in a relationship can be removed, due to

configuration key settings, and the field on which the relation is set is not also removed, you will get a best practices warning.

Question #19

You are extending primitive data types to make your code more readable, and you need to assign

Extended Data Types (EDT) properties.

Which best practice should you follow?

  • A . Do not leave the display length and style an Auto.
  • B . Ensure that the HelpText property is the same as the label.
  • C . Do not use labels for user interface text.
  • D . Ensure that you reference an EDT when creating table fields.

Reveal Solution Hide Solution

Correct Answer: D
D

Explanation:

Wherever possible, you should avoid the creation of table fields which don’t reference an EDT, as this

makes potential future changes more difficult to implement.

Question #20

A team member who is not familiar with IntelliMorph needs to understand what field groups are and the primary advantage of using them.

What should you tell the team member?

  • A . They are groups of fields referenced directly on forms and reports; however, you need to update ans
    refresh the filed groups on the forms or reports if there are additions or deletions from the table.
  • B . They are groupings of fields by data type; field groups allow for the update or data by using indexes to
    quickly access key columns and rows.
  • C . They are groupings of fields on the table; they are used for speeding up the entity of information based
    on the form for which they are designed.
  • D . They are groupings of physical database fields by logical choice; field groups can be referenced directly on forms and reports, and, upon modification, related references are automatically updated.

Reveal Solution Hide Solution

Correct Answer: D
D

Explanation:

Field groups: These are logical groupings of physical database fields. So field groups can be referenced directly on forms and reports so that when a modification is made to a field group, related references are automatically updated to reference the new content of the group.

Question #21

Your development team plans to use the new API exposed in Commerce Runtime (CRT) to set/get or validate values based on enum type.

Which two benefits will your team gain from using the new API in this manner? Each correct answer presets a complete solution.

  • A . They can directly map between Finance and Operations enums and CRT enums without manually creating the enums in CRT.
  • B . They can easily override or add triggers at specific extension points instead of owning the entire service or operation.
  • C . They can help skip certain checks used to override the entire calculate service by adding pre/post triggers for the validation check.
  • D . They can have multiple partners and ISVs create extensible enums and use them independently without any code merge.

Reveal Solution Hide Solution

Correct Answer: AD
AD

Explanation:

With the new extensible enum exposed in CRT, you can directly map between Finance and Operations

enums and CRT enums without manually creating the enums in CRT. Multiple partners and ISVs can create extensible enums and use them in their code independently without any code merge.

Question #22

You need to troubleshoot an issue by using the Async sync library.

Where should you go to access this library?

  • A . Real Time Service
  • B . Reatil Server
  • C . Retail Modern POS
  • D . Channel Database

Reveal Solution Hide Solution

Correct Answer: C
C

Explanation:

Retail modern POS includes the Async library which downloads any available data packages and inserts them into the offline database.

Question #23

You manage package deployments for a Microsoft Dynamics 365 Retail environment, and you need to

determine if a package rebuild is necessary.

Which scenario requires a package rebuild?

  • A . You want to re-run a build due to warnings that appear in the Error List pane concerning best practices.
  • B . You want to force a build of all objects, regardless of whether they have changed.
  • C . You want to build dependent and reference models at the same time.
  • D . You cannot set the Synchronize database on the Build Property to True.

Reveal Solution Hide Solution

Correct Answer: B
B

Explanation:

The rebuild will perform a full compile, which will take a bit longer. The rebuild option combines the clean and build steps so we don’t have to separately run clean and build.

Question #24

You are an Independent Software Vendor (ISV) developer working on a solution that extends the

Commerce Runtime (CRT) to handle new requests for an app deployed to tablets and cell phones.

You are in the developer topology and need to troubleshoot an error and check for events.

Under which event log in Event Viewer should you look to see the events?

  • A . Commerce-RetailServer
  • B . Commerce-OnlineStore
  • C . Commerce-LoggingProvider
  • D . Commerce-ModernPos

Reveal Solution Hide Solution

Correct Answer: D
D

Explanation:

Commerce-RetailServer C This log contains events that are logged by the Retail Server components.

Commerce-ModernPos C This log contains events that are logged by Retail Modern POS. These events include events from the TypeScript and C# (CRT) layer.

Commerce-LoggingProvider C This log contains events that are logged by all other Retail components that aren’t included in the list earlier in this article.

Question #25

Employees who use a Cloud point-of-sale (POS) at a store report that the product information is not current. There is no Retail Store Scale Unit deployed at the store, and you suspect that the scheduler job that updates product information has failed.

Which two actions can you take to check the status of the scheduler job? Each correct answer presents a complete solution.

  • A . In Event Viewer, look at the Commerce-RetailServer event log for an event that references the job.
  • B . In Lifecycle Services (LCS), look in Environment monitoring, and search Activity for the batch job that
    includes the scheduler job.
  • C . In Retails Headquarters, look at the history of the distribution schedule that includes the scheduler job.
  • D . In the Cloud POS, look at the Database connection status screen for the job.

Reveal Solution Hide Solution

Correct Answer: BC
BC

Explanation:

Retail distribution jobs uses the commerce data exchange async server and the retail scheduler.

The components of messages, environments, and jobs are all collected and surfaced up to LCS to provide a one-stop overview of diagnostics and monitoring.

Related Lesson: About Lifecycle Services

Question #26

You are an administrator of a Microsoft Dynamics 365 for Finance and Operations – Retail live environment.

You receive a report that the corporate Retail server is unresponsive.

Where should you look first to troubleshoot the issue in the most efficient manner possible?

  • A . Environment Monitoring in Lifecycle Services (LCS)
  • B . Event Viewer of the Retail Server
  • C . Activity Log in Azure Portal
  • D . Event Viewer of the Application Object Server (AOS)

Reveal Solution Hide Solution

Correct Answer: B
B

Explanation:

Retail Server, Modern POS, and hardware station are logged in the Event viewer on the local machine.

Question #27

You have built a package to deploy retail modifications into a source environment for multiple models.

What is a result of building this package?

  • A . Build artifacts are removed from the previous build.
  • B . The .NET module that contains the element is incorporated.
  • C . Only recently changed objects are rebuilt.
  • D . Only the elements for the current project are built.

Reveal Solution Hide Solution

Correct Answer: B
B

Explanation:

https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/dev-tools/build-operations

Question #28

You manage a Microsoft Dynamics 365 for Retail environment.

You are preparing to deploy packages.

Which two types of items can you deploy as a package? Each correct answer presents a complete solution.

  • A . a binary hotfix to the Application Object Server (AOS) runtime components
  • B . an updated Dynamics 365 for Retail customization package
  • C . a Microsoft Dynamics 365 Language Pack
  • D . a Retail Software Development Kit (SDK)

Reveal Solution Hide Solution

Correct Answer: AB
AB

Explanation:

A deployable package is a unit of deployment that can be applied in any Microsoft Dynamics 365 for Retail environment. A deployable package can be a binary hotfix to the Application Object Server (AOS) runtime components, an updated Dynamics 365 for Retail customization package, or a new Microsoft Dynamics 365 for Retail customization/application module package.

Question #29

What are two benefits of applying a form pattern to a form? Each correct answer presents part of the solution.

  • A . ensures data consistency by enforcing common relationship patterns between datasources
  • B . provides default values for many properties on controls
  • C . enforces a consistent style so that the forms a user encounters are immediately recognizable
  • D . allows a developer to create many delivered forms from a base form

Reveal Solution Hide Solution

Correct Answer: BC
BC

Explanation:

Microsoft Dynamics 365 for Finance and Operations, Enterprise Edition, makes development easier by providing a guided experience for applying patterns to forms to ensure they are correct and consistent.

They help validate forms and control structures and the use of controls in certain places. Using patterns also ensures that each new form encountered by a user is immediately recognizable in appearance and function. Form patterns can provide many default control properties, which leads to a more guided development experience.

Question #30

You are creating a custom lookup form to look up records in a table.

You want to provide multiple views of the table on the form.

Which form pattern should you apply?

  • A . Details Master with Standard Tabs
  • B . Simple List
  • C . Lookup with Tabs
  • D . Dialog – Advanced Selection

Reveal Solution Hide Solution

Correct Answer: C
C

Explanation:

Lookup basic C This is the basic Lookup pattern that has just one list or tree, and also optional custom filters and actions.

Lookup w/tabs C This Lookup pattern is used when more than one view of the lookup can be made available to the user. Tab captions aren’t shown. Instead, the tab is selected through a combo box.

Lookup w/preview C This more advanced Lookup pattern enables a preview of the current record in the lookup grid.

Exit mobile version