The Microsoft. Dynamics AX Team. Microsoft. Dynamics®. AX Inside. Foreword by Hans J. Skovgaard. Product Unit Manager, Microsoft Corporation. Hi Axapters, Is it possible to connect Microsoft Lync to Microsoft Dynamics AX R2? Microsoft Lync + Microsoft Dynamics AX R2. new to the Microsoft Dynamics AX community after AX can't imagine a day when that wasn't a . technologies, and tools for this release, the authors of Inside Microsoft Dynamics AX . These ebooks are available in PDF,. EPUB.
|Language:||English, Spanish, Hindi|
|Country:||United Arab Emirates|
|Genre:||Politics & Laws|
|Distribution:||Free* [*Registration needed]|
WEIGHT LOSS TIPS. HELPFUL ADVICE TO GET YOU STARTED. Brought to you by TodaysFitnessShop. maroc-evasion.info &. Inside the AX reporting framework. Those new to the Microsoft Dynamics AX community after AX can't imagine a day when that wasn't a. PartnerSource. Microsoft Dynamics AX. documentation. Location. Description. What's New in Microsoft. Dynamics AX PDF or XPS –. Download from.
Carol Dillingham, the Content Project Manager for the book, who provided ongoing support and guidance throughout the life of the project. If you discover an error, please submit it to us via You can also reach the Microsoft Press Book Support team for other support via the same alias. Please note that product support for Microsoft software and hardware is not offered through this address.
For help with Microsoft software or hardware, go to Free ebooks from Microsoft Press From technical overviews to in-depth information on special topics, the free ebooks from Microsoft Press cover a wide range of topics.
Introduction xxxiii 35 We want to hear from you At Microsoft Press, your satisfaction is our top priority, and your feedback our most valuable asset. Please tell us what you think of this book at: We know you're busy, so we've kept it short with just a few questions.
Your answers go directly to the editors at Microsoft Press. No personal information will be requested. Thanks in advance for your input! Stay in touch Let s keep the conversation going! We re on Twitter: This edition of the book is dedicated to Hal Howard, with many thanks for your leadership. Each feature of a business application uses the application model elements described in Chapter 1, Architectural overview.
For example, a table element includes the name of the table, the properties set for the table, the fields, the indexes, the relations, and the methods, among other things.
This chapter describes the most commonly used tools and offers some tips and tricks for working with them. Table lists the MorphX tools and components. The AOT is the main entry point for most development activities. It allows the developer to browse the repository of all elements that together make up the business application. You can use the AOT to invoke the other tools and to inspect and create elements. Group related elements into projects.
Inspect and modify properties of elements. The property sheet shows key and value pairs. Create and inspect localizable strings. Automatically detect defects in both your code and your elements. View the contents of a table directly from a table element. Navigate and understand the type hierarchy of the currently active element.
Search for code or metadata patterns in the AOT. See a line-by-line comparison of two versions of the same element. Determine where an element is used. Track all changes to elements and see a full revision log. You can access these development tools from the following places: In the Development Workspace, on the Tools menu On the context menus of elements in the AOT You can personalize the behavior of many MorphX tools by clicking Options on the Tools menu.
Figure shows the Options form. Some elements are grouped into subcategories to provide a better structure. Figure shows the AOT. You can navigate through the AOT by using the arrow keys on the keyboard. Pressing the Right Arrow key expands a node if it has any children. Elements are arranged alphabetically. Because there are thousands of elements, it s important to understand the naming conventions and adhere to them to use the AOT effectively.
The business area name is also often referred to as the prefix. Prefixes are commonly used to indicate the team responsible for an element. For example, in the name VendPaymReconciliationImport, the prefix Vend is an abbreviation of the business area name Vendor , PaymReconciliation describes the functional area payment reconciliation , and Import lists the action performed import. The name CustPaymReconciliationImport describes a similar functional area and action for the Customer business area.
Tip When building add-on functionality, in addition to following this naming convention, you should add another prefix that uniquely identifies the solution. This additional prefix will help prevent name conflicts if your solution is combined with work from other sources.
Consider using a prefix that identifies the company and the solution. For example, if a company called MyCorp is building a payroll system, it could use the prefix McPR on all elements added.
Any future development and maintenance will be much easier. Projects, described in detail later in this chapter, provide an alternative view of the information in the AOT. Elements are given automatically generated names when they are created. However, you should replace the default names with new names that conform to the naming convention.
The order of the subnodes can play a role in the semantics of the element. For example, the tabs on a form appear in the order in which they are listed in the AOT. The name CustPaymReconciliationImport describes a similar functional area and action for the Customer business area. This additional prefix will help prevent name conflicts if your solution is combined with work from other sources.
Consider using a prefix that identifies the company and the solution. For example, if a company called MyCorp is building a payroll system, it could use the prefix McPR on all elements added. Any future development and maintenance will be much easier. Projects, described in detail later in this chapter, provide an alternative view of the information in the AOT. Elements are given automatically generated names when they are created. However, you should replace the default names with new names that conform to the naming convention.
The order of the subnodes can play a role in the semantics of the element. For example, the tabs on a form appear in the order in which they are listed in the AOT.
You can change the order of nodes by selecting a node and pressing the Alt key while pressing the Up Arrow or Down Arrow key. A red vertical line next to a root element name marks it as modified and unsaved, or dirty, as shown in Figure A dirty element is saved in the following situations: To ensure that the local versions of remotely changed elements are updated, an autorefresh thread runs in the background.
This autorefresh functionality eventually updates all changes, but you might want to force the refresh of an element explicitly. You do this by right-clicking the element, and then clicking Restore. This action refreshes both the on-disk and the in-memory versions of the element. To perform manual resolution, follow these steps: Close the AX client to clear any in-memory elements. You can access these actions from the context menu, which you can open by right-clicking any node. Here are two facts to remember about actions: A frequently used action is Open New Window, which is available for all nodes.
It opens a new AOT window with the current node as the root. This action was used to create the screen capture of the AccountingDistribution element shown earlier in Figure You can extend the list of available actions on the context menu. You can enlist a class as a new add-in by following this procedure: Create a new menu item and give it a meaningful name, a label, and Help text.
Drag the menu item to the SysContextMenu menu. If you want the action to be available only for certain nodes, modify the verifyItem method on the SysContextMenu class. Element layers and models in the AOT When you modify an element from a lower layer, a copy of the element is placed in the current layer and the current model. All elements in the current layer appear in bold type as shown in Figure , which makes it easy to recognize changes.
You can use the Application object layer and Application object model settings in the Options form to personalize the information shown after the element name in the AOT see Figure , shown earlier. Figure shows a class with the Show All Layers option set. If an element exists in several layers, you can right-click it and then click Layers to access its versions from lower layers. It is highly recommended that you use the Show All Layers setting during code upgrade because it provides a visual representation of the layer dimension directly in the AOT.
Projects For a fully customizable overview of the elements, you can use projects. In a project, you can group and structure elements according to your preference. A project is a powerful alternative to the AOT because you can collect all the elements needed for a feature in one project. Figure shows the Projects window and its Private and Shared projects nodes. Except for its structure, a project generally behaves like the AOT.
Every element in a project is also present in the AOT. When you create a new project, you must decide whether it should be private or shared among all developers. You can make a shared project pri- vate and a private project shared by dragging it from the shared category into the private category.
No private projects are included with the application. You can specify a startup project in the Options form. If specified, the chosen project automatically opens when AX is started.
Automatically generating a project Projects can be automatically generated in several ways—from using group masks to customizing project types—to make working with them easier. Group masks Groups are folders in a project. When you create a group, you can have its contents be automatically generated by setting the ProjectGroupType property All is an option and providing a regular expres- sion as the value of the GroupMask property.
Using group masks ensures that your project is always current, even when elements are created directly in the AOT. All classes with names containing ReleaseUpdate the prefix for data upgrade scripts will be included in the project group.
Figure shows the resulting project when the settings from Figure are used. Filters You can also generate a project based on a filter.
Because all elements in the AOT persist in a data- base format, you can use a query to filter elements and have the results presented in a project. Depending on the complexity of the query, a project can be generated instantly or it might take several minutes. The result of running the Wizard Wizard is a new project that includes a form, a class, and a menu item—all the elements that make up the newly created wizard.
To access these wizards, on the Tools menu, click Wizards. The Create Upgrade Project feature makes a three-way comparison to establish whether an element has any upgrade conflicts. It compares the original version with both the customized version and the updated version. If a conflict is detected, the element is added to the project. The resulting project provides a list of elements to update based on upgrade conflicts between versions.
You can use the Compare tool, described later in this chapter, to see the conflicts in each element. Together, these features provide a cost-effective toolbox to use when upgrading. Project types When you create a new project, you can specify a project type. So far, this chapter has discussed stan- dard projects. The Test project, used to group a set of classes for unit testing, is another specialized project type provided in AX With a specialized project, you can control the structure, icons, and actions available to the project.
The property sheet Properties are an important part of the metadata system. Each property is a key and value pair. You can use the property sheet to inspect and modify properties of elements. When the Development Workspace opens, the property sheet is visible by default. The property sheet automatically updates itself to show properties for any element selected in the AOT.
Figure shows the property sheet for the TaxSpec class. The two columns are the key and value pairs for each property. Figure shows the Categories tab for the class shown in Figure On this tab, related proper- ties are categorized. For elements with many properties, this view can make it easier to find the right property. Read-only properties appear in gray. Just like files in the file system, elements contain information about who created them and when they were modified.
Elements that come from Microsoft all have the same time and user stamps. The default sort order places related properties near each other. Categories were introduced in an earlier version of Microsoft Dynamics AX to make finding properties easier, but you can also sort properties alphabetically by setting a parameter in the Options form.
You can dock the property sheet on either side of the screen by right-clicking the title bar. Docking ensures that the property sheet is never hidden behind another tool. You open the editor by selecting a node in the AOT and pressing Enter. The editor contains two panes.
For AX , some shortcuts differ from those in earlier versions to align with commonly used integrated development environments IDEs such as Microsoft Visual Studio. Action Shortcut Description Show the Help window F1 Opens context-sensitive Help for the type or method currently selected in the editor.
Go to the next error message F4 Opens the editor and positions the cursor at the next compilation error, based on the contents of the Compiler Output window. Execute the current element F5 Starts the current form, job, or class.
Compile F7 Compiles the current method. Toggle a breakpoint F9 Sets or removes a breakpoint. Go to the implementation drill F12 Goes to the implementation of the selected method. Select the code you want by or pressing the Alt key while selecting text with the mouse.
Cancel the selection Esc Cancels the current selection. When typed in front of a class or method header, this shortcut prepopulates the XML document with template information relevant to the class or method. Built-in editor scripts provide functionality such as the following: This will replace the text in the editor with the standard template for a static main method. The list of editor scripts is extendable. You can create your own scripts by adding new methods to the EditorScripts class.
Label editor The term label in AX refers to a localizable text resource. Text resources are used throughout the product as messages to the user, form control labels, column headers, Help text in the status bar, captions on forms, and text on web forms, to name just a few uses. Labels are localizable, meaning that they can be translated into most languages. Because the space requirement for displaying text resources typically depends on the language, you might fear that the actual user interface must be manually localized as well.
However, with IntelliMorph technology, the user interface is dynamically rendered and honors any space requirements imposed by localization. The technology behind the label system is simple. All text resources are kept in a Unicode-based label files that are named with three-letter identifiers. Figure shows how the Label Files node in the AOT looks with multiple label files and the en-us language identifier. The underlying source representation is a simple text file that follows this naming convention: ALD The following are two examples, the first showing a U.
English label file and the second a Danish label file: ALD Axtstda. ALD Each text resource in the label file has a bit integer label ID, label text, and an optional label description.
The structure of the label file is simple: The AOT provides a set of operations for the label files, including an Export To Label file that can be used to extract a file for external translation. The wizard guides you through the steps of adding a new label file or a new language to an existing label file. After you run the wizard, the label file is ready to use.
If you have an existing.
A common misunderstanding is that the label file identi- fier must match the layer in which it is used. This naming stan- dard was chosen because it is simple, easy to remember, and easy to understand. Consider the following tips for working with label files: Creating a label You use the Label editor to create new labels. You can use the Label editor shown in Figure to find existing labels.
Reusing a label is sometimes preferable to creating a new one. In addition to finding and creating new labels, you can use the Label editor to find out where a label is used. The Label editor also logs any changes to each label. Consider the following tips when creating and reusing labels: Some words are homonyms words that have many meanings , and they naturally translate into many different words in other languages.
For example, the English word can is both a verb and a noun. Use the description column to note the intended meaning of the label. Place- holders can also be used within labels. The following code shows a few examples: You can place system text in macros to make it reusable.
Using single and double quotation marks to differentiate between system text and user interface text allows the Best Practices tool to find and report any hard-coded user interface text. The Best Practices tool is described in depth later in this chapter.
Your code also recompiles whenever you close the editor or save changes to an element. The compiler also produces a list of the following information: See Table , later in this section, for a list of example compiler warnings. Compiler warnings can and should be addressed. Check-in attempts with compiler warnings are rejected unless specifically allowed in the version control system settings. Be careful when using to-do comments to postpone work, and never release code unless all to-dos are addressed.
For a developer, there is nothing worse than debugging an issue and finding a to-do comment indicating that the issue was already known but overlooked. Of course, your changes can require other methods that consume your code to be changed and recompiled if, for example, you rename a method or modify its parameters.
If the consumers are not recompiled, a run-time error is thrown when they are invoked. Always ensure that you compile the entire AOT when you consider your changes complete, and fix any compila- tion errors found.
This can be achieved by using the Compile Forward option under Add-Ins in the context menu for the changed class node.
The Compiler Output window provides access to every issue found during compilation, as shown in Figure The window presents one list of all relevant errors, warnings, best practice deviations, and tasks.
Each type of message can be disabled or enabled by using the respective buttons. Each line in the list contains information about each issue that the compiler detects, a description of the issue, and its location.
This capability is useful if you want to share the list of issues with team members. Following best practices helps you avoid many obstacles, even those that appear only in borderline scenarios that would otherwise be difficult and time consuming to detect and test. Using best practices allows you to take advantage of the com- bined experience of Microsoft Dynamics AX expert developers. When you perform similar tasks in a standard way, you are more likely to be comfortable in an unknown area of the application.
Consequently, adding new resources to a project is more cost effective, and downstream consumers of the code can make changes more readily.
Most of the problems developers face when implementing a solution in Microsoft Dynamics AX have been solved at least once before. Choosing a proven solution results in faster implementation and less regression. You can find solutions to known problems in both the Developer Help section of the SDK and in the code base. NET Framework. The Best Practices tool is embedded in the compiler, and the results are reported in the Compiler Output window the same way as other messages from the compilation process.
The purpose of static code analysis is to detect defects and risky coding patterns in the code au- tomatically. The longer a defect exists, the more costly it becomes to fix—a bug found in the design phase is much cheaper to correct than a bug in shipped code running at several customer sites. The Best Practices tool allows any developer to run an analysis of his or her code and application model to ensure that it conforms to a set of predefined rules. Developers can run analysis during development, and they should always do so before implementations are tested.
Because an application in AX is much more than just code, the Best Practices tool also performs static analysis on the metadata—the properties, structures, and relationships that are maintained in the AOT.
You can define the best practice rules that you want to run in the Best Practice Parameters dialog box: By default, all categories are turned on, as shown in Figure The best practice rules are divided into three levels of severity: Any check-in attempt with a best practice error is rejected. You must take all errors seriously and fix them as soon as possible. This means that you should treat 95 percent of all warnings as errors; the remaining 5 percent constitute exceptions to the rule.
You should provide valid explanations in the design document for all warnings you choose to ignore. These are typically reported as information messages. A suppressed best practice deviation is reported as information. This gives you a way to identify the deviation as reviewed and accepted. To stop a piece of code from generating a best practice error or warning, place a line containing the fol- lowing text just before the deviation: Use the following guidelines for selecting which rules to suppress: Dangerous application pro- gramming interfaces APIs are often responsible for such exceptions.
If a dangerous API is used, a suppressible error is reported. You can suppress the error after you apply the appropriate mitigations. Note that only warnings caused by actual code can be suppressed this way, not warnings caused by metadata. After you set up the best practices, the compiler automatically runs the best practices check when- ever an element is compiled.
The results are displayed in the Best Practices list in the Compiler Output dialog box. Some of the metadata best practice violations can also be suppressed, but the process of suppress- ing them is different. Instead of adding a comment to the source code, you add the violation to a global list of ignored violations. This allows for central review of the number of suppressions, which should be kept to a minimum. Adding custom rules You can use the Best Practices tool to create your own set of rules.
You call the init, check, and dispose methods once for each node in the AOT for the element being compiled. Compiling this sample code results in the best practice errors shown in Table Ensure that you cache the names to prevent the compiler from going to the disk to read the names for each method being compiled.
This is one of the valuable checks that ensures that the code can easily be kept up to date, which helps avoid mistakes. In this case, k was not intended for a specific purpose and can be removed.
The debugger is a stand-alone application, not part of the AX shell like the rest of the tools mentioned in this chapter.
The debugger starts automatically when any component hits a breakpoint. You must enable debugging for each component as follows: This is normally ensured by using setup, but if you did not set up AX by using your current account, you need to do this manually through Edit Local Users And Groups in Windows Control Panel. This is necessary to prohibit unauthorized debugging, which could expose sensitive data, provide a security risk, or impose unplanned service disruptions.
If you do, execution will stop when it hits a breakpoint, and the client will stop responding to users. Running the application with debug support enabled also noticeably affects performance. You can set a breakpoint on any line you want. A breakpoint on the last brace will never be hit. Each devel- oper has his or her own set of breakpoints.
This means that your breakpoints are not cleared when you close AX and that other AX components can access them and break where you want them to.
Debugger user interface The main window in the debugger initially shows the point in the code where a breakpoint was hit.
You can control execution one step at a time while inspecting variables and other aspects of the code. Figure shows the debugger opened to a breakpoint with all the windows enabled.
Each variable has a ScreenTip that reveals its value. You can drag the next-statement pointer in the left margin. Variables window Shows local, global, and member variables, along with their names, values, and types. Local variables are variables in scope at the current execution point. Global variables are variables on global classes that are always instantiated: Member variables are shown on classes.
If a variable is changed as you step through execution, it is marked in red. Each variable is associated with a client or server icon. You can modify the value of a variable by double-clicking the value.
Call Stack window Shows the code path followed to arrive at a particular execution point. Clicking a line in the Call Stack window opens the code in the Code window and updates the local Variables window.
A client or server icon indicates the tier on which the code is executed. Watch window Shows the name, value, and type of the variables. Five different Watch windows are available. You can use this window to inspect variables without the scope limitations of the Variables window. You can drag a variable here from the Code window or the Variables window. Breakpoints window Lists all your breakpoints.
You can delete, enable, and disable the breakpoints through this window. Status bar window Provides the following important context information: This information is especially useful when you are debugging incoming web requests. When this level reaches zero, the transaction is committed. The defaults for classes are New and Null. You can change the defaults by overriding the toString method.
Step over F10 Step over the next statement. Step into F11 Step into the next statement. Reverse Engineering tool You can generate Visio models from existing metadata. The Reverse Engineering tool is a great aid when you need to visualize metadata.
You can also open the tool by selecting Reverse Engineer from the Tools menu. In the dialog box shown in Figure , you must specify a file name and model type. When you click OK, the tool uses the metadata for all elements in the project to generate a Visio document that opens automatically. You can drag elements from the Visio Model Explorer onto the drawing surface, which is initially blank.
Any relationship between two elements is automatically shown. You can include these items in your diagrams without having to run the Reverse Engineering tool again. All attributes are marked as public to reflect the nature of fields in AX Delivery Method: Instructor-led classroom Multi-enrolment discounts are available for multiple registrations from the same company.
About this Course This course provides an overview of the basic elements and functionality necessary for understanding the Production module in Microsoft Dynamics AX Key elements include: the highly interactive nature of the module which draws upon information from other modules, an overview of the way in which Bills of materials are used in production, work centers and work center groups used to track equipment and resources for the production process, routes and operations, and the production order life cycle along with the scheduling functions, used to schedule the production of finished goods.
In addition, the course is set up to reflect the general workflow and use of the module in the order that it would typically take place. Finally, the course summarizes some of the major new features implemented in the production area for Microsoft Dynamics AX A significant number of these are as a result of the new multisite functionality, however additional changes are covered, such as Gantt Chart improvements, master planning capability across sites, ATP and filter functions on certain forms.
It contains basic conceptual information and a broad overview of the main core concepts, including: a description of the interactivity of the Production module with other modules; an example of a hypothetical work flow in a single company that illustrates this interaction; a definition of core concepts in production such as BOMs, work centers, work center groups, operations and routes; an overview of the production life cycle and, finally, a summary of how multisite functionality is used in production.
Since BOMs are used in production to specify ingredients or subordinate components that are required to make each assembled part or item in production, they are essential to the functioning of production processes. The module concludes with an overview of the standard BOM reports and how they are used.
Calendars and work centers are additional core building blocks to the Production module.