Blog

My blog posts

Hands-on notes across Dynamics AX and Dynamics 365, architecture, integration, data, Power Platform, Azure and AI.

Filter posts

Narrow the archive by topic, audience or year.

Category
Audience
Year
MCP in Practice: From Delivery Boards to ERP Execution thumbnail

MCP in Practice: From Copilot Studio to Claude Code

A hands-on ERP transformation field guide: why MCP changes the API integration model, how I used Azure DevOps, D365 ERP and Dataverse MCP in Copilot Studio, and how the same capability layer continued when I moved the client to Claude Code.

Read →
Your delivery board, readable by an agent thumbnail

Your delivery board, readable by an agent

Why start here If you are introducing Model Context Protocol into an enterprise estate, do not start with the finance system. Start with something where the blast radius is small, the data is familiar, and the value is obvious within a minute of connecting. Azure DevOps is that place. Every delivery leader already lives in it, the permissions model is well understood, and the questions you want to ask an agent — what is in flight, what is blocked, what changed in this repository — are questions you ask a human colleague several times a…

Read →
One consent, and the data layer opens thumbnail

One consent, and the data layer opens

The one Microsoft documents openly Where the Finance and Operations MCP server names a single supported client, Dataverse takes the opposite approach. Microsoft publishes a page called "Use the Dataverse MCP server with other clients" and works through examples for non-Microsoft agents explicitly. The mechanism is a local proxy. You run a small stdio server on your own machine; it handles the Entra sign-in and forwards MCP traffic to /api/mcp on your environment: { "mcpServers": { "dataverse": { "command": "npx", "args": ["-y", "@microsoft/dataverse", "mcp", "https://<org>.crm.dynamics.com"] } } } Architecturally this is a useful contrast with…

Read →
Connecting F&O to an agent Microsoft hasn’t documented thumbnail

Connecting F&O to an agent Microsoft hasn’t documented

The wall The Dynamics 365 ERP MCP server is real, official, and built directly into the Finance and Operations environment. It exposes 21 tools across three families: data tools for OData and SQL access, form tools that drive application forms server-side, and API tools that invoke X++ logic exposed through ICustomAPI . Microsoft's guidance for connecting to it is a page titled, unambiguously, "Connect to the Dynamics 365 ERP MCP server with VS Code." There is no parallel page for anything else. That is a licensing problem before it is a technical one. VS Code's…

Read →
What we automated, and what it cost thumbnail

What we automated, and what it cost

The problem we started with Every system that needs ERP data gets its own integration. Scoped, built, security-reviewed, tested, deployed — then maintained forever. N systems multiplied by M consumers, and every cell in that grid is a bespoke piece of engineering with its own lifecycle, its own credentials and its own owner. The question worth asking is not how to build those integrations faster. It is whether the consumer needs one at all. Adding a consumer should be an access decision, not a development project. What is running Actor MCP server Service Auth Status…

Read →
Why AI is bad at X++ — and what fixes it thumbnail

Why AI is bad at X++ — and what fixes it

Provenance first. Unlike the other servers in this series, this one is not a Microsoft product . It is a community project — d365fo-mcp-server by dynamics365ninja — with no Microsoft support and no Microsoft security review. It is genuinely useful, and it should never be presented as a Microsoft offering. The failure mode Ask a general-purpose AI assistant to write X++ and watch what happens. It will produce something that looks entirely plausible: correct-ish syntax, sensible naming, a confident explanation of what it does. Then it will not compile. Because it invented the method signature.…

Read →
Microsoft AI Tour Sydney — What Satya Nadella Actually Showed thumbnail

Microsoft AI Tour Sydney — What Satya Nadella Actually Showed

I was in the room at the Microsoft AI Tour Sydney when Satya Nadella , CEO at Microsoft, took the stage with the Keynote, and the first thing that stood out was how little time he spent trying to sell AI. There was no attempt to prove that AI matters. That argument is already over, everyone is using it. The real question he focused on was much harder. If AI is already everywhere, why does most work still look the same? Because right now, in most companies, AI is sitting on top of existing workflows.…

Read →
AI Agents in Microsoft Business Applications: Dynamics 365 F&O, Business Central, CE & Power Platform thumbnail

AI Agents in Microsoft Business Applications: Dynamics 365 F&O, Business Central, CE & Power Platform

Microsoft’s Journey in Business Applications For the last decade, Microsoft has been making continuous investments in its business applications ecosystem, shaping the way enterprises of all sizes from SMEs to large corporations manage their operations. With Dynamics 365 Finance & Operations (F&O), Business Central, Customer Engagement (CE), and the Power Platform, Microsoft has built a state-of-the-art ERP and CRM landscape that delivers flexibility, scalability, and intelligence. These applications empower organizations to: Streamline and digitize core business operations Gain actionable insights through powerful, built-in reporting Integrate seamlessly with other systems using Power Automate, Logic Apps, and…

Read →
From Digitization to Intelligence: The Era of AI Agents thumbnail

From Digitization to Intelligence: The Era of AI Agents

In the early days of digital transformation, the biggest advantage of adopting technology was digitizing manual processes—automating tasks, improving reporting, and enabling complex calculations. It was an era of replacing paper with pixels, spreadsheets with dashboards, and manual approvals with workflows. But today, we’ve entered a new paradigm. AI is no longer just supporting our work—it’s doing the work. We are now in the age of AI Agents, where intelligent software systems are reshaping how business applications like Dynamics 365 Finance & Operations (FO) and Business Central are built, deployed, and operated. What Are AI…

Read →
Exploring Microsoft Copilot Architecture thumbnail

Exploring Microsoft Copilot Architecture

Microsoft Copilot isn't just another AI tool; it's a comprehensive platform designed to be your indispensable companion, enhancing productivity, fostering creativity, and facilitating information comprehension all through a user-friendly chat interface. The concept of Copilot emerged two years ago when Microsoft introduced GitHub Copilot , aiming to assist developers in writing code interactively. Microsoft then expanded its scope, integrating it with other services like Microsoft Office 365 , Dynamics 365 , Power BI , Windows , and Microsoft Fabric. Let's explore the complexities of Copilot further, gaining insight into its diverse layers and the robust…

Read →
How to enable new Microsoft teams - Public Preview! thumbnail

How to enable new Microsoft teams - Public Preview!

New Microsoft Teams is just AWESOME, quick but useful post below shows how you have this preview feature to make your life EASY! Open Microsoft Teams admin center [Ask admin in your organization if you don't have access] and follow path Teams > Teams update policies > Click on an existing policy or Create New > follow step 1 and step 2 below . Toggle Try the new teams to get yourself into NEW TEAMS world, you may chose to go back to classic (GA) version at any point of time. Let the change happen!…

Read →
Electronic Reporting: Send vendor payments to external azure storage via X++ thumbnail

Electronic Reporting: Send vendor payments to external azure storage via X++

Electronic Reporting module in Microsoft Dynamics 365 Finance Operation lets you archive file generated by ER at SharePoint location and in Azure Storage as per this link Archive ER destination type - Finance & Operations | Dynamics 365 | Microsoft Learn . APIs can be used to check message status and read file from either location. Logic Apps or Power Automate can be used to make a call to APIs, read files, and perform required action. This post is not about how this can be done via integration :) It's been a while I haven't…

Read →
Download large bacpac (sandbox database) to DEV environment much faster thumbnail

Download large bacpac (sandbox database) to DEV environment much faster

As the LCS website gets slower and slower and the database backups get bigger and bigger. Use AZCopy to download objects out of LCS asset library. it is an incredibly quickly vs manually downloading the files (>1min for a gig vs 1 hour+) Download AZCopy to the environment ( https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-v10?toc=/azure/storage/files/toc.json#download-azcopy ) and user the PowerShell command : .\azcopy copy " LCS SAS Link " " LocalPath " D The only issue I noticed is that the local path had to be into a folder, not the root of the drive (so "C:\Temp" not "C:\" which…

Read →
Get your Dynamics 365 FO tier 2 (sandbox) environment today!! thumbnail

Get your Dynamics 365 FO tier 2 (sandbox) environment today!!

Pakistan User Group is hosting FREE training program for everyone covering Microsoft Business Application and Azure components of Microsoft EcoSystem from beginners to advance level. Register now if you have not yet and join us on Saturday 20th November at 4pm Pakistan Standard Time (GMT + 5). All details apart, this post is a quick guide to get your own Microsoft Dynamics 365 Finance Operations tier 2 environment FREE!! I will create step-by-step videos to explain all these steps in details, I know it requires detailed explanation. Subscribe https://www.youtube.com/c/DaxtureD365FO Let's begin... Open this URL https://dynamics.microsoft.com/en-au/intelligent-order-management/overview/?ef_id=e0b92d13d85e177270894c83385bd79c:G:s&OCID=AID2200017_SEM_e0b92d13d85e177270894c83385bd79c:G:s&msclkid=e0b92d13d85e177270894c83385bd79c…

Read →
MS D365 FinOps: How to create new LCS project and deploy Tier 1 (DEV) VM - Even you are not a MS customer or partner :) - Part I thumbnail

MS D365 FinOps: How to create new LCS project and deploy Tier 1 (DEV) VM - Even you are not a MS customer or partner :) - Part I

Scenario: You are willing to work on Microsoft Dynamics 365 Finance Operations product and want to get your hand dirty with some development. You are hearing so much about this product but never got a chance to work on this MS ERP. Andre wrote a detailed post on how you can setup a trial environment for MS D365 Finance Operations Solution: With this post I will explain a step-by-step guide on how; to create your own LCS project to deploy a new Tier 1 VM to log on to Azure Portal to access Power Platform…

Read →
Dual-write learning series - Dual-write initial sync is the data integrator thumbnail

Dual-write learning series - Dual-write initial sync is the data integrator

One of the features of the dual-write is initial sync where you copy data from the source app (Finance Operation OR DataVerse) to the target app (Finance Operation OR DataVerse) depending on the selection in Master for initial sync option. This initial sync is the Data Integrator service running behind the scene and copies your data over. You configure the application id for data integrator and add it both apps ( Finance Operation OR DataVerse ), I have documented it my previous post The Dual Write implementation - Part 2 - understand and action pre-requisites…

Read →
D365FO: Right click on any control at D365FO browser takes you directly to the control in AOT thumbnail

D365FO: Right click on any control at D365FO browser takes you directly to the control in AOT

Last week I explored very Interesting feature especially for developers where you right click on any field/control on the form and follow these steps. This opens the visual studio in non admin mod, Opens the correct form, and takes you directly at the control in AOT. NOTE: You can only get this feature within Development VM where your browser and Visual Studio are in same machine. I am at 10.0.14 but not sure when this great feature was available first :(

Read →
Another step closer - Finance Operations data in Power Platform - Virtual Entities thumbnail

Another step closer - Finance Operations data in Power Platform - Virtual Entities

This post focuses on the integration technologies available to have the Microsoft Dynamics 365 Finance Operations data available in Dataverse/Common Data Services/CDS. What could be better then having The biggest ERP system's data in Power Platform. You can Power Portals, Power Apps, Power BI analytical reports, use power virtual agents for inventory closing and year end closing processes, manage expenses and employee/contractors time entry processes, most of these processes can be even without logging to MS ERP (Dynamics 365 Finance Operation) so can safe on license cost too. Let's see what options are available to…

Read →
D365FO: Entity cannot be deleted while dependent Entities for a processing group exist. Delete dependent Entities for a processing group and try again. thumbnail

D365FO: Entity cannot be deleted while dependent Entities for a processing group exist. Delete dependent Entities for a processing group and try again.

Scenario: There are times when you want to delete an entity from target entity list and when you do so, you face an error message which does not tell you where exactly the entity has been used. "Entity cannot be deleted while dependent Entities for the processing group exist. Delete dependent Entities for a processing group and try again. " Solution: Browse the environment by appending this part /?mi=SysTableBrowser&TableName=DMFDefinitionGroupEntity&cmp=USMF at the end. For example; if the environment URL is https://daxture.sandbox.operations.dynamics.com then the complete URL will be https://daxture.sandbox.operations.dynamics.com/?mi=SysTableBrowser&TableName=DMFDefinitionGroupEntity&cmp=USMF Filter for Entity and it will give you…

Read →
How to run dual-write table map when underline entity table is setup under cross-company data sharing policy thumbnail

How to run dual-write table map when underline entity table is setup under cross-company data sharing policy

Scenario: Project groups are shared across all legal entities in D365 finance & operations app so have setup under one of the cross-company data sharing policies. You are also required to setup dual-write table map for project groups to sync from FO to CDS. However, you get following error message when you try to Run the table map "Copying pre-existing data completed with errors. For additional details, go to initial sync details tab." Follow these steps to overcome this issue as a workaround. Steps to follow: Disable cross-company data sharing policy where ProjGroup table has…

Read →
Steps to follow when refresh dual-write integrated environments (FO and CE) thumbnail

Steps to follow when refresh dual-write integrated environments (FO and CE)

Scenario: The D365 finance & operations app is linked to Common Data Services through dual-write in development or sandbox environments. You are required to refresh databases in D365 FO and CDS both from another production environment (dual-write integrated (linked) environments in the scenario) Steps to follow: Before initial refresh, log on to target environment Go to Data management > Dual write and stop all jobs Refresh FO and CDS environments from the same integrated source environments Go to Data management > Dual write and Unlink environments Clean data from following tables in D365FO if data…

Read →
Dual-write integration for Cross-Company data in D365 Finance and SCM thumbnail

Dual-write integration for Cross-Company data in D365 Finance and SCM

Dual-write does not work with the cross company data sharing policies in D365 FinOps (there are so many names but I am using this name for reference 😊). Brief overview about cross company data sharing policy first to set the base for the readers, the Cross-Company data sharing lets you have your data accessible from multiple legal entities (companies in D365 FinOps). For example, if you setup a policy for vendors to be crossed-company then whenever you create a new vendor it will be created in all data sharing legal entities. https://docs.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/sysadmin/cross-company-data-sharing Now, What happened…

Read →
D365FO: 𝙇𝘾𝙎 𝙚𝙭𝙥𝙤𝙧𝙩𝙚𝙙 𝙗𝙖𝙘𝙥𝙖𝙘 𝙁𝙞𝙡𝙚 𝙘𝙤𝙣𝙩𝙖𝙞𝙣𝙨 𝙘𝙤𝙧𝙧𝙪𝙥𝙩𝙚𝙙 𝙙𝙖𝙩𝙖 thumbnail

D365FO: 𝙇𝘾𝙎 𝙚𝙭𝙥𝙤𝙧𝙩𝙚𝙙 𝙗𝙖𝙘𝙥𝙖𝙘 𝙁𝙞𝙡𝙚 𝙘𝙤𝙣𝙩𝙖𝙞𝙣𝙨 𝙘𝙤𝙧𝙧𝙪𝙥𝙩𝙚𝙙 𝙙𝙖𝙩𝙖

If you experience below error message when trying to import bacpac file into tier 1 (DEV) environment then use the suggested steps to get over this error and get your database imported. Importing to database 'AxDB_Daxture' on server '.'. SqlPackage.exe : *** Error importing database:Could not load package from 'C:\Users\Adminb1c06345af\Downloads\daxturebackup.bacpac'. At line:13 char:5 + & $LatestSqlPackage $commandParameters "/p:CommandTimeout=0" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (*** Error impor...backup.bacpac'.:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError File contains corrupted data. Based on this docs link https://docs.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/database/import-database , download the .NET CORE version of SqlPackage.exe. This is the .zip…

Read →
Tips and Tricks on how to validate your dual-write integration field-by-field level - its easy believe me 😊 thumbnail

Tips and Tricks on how to validate your dual-write integration field-by-field level - its easy believe me 😊

After you are done with your entity field mappings for a required entity map e.g. for Vendor Groups, we started to look at in previous post to get the payload for dual-write integration, two records get created in the following tables. 1. DualWriteProjectConfiguration 2. DualWriteProjectFieldConfiguration Records only get created when you Run the entity map and get deleted once you stopped it. DualWriteProjectConfiguration table does not hold data for Vendor groups when the entity map is stopped. DualWriteProjectFieldConfiguration table does not hold data for Vendor groups when the entity map is stopped. Run the entity…

Read →
Want to see the inbound and outbound Payload for dual-write integration thumbnail

Want to see the inbound and outbound Payload for dual-write integration

Let's continue where we left in first post "What got changed (Technical) in D365 Finance Operations with dual-write" our journey to understand what are the technical changes being done for dual-write framework. This post we will look at what are highly used tables, entities, and classes involved for dual-write sync. I will only cover few tables, classes, and data entities but complete list of objects can be explored from AOT as shown below. Business scenario: Create or update Vendor Groups in FO and sync over to CDS and vice versa. Open Vendor groups screen -…

Read →
What gets changed (Technical) in D365 Finance Operation with dual-write thumbnail

What gets changed (Technical) in D365 Finance Operation with dual-write

Being a developer I have to explore how a new feature or a framework has been developed and how can this be extended when needed. While working on dual-write implementation I came across many technical difficulties as the framework was not mature enough at that time since the dual-write is only generally available in end of March 2020 and I have been working on dual-write since mid-year 2019. I must say MS has done tremendous amount of work to make the integration with Microsoft Dynamics 365 Finance Operations apps and Common Data Services via Dual-write…

Read →
Error resolution: Copying pre-existing data completed with errors. For additional details, go to initial sync details tab thumbnail

Error resolution: Copying pre-existing data completed with errors. For additional details, go to initial sync details tab

If you happen to face this error message "Copying pre-existing data completed with error, For additional details, go to initial sync details tab" while starting the dual-write entity map then please check you have setup the cross company data sharing policy for the underline table of the entity map (which is a data entity in D365 FO). To resolve this issue, Go to System Administration | Setup | Configure cross=company data sharing screen and look for policy where you may have setup the underline table of the data entity used for dual-write entity map. Disable…

Read →
Source of truth for your Dual-write questions, issues discussions, and get resolutions thumbnail

Source of truth for your Dual-write questions, issues discussions, and get resolutions

If you happen to stuck with any issue with the Dual-write implementation from on how and where to start with dual-write - The source of truth is a yammer group https://www.yammer.com/dynamicsaxfeedbackprograms/#/threads/inGroup?type=in_group&feedId=16038053 runs by Microsoft Dual-write product team. FILES tab in the group contains all A-Z documentation. Get your questions answered today by various experts including MS dual-write product team. You can even raise your live issue with them in the yammer group and they connect with you in no time - very much useful!!

Read →
DynamicsCon Recording - The Power of Dual Write thumbnail

DynamicsCon Recording - The Power of Dual Write

Excited to share that the recording of my session on "The Power Of Dual Write" is now available. Please watch and share your feedback. Please feel free to ask questions - this way we all can learn more!!

Read →
MS D365 FinOps and Supply Chain Management Integration - Session at Microsoft Rector Sydney thumbnail

MS D365 FinOps and Supply Chain Management Integration - Session at Microsoft Rector Sydney

Recently talked about Microsoft Dynamics 365 Finance Operations and Supply Chain Management integration with Common Data Services - Dual write, Virtual Entities, and Data Integrator. Idea is to show how FO data can be utilized in Power Platform being now as a part of MS Ecosystem as an business application app. Data was there since beginning, technologies change over period of time to access, manipulate, and display the data. This is an era of making every user a powerful user so everyone can articulate their ideas. Microsoft Dynamics 365 Finance and Operations applications have been…

Read →
The Dual Write implementation - Part 3 - Entity map explained thumbnail

The Dual Write implementation - Part 3 - Entity map explained

In continuation of our journey to have D365 FinOps data in CDS, Following has been covered. Part 1: The Dual Write implementation - Understanding Dual-write and setup application users Part 2: The Dual Write implementation - Understand and Action Pre-requisites The Dual-write has been setup and the dual-write solution has already applied I have chosen Asset management asset types (msdyn_customerassetcategories) entity map from the list to put lights on all infrastructural features (aspects) of Dual-write. Entity map naming convention Entity mappings: Click on entity map to view all entity fields mappings More field mappings can…

Read →
D365FO: An Internal error has occured thumbnail

D365FO: An Internal error has occured

Recently Lately started having above error message when trying to RDP to cloud hosted Dynamics 365 Finance and managed to able to connect with multiple tries. Keep trying to connect and it will work 😉 MS shared below article to follow but you have to be very cautious in implementing this change https://docs.microsoft.com/en-us/azure/virtual-machines/troubleshooting/troubleshoot-rdp-internal-error#repair-the-vm-offline

Read →
The Dual Write implementation - Part 2 - understand and action pre-requisites thumbnail

The Dual Write implementation - Part 2 - understand and action pre-requisites

Prior linking environments (D365 FinOps and CDS) for dual write integration, let's work on what are the pre-requisites for this bi-directional integration from D365 FinOps to CDS or vice versa. Check all these steps are passed and marked checklist Follow these steps to link environment (all these steps are detailed at here ). Go to D365 FinOps | Data Management workspace | Dual-write Click New link to environment Choose CDS environment to link with D365 Finops, CDS environment has to be on same tenant and your user must have been added as an admin as…

Read →
The Dual Write implementation - Part 1 - Understand and Setup thumbnail

The Dual Write implementation - Part 1 - Understand and Setup

What is Dual-write? Tightly couples – complete at one transaction level Near real time Bi-directional Master data and business documents – Customer records you are creating and modifying and at this document we are talking about sales orders or quotes and invoice. Master data could be reference data e.g. customer groups and tax information Why Dual-write and why not Data Integrator? Data Integrator is Manual or Scheduled One directional Now, Let's deep dive and understand what is required for Dual-write setup and from where to start. First thing first, check you have access to https://make.powerapps.com/…

Read →
D365FO - How to read metadata information from AOT through X++ thumbnail

D365FO - How to read metadata information from AOT through X++

Following code snippet loop through metadata information of AOT objects (this example is to loop through all data entities). class DataEntityExtension { /// <summary> /// Runs the class with the specified arguments. /// </summary> /// <param name = "_args">The specified arguments.</param> public static void main ( Args _args) { DMFEntityTableExtension entityTableExtension; var entityNames = Microsoft.Dynamics.Ax.Xpp. MetadataSupport ::GetDataEntityViewNames(); Var enumerator = entityNames.getEnumerator(); while (enumerator.MoveNext()) { enumerator.MoveNext(); Microsoft.Dynamics.AX.Metadata.MetaModel. AxDataEntityView axDataEntity = Microsoft.Dynamics.Ax.Xpp. MetadataSupport ::GetDataEntityView(enumerator.Current); if (axDataEntity) { entityTableExtension.Label = SysLabel ::labelId2String(axDataEntity.Label); entityTableExtension.PublicEntityName = axDataEntity.PublicEntityName; entityTableExtension.PublicCollectionName = axDataEntity.PublicCollectionName; entityTableExtension.EntityName = axDataEntity.Name; entityTableExtension.IsPublic = axDataEntity.IsPublic; entityTableExtension.insert(); info(strFmt( "Entity Name:…

Read →
D365FO - Rotate SSL Certificates in Tier 1 environments thumbnail

D365FO - Rotate SSL Certificates in Tier 1 environments

If you face following error all of a sudden when accessing tier 1 environment like I faced, follow next steps in the post to get it working. The SSL certificate has been expired and requires renewal How to renew the certificate? The easiest way is to do through LCS Go to Environment details page | Maintain | Rotate secrets | Rotate SSL Certificates Click OK on next opened screen, environment status changes to Rotating secrets. Important: This does little bit time so better plan it accordingly. Refresh environment details page and wait for it to…

Read →
D365FO - Start hierarchy approval with specific worker thumbnail

D365FO - Start hierarchy approval with specific worker

There are times when clients want to start hierarchy approval from a specific worker and not from the one who initiated the workflow and then traverse up the hierarchy. Scenario: Invoices are coming from third-party into FinOps and creating tax invoice registers Setting the Approved by field at tax invoice register line level AP Clerk/Administrator assigns these invoices to correct worker for approval So, in the above scenario, the AP clerk initiated the workflow but the workflow will not go his/her line manager for approval instead it will be assigned to the owner (approved by)…

Read →
D365FO - Add new participant and type of participant to Participant workflow element thumbnail

D365FO - Add new participant and type of participant to Participant workflow element

There are times when you want to add a new type of participant other than security role participants and user group participants, this post describes the steps to take and achieve this requirement. This is the final output Let's find out how did it work. This is how each type of participant exists in AOT so a new Workflow Participant Assignment Provider needs to be created in order to see it in the Type of participant list as for this example 'Vendor invoice approval provider' is being added. Created a new Workflow Participant Assignment Provider…

Read →
D365FO - How not to select Fleet Management modules in package creation thumbnail

D365FO - How not to select Fleet Management modules in package creation

Want assurance that you never select/include fleet management modules in package creation or build all module together. Just rename the Descriptor folder from all these three locations and refresh models in VS first time to reflect the changes. <Service volume drive>:\AosService\PackagesLocalDirectory\FleetManagement <Service volume drive>:\AosService\PackagesLocalDirectory\FleetManagementExtension <Service volume drive>:\AosService\PackagesLocalDirectory\FleetManagementUnitTests

Read →
D365FO - Get list of obsolete data entities thumbnail

D365FO - Get list of obsolete data entities

Find which data entity is obsolete after every new update. Here are the steps. For example; Customers V2 data entity is obsolete with version 8.0 For developers: Type the below in the metadata search in VSTS: type:dataentityview property:isobsolete=yes

Read →
D365 platform update 12 (7.3): Admin access changes thumbnail

D365 platform update 12 (7.3): Admin access changes

The Microsoft team did release platform update 12 for Dynamics 365 for Finance and Operations, Enterprise Edition 7.3. There have been few changes concerning accessibility (admin access on VMs). Starting with platform update 12 users do not have admin access to D365 VMs hosted on the Microsoft subscription. Which means: 1. You can only log in with the "builtin\Userxxxxxxxxx" account and not the “builtin\axlocaladmin” account anymore. Prior to PU12 7.3 With PU12 7.3 2. IIS Express is used as the web server instead of IIS 3. IIS Express runs when Visual Studio is running 4.…

Read →
D365FO: How to debug a non-development and a non-production environment thumbnail

D365FO: How to debug a non-development and a non-production environment

This post outlines the steps how to debug an issue which is happening in non-development or non-production environments e.g. UAT environment. 1. RDP to your environment where you want to debug the issue, with this example I am connecting to UAT (Sandbox). 2. Connect to SQL server a. Get the server name from LCS database accounts b. Use .database.windows.net to connect to database 3. Create a new SQL sign-in that the developer can use. This step lets the system administrator maintain the security of the sandbox environment. The developer will have access to one database…

Read →
Read excel through X++ in D365FO thumbnail

Read excel through X++ in D365FO

Sample code to read an excel file, all it need file stream as a parameter. public boolean importFromExcelfiles(System.IO. Stream _stream) { OfficeOpenXml. ExcelWorksheet worksheet; OfficeOpenXml. ExcelRange cells; OfficeOpenXml. ExcelPackage package = new OfficeOpenXml. ExcelPackage (_stream); int totalRows,totalCells,rowCounter,cellCounter; if (package) { worksheet = package.get_Workbook().get_Worksheets().get_Item( 1 ); cells = worksheet.Cells; totalRows = worksheet.Dimension.End.Row ; totalCells = worksheet.Dimension.End.Column; for (rowCounter = 2 ; rowCounter<= totalRows; rowCounter++) { for (cellCounter= 1 ; cellCounter<=totalCells; cellCounter++) { //Do something with the values info(cells.get_Item(rowCounter, cellCounter).value); } } } return true ; } This method can be called like this; FileUploadTemporaryStorageResult fileUploadResult; fileUploadResult…

Read →
D365FO - Method wrapping and chain of command thumbnail

D365FO - Method wrapping and chain of command

Another most awaiting Extensibility feature (Chain of Command) is going to come with one of the next platform updates. This enables you to call/use protected members and methods without making them hookable and using pre/post event handlers. More details are here https://blogs.msdn.microsoft.com/mfp/2017/07/04/extensible-x-chain-of-command/ and also here https://roadmap.dynamics.com/?i=296a1c89-ce4e-e711-80c0-00155d2433a1#.WVw1llbSw-M.linkedin Stay tuned on above road map site to find more on this feature.

Read →
D365O - How to get current worker through X++ thumbnail

D365O - How to get current worker through X++

The current user or worker could be retrieved through following code since AX 2012 DirPersonUser::currentWorker() However, In Dynamics 365 for operation this has refactored to; HcmWorkerLookup::currentWorker()

Read →
AX 2012 : Remove an XML node through X++ thumbnail

AX 2012 : Remove an XML node through X++

Following code snippet may help you to remove an XML node from an XML message string. private str removeXMLTag( str xml) { XmlDocument doc = new XmlDocument(); XmlElement nodeScript; XmlNode parentNode, childNode; XmlNodeList xmlScriptList, parentNodeList, childNodeList; int i,j; doc.loadXml(xml); // Get the root element and its child nodes nodeScript = doc.getNamedElement( "SalesOrder" ); xmlScriptList = nodeScript.childNodes(); for (i= 0 ; i < xmlScriptList.length(); i++) { parentNode = xmlScriptList.item(i); childNodeList = parentNode.childNodes(); for (j= 0 ; j < childNodeList.length(); j++) { childNode = childNodeList.item(j); if (childNode.selectSingleNode( "Notes" )) { parentNode.removeChild(childNode); } } } return doc.outerXml(); }…

Read →
AX 2012: Reading files from directory through X++ thumbnail

AX 2012: Reading files from directory through X++

Following code can be used to read files from the specified path. With this example, I am reading a CSV files from a directory. Class declaration class readFilesFromDirectory extends RunBase { FilePath filePath; Filename filename; CommaTextIo fileIO; Set fileSet; CommaIo commaIo; str currentFile; container lineCon; #File #AviFiles } main method Public static void main(Args _args) { readFilesFromDirectory readFiles = readFilesFromDirectory::construct(); readFiles.readFilesFromDirtecory(); } Construct Public static readFilesFromDirectory construct() { return new readFilesFromDirectory(); } readFileFromDirectory method private void readFilesFromDirtecory() { SetEnumerator sE; int row = 1 ; filePath = @"C:\Temp\FilesToRead" ; this.getFiles(); sE = fileSet.getEnumerator(); while (sE.moveNext())…

Read →
AX 2012: Create sales order with delivery address from an XML file thumbnail

AX 2012: Create sales order with delivery address from an XML file

Code snippet to create a sales order from an XML file. private void createSOFromFile() { AxdSalesOrder salesOrder; AifEntityKey key; Filename fileName; RecId salesTableRecId; SalesTable salesTable; XmlDocument xmlDoc; salesOrder = new AxdSalesOrder(); fileName = @"C:\Temp\SalesOrder.XML" ; xmlDoc = XmlDocument::newFile(fileName); key = salesOrder.create(xmlDoc.xml(), new AifEndPointActionPolicyInfo(), new AifConstraintList()); salesTableRecId = key.parmRecId(); info( strFmt ( "Sales order created: %1" , SalesTable::findRecId(salesTableRecId).SalesId)); } Sample XML file <?xml version="1.0" encoding="UTF-8"?> <SalesOrder xmlns:n="http://schemas.microsoft.com/dynamics/2008/01/documents/SalesOrder"> <SalesTable class="entity"> <CustAccount>C000002</CustAccount> <InventLocationId>EMU</InventLocationId> <CustomerRef>Cash on Delivery (COD)</CustomerRef> <PurchOrderFormNum>4669286216,1021</PurchOrderFormNum> <ReceiptDateRequested>2011-11-11</ReceiptDateRequested> <DeliveryName>team03qa@gmail.com</DeliveryName> <TableDlvAddr class="entity"> <City>southbank</City> <CountryRegionId>AUS</CountryRegionId> <LocationName>delivery address</LocationName> <State>VIC</State> <Street>13075 MANCHESTER RD STE</Street> <ZipCode>3006</ZipCode> </TableDlvAddr> <SalesLine class="entity"> <ItemId>CANO</ItemId> <SalesQty>20</SalesQty> <SalesPrice>82.25</SalesPrice>…

Read →
AX 2012: Reading XML Nodes under specific tag through X++ thumbnail

AX 2012: Reading XML Nodes under specific tag through X++

XML to read X++ Code For above XML structure, I will read all nodes exist within each InstructorAPIModel node. The getElementsByTagName() method of XmlDocument class can be used which returns XmlNodeList which can then be iterated to get node's values. XmlDocument doc = new XmlDocument(); XmlNodeList apiModelList; XmlNodeListIterator iterator; XmlElement apiModel; XmlElement firstName; XmlElement lastName; doc.loadXml(_xmlMsg); apiModelList = doc.getElementsByTagName('InstructorApiModel'); iterator= new XmlNodeListIterator(apiModelList); while (iterator.moreValues()) { apiModel = iterator.value(); firstName = apiModel.getNamedElement('FirstName'); if (firstName) { info(strFmt("First Name: %1", firstName.text())); } lastName = apiModel.getNamedElement('LastName'); if (lastName) { info(strFmt("Last Name: %1", lastName.text())); } iterator.nextValue(); }

Read →
AX 2012: Reading XML Nodes through X++ thumbnail

AX 2012: Reading XML Nodes through X++

XML to read X++ Code XmlDocument doc; XmlNodeList xmlScriptList; XmlNodeList xmlResponseList; XmlNodeList xmlTemplateList; XmlElement nodeScript; XmlElement nodeResponse; XmlElement nodeTemplate; XMLParseError xmlError; str xmlMsg; int i, j; ; // Create the XML Document doc = new XmlDocument(); doc.loadXml(xmlMsg); // Verify XML Document Structure xmlError = doc.parseError(); if (xmlError && xmlError.errorCode() != 0 ) { throw error( strFmt ( "XML Error: %1" , xmlError.reason())); } // Get the root element and its child nodes nodeScript = doc.getNamedElement( "ns2:return" ); xmlScriptList = nodeScript.childNodes(); for (i= 0 ; i < xmlScriptList.length(); i++) { nodeResponse = xmlScriptList.item(i); xmlResponseList = nodeResponse.childNodes();…

Read →
AX 2012: Attach documents or creates notes through X++ thumbnail

AX 2012: Attach documents or creates notes through X++

Came across a requirement to attach documents and create notes for a sales order after reading files from directories. Documents can be attached to a sales order manually from the following button. Code snippet to create notes or attach documents DocuRef docuRef; DocuActionArchive docuArchive; SalesTable salesTable = SalesTable ::find( "SO00001" ); Filename fileName = @"C\Temp\SalesOrder.docx" ; ttsbegin ; // Code to create notes docuRef.TypeId = 'Note' ; docuRef.Name = "Sales order notes" ; docuRef.Notes = "Checked Postcode: 2000, Select resident type" ; docuRef.Restriction = DocuRestriction ::External; docuRef.RefTableId = tableNum ( SalesTable ); docuRef.Ref...

Read →
D365O - How to add financial dimension in grid thumbnail

D365O - How to add financial dimension in grid

This post outlines the steps; how to add financial dimensions (segmented control) in a grid in D365O. Let's assume we are adding new table and form for below explanation; New table contains two fields AccountType and LedgerDimension with relation to DimensionAttributeValueCombination table Form looks like this; Set properties for segmented control under form design; - Auto declaration = Yes - Account type field = AccountType - Controller class = DimensionDynamicAccountController - Filter expression = %1 1. Override modified method for LedgerDimension field under form's datasource 2. Override lookup and checkUserCustomLookup method on ledger dimension segmented…

Read →
D365O - Import CSV data through Data entity thumbnail

D365O - Import CSV data through Data entity

Data entity is a new concept comes with D365O release where each entity related data can be accessed from a single view. A data entity is an abstraction from the physical implementation of database tables. For example, customer related data is stored in different tables in AX which could be customer address ( access from LogisticsPostalAddress), customer name (access from DirPartyTable), and customer electronic address (access from LogisticsElectronicAddress ). Complete details are well explained here https://ax.help.dynamics.com/en/wiki/data-entities/ Let's create new data entity to import data from a CSV file, this data entity uses only one table…

Read →
AX 2012 : Add/Remove Dynalink through X++ thumbnail

AX 2012 : Add/Remove Dynalink through X++

DynaLinks can be removed and added between datasources on form using this code; ClearDynaLinks() will remove all existing dynaLinks [these can be seen by right click on the click > Personalise > Query tab > under dataSource node AddDynalink() method has three parameters; 1. Source table field 2. Destination table 3. Destination table field The following code is implemented in the Click event of a button. void clicked() { SalesQuotationLine_ds.query().dataSourceNo( 1 ).clearDynalinks(); SalesQuotationLine_ds.query().dataSourceNo( 1 ).addDynalink( fieldNum (SalesQuotationLine, QuotationId), SAB_DocQuoteGroupRelation, ...

Read →
Microsoft Dynamics 365 for Operations - Number sequence thumbnail

Microsoft Dynamics 365 for Operations - Number sequence

Number sequence framework in there for a while with the release of AX 2012 however, with the arrival of D365 we need to make a small addition on top of what we have been doing in AX 2012. Following my previous, post How to generate number sequence for new module in AX 2012 all steps remain same as summarizing below to generate number sequence for the newly developed module. 1. Create a new class similar to NumberSeqModuleCust but suffix it with your module name e.g. NumberSeqModule MyModule extended from NumberSeqApplicationModule 2. Added loadModule() method 3.…

Read →
MS D365 - Development Exam - A brief outlook thumbnail

MS D365 - Development Exam - A brief outlook

Having passed the Microsoft Dynamics 365 Development Introduction exam (MB6-890), here are few thoughts on the exam which might help someone who is planning to appear in this exam. If you are an experienced AX developer and have worked on AX 2012 - you don't need to worry. Having said this "You don't need to worry", It would be the wiser step to watch all videos from https://mbspartner.microsoft.com/AX/CourseOverview/1181 . You can visit the Microsoft Dynamics Learning Portal and access it via your CustomerSource Account or PartnerSource Account. The exam will consist of 90 Questions and…

Read →
MS Dynamics 365 - Create Model and Project - Development Part 1 thumbnail

MS Dynamics 365 - Create Model and Project - Development Part 1

This post describes how to create model with correct selection of package which leads to correct development approach either Extension or Overlayering (Customization) Go to Dynamics 365 or AX7 | Deploy | Create model Enter required information as shown Choose correct package If you decided to go with overlayering, existing package will be selected from dropdown. Select referenced packages For this example; I will go with extension development approach, it is easy to upgrade with new versions or updates coming from MS. Marked all required packages (models) which can be referenced through your new created…

Read →
MS Dynamics 365 - Configure Visual Studio for better expereince thumbnail

MS Dynamics 365 - Configure Visual Studio for better expereince

Few settings to configure in Microsoft Visual Studio to make the development experience with AX a little smoother. Go to Dynamics 365 Options Set Projects Options - organize project by element type Set Text Editor Options - Line number and word wrap Set Best practice options The definition of best practice rules set is per model, by default it is set to Application Common model and can be switched between the different model from the combo box in the upper right corner. For example; to work with Customization Analysis you have to check Microsoft.Dynamics.AX.Framework.CustomizationAnalysisRules best…

Read →
MS Dynamics 365 - Configure Visual Studio for better expereince thumbnail

MS Dynamics 365 - Configure Visual Studio for better expereince

Few settings to configure in Microsoft Visual Studio to make the development experience with AX a little smoother. Go to Dynamics 365 Options Set Projects Options - organize project by element type Set Text Editor Options - Line number and word wrap Set Best practice options The definition of best practice rules set is per model, by default it is set to Application Common model and can be switched between different models from the combo box in the upper right corner. Let's say if you are working with Customization Analysis you have to check Microsoft.Dynamics.AX.Framework.CustomizationAnalysisRules…

Read →
AX 2012: How to use JumpRef method thumbnail

AX 2012: How to use JumpRef method

JumpRef method is mostly used with fields which are not linked with an EDT however, this depends on the design of the code and the requirement. I got a requirement to show 'View Details' options to the field of type notes (memo). There can be multiple ways to accomplish it but its always better to have your code at a central location (best to have it in Class or at table level) to reuse it. JumpRef method can be overridden at form level under control itself but we are not going to do [avoid code…

Read →
AX 2012: Access Denied: ***Controller thumbnail

AX 2012: Access Denied: ***Controller

Recently I came across the following exception while opening batch job via a menu item which has been written using sysOperation framework. It was happening only with non-admin users so the first thing I could think of permission/access issue. I checked all properties on menu item, everything seems to be set properly as required. Solution: Created a new server method under security privilege which is created for menu item used to called this import routine. Select required class, Under method dropdown type your required method [by default it list static methods], and set EffectiveAccess to…

Read →
AX 2012: StrFind and StrScan functions thumbnail

AX 2012: StrFind and StrScan functions

Two standard functions strFind and strScan can be used based on business requirement for find a special character from an input string. Here is an example with both functions; Both functions return integer value. StrScan Function Int found = 0; Str target= "Dynamics AX 365 operation"; found = strScan(target, "365", 0, strLen(target)); where parameters are; 1. string 2. string 3. position 4. number StrFind Function Int found = 0; Str target= "Dynamics AX 365 operation"; found = strFind(target, "X", 0, strLen(target)); where parameters are; 1. string 2. character 3. position 4. number

Read →
AX 2012: Convert string to TitleCase using str2CapitalWord function thumbnail

AX 2012: Convert string to TitleCase using str2CapitalWord function

Requirement: Show customer name on report in TitleCase e.g. faisal fareed should display as Faisal Fareed Solution: str2CapitalWord function does the trick and accomplished the requirement. input string: "faisal fareed" output string: "Faisal Fareed" P.S. There is another function str2Capital which just converts the first letter of the first word e.g. "faisal fareed" will be converted to "Faisal fareed"

Read →
CIL error "A parameter could not be serialised." thumbnail

CIL error "A parameter could not be serialised."

If you ever encounter the error message "A Parameter could not be serialized" that clued that some changes have been done to sysOperation framework and to resolve this error generate incremental CIL.

Read →
AX 2012 - Username and password keeps prompt on Home | Role center page thumbnail

AX 2012 - Username and password keeps prompt on Home | Role center page

After Enterprise portal in being installed and have configured in AX 2012, sometimes username and password keeps prompt for Home | Role Center page. However, this is irrespective to AX as any web application can be configured in IE settings for username and password. First option Steps outlined on this MSDN page resolves this issue. https://msdn.microsoft.com/en-us/library/cc750194.aspx Second option IE explorer | Internet options | Security | Intranet (or your settings), Select custom level scroll to the bottom | User Authentication and select autologon depending upon your setup

Read →
AX 2012 - Create and Post hour journal through X++ thumbnail

AX 2012 - Create and Post hour journal through X++

Following job can be used to create, validate, and post hour journal in Project Management and Accounting module in AX 2012 R3. static void createHourJournal(Args _args) { ProjJournalTableData JournalTableData; ProjJournalTransData journalTransData; ProjJournalTable journalTable, journalTableUpdate; ProjJournalTrans journalTrans; ProjTable projTable; ProjInvoiceTable projInvoiceTable; NumberSeq numberSeq; ProjJournalCheckPost jourPost; ProjQtyEmpl qty; JournalNumOfLines numOfLines; ttsBegin ; journalTableData = JournalTableData::newTable(journalTable); journalTransData = journalTableData.journalStatic().newJournalTransData(journalTrans, journalTableData); // Init JournalTable -- header journalTable.clear(); journalTable.JournalId = journalTableData.nextJournalId(); journalTable.JournalType = ProjJournalType::Hour; journalTable.JournalNameId = MROParameters::find().JournalHour; journalTable.initFromProjJournalName(ProjJournalName::find(journalTable.JournalNameId)); journalTable.insert(); // Init JournalTrans -- lines journalTableData.initFromJournalName(journalTableData.journalStatic().findJournalName(journalTable.JournalNameId)); journalTrans.clear(); journalTransData.initFromJournalTable(); projTable = ProjTable::find( '000057' ); projInvoiceTable = projTable.projInvoice(); journalTrans.setTransDate(); journalTrans.TransDate = systemDateGet ();…

Read →
Microsoft Dynamics 365 - Combines ERP and CRM cloud services thumbnail

Microsoft Dynamics 365 - Combines ERP and CRM cloud services

Another Microsoft app that will combine ERP and CRM cloud services into a single bundle.... https://www.microsoft.com/en-us/dynamics/dynamics-365 Due to be available this fall, Dynamics 365 will feature apps for functions including financials, field service, sales, operations, marketing, project service automation and customer service. The apps can be independently deployed, allowing users to buy only what they need.

Read →
Microsoft Dynamics 365 for Operations - Tips and Questions thumbnail

Microsoft Dynamics 365 for Operations - Tips and Questions

Deep dive into AX 7 - How development happens and where all source code stores; With AX 7, the development has moved back to file system, any technical change we make in the application is saved into an XML file. What does development environment include? The development environment is the one box deployment of AX 7 with its own local SQL database installed. What is the format of the source code files? Source code (Technical changes) are the set of XML files (model elements) onto your disk. Does AOS require to be running during development?…

Read →
Microsoft Dynamics 365 for Operations - How Packages and Models live in Visual Studio thumbnail

Microsoft Dynamics 365 for Operations - How Packages and Models live in Visual Studio

In continuation of my previous post on few major technical changes in the world of AX 7, this post is all about to understand the core components of AX 7 development before we jump into AX development IDE in visual studio. Yes, we will write X++ code into Visual Studio by using four components. There are 4 main components to understand in Visual Studio include Elements, Models, Projects and Packages . To explore more let's have a look at a screenshot of the Application Explorer. Within it, there is an AOT node. Model(s) and Packages(s)…

Read →
How to: Generate number sequence for new developed module in AX 2012 thumbnail

How to: Generate number sequence for new developed module in AX 2012

In this post I am going to create a number sequence for newly developed module in AX 2012. 1. Add a new element in NumberSeqModule baseenum with your new module name 2. Create a new Class NumberSequenceModuleModuleName extends NumberSequenceModule 3. Override loadModule method by adding the parameters of the sequence NumberSeqDatatype datatype = NumberSeqDatatype::construct(); //Message ID: MessageID is a new EDT of string type datatype.parmDatatypeId(extendedtypenum(MessageID)); datatype.parmReferenceHelp(literalstr("MessageId")); datatype.parmWizardIsManual(NoYes::No); datatype.parmWizardIsChangeDownAllowed(NoYes::No); datatype.parmWizardIsChangeUpAllowed(NoYes::No); datatype.parmSortField(2); datatype.addParameterType(NumberSeqParameterType::DataArea, true, false); this.create(datatype); 4. Override numberSeqModule method public NumberSeqModule numberSeqModule() { return NumberSeqModule::NewModule; } 5. Create new job to load number sequence static void…

Read →
AX 2012 - sysOperation Framework - Use controller class to open dialog from AX form thumbnail

AX 2012 - sysOperation Framework - Use controller class to open dialog from AX form

In my previous post on sysOperation framework Example I described how the sysOperation framework can be used for the batch functionality in contrast to RunBaseBatch framework. In this post I will explain how you can use sysOperation Framework classes to open a dialog from a AX form using contract and controller classes and then run logic in Service class. In this example I added a new menu item "Example" on projProjectsListPage form which will call controller class. This example is create project transactions using service calls at the end. First we need to create a…

Read →
AX 2012 - how to use 'NOT LIKE' in AX statements thumbnail

AX 2012 - how to use 'NOT LIKE' in AX statements

Please note that I am using ! after 'where' keyword to reverses the effect of 'like' static void Not_Like(Args _args) { #define.createdBy( 'faisal' ) InventTable inventTable; while select inventTable where !(inventTable.ItemId like 'I*' ) { // do your logic } }

Read →
AX 2012 : Generate customer account statement as PDF through X++ thumbnail

AX 2012 : Generate customer account statement as PDF through X++

Customer account statement in AX 2012 R3 can be generated from Accounts Receivable > Reports > External > Customer account statement. However, if we need to generate this report through code - how can we achieve this? I created a new query in AOT with only dataSource 'CustTable', as I want to loop on selected customers only. I created a class extending from RunBase (did not want to touch existing report and class for customer account statement) being considering it a custom process of generating customer account statement using X++ code opposed to what exists…

Read →
AX 2012 - sysOperation Framework implementation [Example] thumbnail

AX 2012 - sysOperation Framework implementation [Example]

This post demonstrates how to create batch classes using Business Operation Framework (or sysOperation). We used to use RunBaseBatch framework to implement batch functionality before this new concept of AX services was taken in place. Compensations of BOF (or sysOperation) framework over RunBaseBatch are very well explained here http://daxmusings.codecrib.com/2011/08/from-runbase-to-sysoperation-business.html . Key points RunBase/RunBaseBatch Vs sysOperation Frameworks The sysOperation framework is an implementation of the MVC pattern (Model-View-Controller) Model - parameters [contract class] View - Dialog [contract class or an optional UI builder class] Controller - Process (the code that runs in the essence of pattern)…

Read →
Import demo data into AX 2012 R3 - Test Data Transfer Tool thumbnail

Import demo data into AX 2012 R3 - Test Data Transfer Tool

To import demo data into AX 2012 R3 version, Test Data Transfer Tool was put in place. The Test Data Transfer Tool (beta) has been moved. It is now available from the Downloadable tools section of Microsoft Dynamics Lifecycle Services. Download the test data transfer tool from the below link; https://lcs.dynamics.com/v2/LocalTools/ Steps to import data are well described here https://community.dynamics.com/ax/b/alirazatechblog/archive/2014/05/03/how-to-import-contoso-demo-data-to-dynamics-ax-2012-r3 Test Data Transfer Tool - Video Microsoft Dynamics AX 2012 Test Data Transfer Tool (Beta) Updated 7th Jan 2014 Video

Read →
AX 7 - Technical Insights thumbnail

AX 7 - Technical Insights

AX 7 is impending with a radical technical and structural change in the world of Microsoft ERP, Dynamics AX, in contrast to what we got in current version AX 2012. This is a soft indication to all developers to get ready to adopt this change nippily. There is a lot to learn on AX 7 development while supporting\working with current versions of Dynamics AX :( Back to file system; Yes, with AX 7 we are back to file system. Any change (technical) we make in application is saved into file (XML file) at your disk.…

Read →
AX 2012: File existance check thumbnail

AX 2012: File existance check

Multiple ways to check file existance in AX 2012; Client side check, does not work with batch job WinAPI::fileExists(_fileName); Server side check which works for run base batch too public boolean getFileExists(filepath _fileName) { System.IO.FileInfo fileInfo; new InteropPermission(InteropKind::ClrInterop).assert(); fileInfo = new System.IO.FileInfo(_fileName); return fileInfo.get_Exists(); }

Read →
AX 2012 - How to retrieve meeting (appointment) status from Outlook thumbnail

AX 2012 - How to retrieve meeting (appointment) status from Outlook

Mi crosoft Dynamics AX 2012 provides a very convenient way to synchronize outlook tasks, contacts and appointments back into AX. MSDN topics describe the integration in details. https://technet.microsoft.com/en-us/library/aa498242.aspx https://technet.microsoft.com/en-us/library/gg230659.aspx Let's discuss the main motive of this post; How can you retrieve the meeting (appointment) status from outlook back to AX 2012. Before I show you where and what code need to add or change, I will show the existing functionality how it works. Go to Home > Periodic > Microsoft outlook synchronization > Synchronize Here you can see, be default it tries to sync Contacts,…

Read →
Calling/Opening AX form through X++ thumbnail

Calling/Opening AX form through X++

Sample piece of code to open AX form through X++ static void OpenForm_ThroughCode(Args _args) { Args args; Object formRun; // open form args = new Args(); args.name( formstr (FormName)); formRun = classfactory.formRunClass(args); formRun.init(); formRun.run(); formRun.wait(); } If you want to pass a record to open a form args = new Args(); args.record(ProjTable::find('PR00001')); args.name( formstr (FormName)); formRun = classfactory.formRunClass(args); formRun.init(); formRun.run(); formRun.wait(); How to retrieve these args on caller form's init() public void init() { ProjTable projTableLocal; super (); projTableLocal = element.args().record(); }

Read →
How to implement Runbase form in AX thumbnail

How to implement Runbase form in AX

Today I had a requirement that allow users to run Outlook synchronization process in batch rather sync it manually using out of the box functionality. Let's have a look on existing functionality and then extend it to achieve the requirement of running it in batch. Existing functionality in AX Home> Periodic > Synchronize [AOT form name is smmOutlookSyncrhonization ] As you can see someone has to manually sync outlook emails to AX acvitities or viceversa. Extended functionality in AX Let's implement this functionality in batch so users can set recurrence the Sync. Create a new…

Read →
Sales quotation GST through X++ thumbnail

Sales quotation GST through X++

X++ code to achieve this; static void SalesTax_Per_SalesQuotation(Args _args) { SalesQuotationTable salesQuotationTable; SalesQuotationTotals salesQuotationTotals; container cont; salesQuotationTotals = SalesQuotationTotals::construct(SalesQuotationTable::find( "QUOT000022" )); salesQuotationTotals.calc(); cont = salesQuotationTotals.displayFieldsCurrency(salesQuotationTotals.currencyCode()); info( strFmt ( "Sales quotation total GST: %1" , conpeek (cont, TradeTotals::posTaxTotal()))); }

Read →
GST/TAX at sales order and sales line level through X++ thumbnail

GST/TAX at sales order and sales line level through X++

Sales order GST : Total GST of Sales order can be seen from following screen in AX 2012 X++ code to achieve this; static void SalesTax_Per_SalesOrder(Args _args) { TaxTmpWorkTransForm taxTmpWorkTransForm; SalesTotals salesTotals; TaxSales taxSales; SalesLine salesLine; container cont; salesTotals = SalesTotals::construct(SalesTable::find( "SAOR000770" )); salesTotals.calc(); cont = salesTotals.displayFieldsCurrency(salesTotals.currencyCode()); info( strFmt ( "Sales order total GST: %1" , conpeek (cont, TradeTotals::posTaxTotal()))); } X++ code to achieve this; This code will print GST against each sales line for selected/passed sales order static void SalesTax_Per_SalesLine(Args _args) { TaxTmpWorkTransForm taxTmpWorkTransForm; SalesTotals salesTotals; TaxSales taxSales; SalesLine salesLine; salesTotals = SalesTotals::construct(SalesTable::find( "SAOR000770"…

Read →
How to get Next RecId through X++ thumbnail

How to get Next RecId through X++

Below piece of code can be used to retrieve next record Id from the table. static void getNextRecId(Args _args) { //Table that stores record ids details for tables SystemSequences systemSequences; //Class that handles Record id generation SystemSequence systemSequence = new SystemSequence(); ; info( strFmt ( "%1" , tableNum (SalesTable))); systemSequence.suspendRecIds( tableNum (SalesTable)); info( strFmt ( "Next record id: %1" , systemSequence.reserveValues( 1 , tableNum (SalesTable)))); systemSequence.removeRecIdSuspension( tableNum (SalesTable)); }

Read →
Lifecycle issue search directly from AX 2012 R3 thumbnail

Lifecycle issue search directly from AX 2012 R3

AX 2012 R3 comes with new feature of searching any issue, if there is any, against each AOT object. Let's take example of SalesTable table and try to lookup issues reported for this object in LCS. It will redirect you LCS site, and requires Partner or Customer source Id to log in. It lists the total number of issues against SalesTable table along with all hotfixes information.

Read →
PostLoad() method in AX tables thumbnail

PostLoad() method in AX tables

Today I found an interesting thing with regards to AX tables and this post is all about this new experience which is the PostLoad() method in AX tables. When we create a new table in AOT, Morphx automatically creates a series of methods for it. We cannot see those methods but those can be overriden on each table as per requirements. PostLoad() is one of these system methods. List of all system methods can be seen from here https://msdn.microsoft.com/en-us/library/aa625830.aspx Lets create a new table, I named it PostLoadTable with two fields Name and Value. I…

Read →
How to check table size from SQL server thumbnail

How to check table size from SQL server

We often require to check size of the table to moniter database performance, specially working with files and storing it in database. AX does store files in database which can be setup under Document types in Document Management module. We can use following sql command to get table size; sp_spaceused docuValue

Read →
Retrieve worker email address through X++ thumbnail

Retrieve worker email address through X++

Below code snipet is one of the way to retrieve employee/worker's primary email address. private LogisticsElectronicAddressLocator getInstructorEmail(HcmWorkerRecId _workerRecId) { LogisticsElectronicAddress logisticsElectronicAddress; HcmWorker hcmWorker; DirPerson dirPerson; DirPartyTable dirPartyTable; select hcmWorker where hcmWorker.RecId == _workerRecId join dirPerson where dirPerson.RecId == hcmWorker.Person join dirPartyTable where dirPartyTable.RecId == dirPerson.RecId join logisticsElectronicAddress where dirPartyTable.PrimaryContactEmail == logisticsElectronicAddress.RecId; return logisticsElectronicAddress.Locator; }

Read →
AX 2012 upgrade - Connect to source database failure thumbnail

AX 2012 upgrade - Connect to source database failure

During database upgrade checklist I was failed to connect with source database. I followed the suggested steps from upgrade guide as pasted below but these weren't enough in my case for successful connection. Configure matching user permissions Windows integrated security is used to connect to the source database from the target system. If the administrative user who is performing the upgrade on the target system does not have access to the source system database, the source system will reject the database connection. Open Microsoft SQL Server Management Studio on the source system and perform the…

Read →
Unit Conversion Check AX2009 Vs AX2012 thumbnail

Unit Conversion Check AX2009 Vs AX2012

AX 2009 if(!UnitConvert::canConvert(this.inventTableModuleInvent().UnitId, this.SAB_ProdPickingUOM, this.ItemId)) AX 2012 unitConvFound = UnitOfMeasureConverter::canBeConverted(UnitOfMeasure::findBySymbol(this.inventTableModuleInvent().UnitId).RecId, UnitOfMeasure::findBySymbol(this.SAB_SalesPickingUOM).RecId, this.Product);

Read →
Show methods in AX lookups thumbnail

Show methods in AX lookups

This sample code is used to show Customer Name in lookup, In AX 2009 we had name field in CustTable but now its moved to DirPartyTable. We still have name() in CustTable which we can use to display name in lookups. AX 2009 client static void lookupInterCompanyItemId(FormStringControl lookupCtrl, DataAreaId _dataAreaId = "") { SysTableLookup sysTableLookup = SysTableLookup::newParameters(tablenum(InventTable), lookupCtrl); Query query = new Query(); QueryBuildDataSource qbds = query.addDataSource(tablenum(InventTable)); ; sysTableLookup.addLookupfield(fieldnum(InventTable, ItemId)); sysTableLookup.addLookupfield(fieldnum(InventTable, ItemName)); sysTableLookup.addLookupfield(fieldnum(InventTable, ItemGroupId)); sysTableLookup.addLookupfield(fieldnum(InventTable, ItemType)); if(_dataAreaId) qbds.company(_dataAreaId); sysTableLookup.parmQuery(query); sysTableLookup.performFormLookup(); } AX 2012 client static void lookupInterCompanyItemId(FormStringControl lookupCtrl, DataAreaId _dataAreaId = "") { SysTableLookup sysTableLookup…

Read →
InventTrans table data model changes in AX 2012 vs AX 2009 thumbnail

InventTrans table data model changes in AX 2012 vs AX 2009

The purpose of this post is to give an overview about the changes been made in the Dynamics AX 2012 data model related to inventory transactions. For more details; how to implement code changes for inventTrans table the best resource is this white paper Implementing InventTrans refactoring for Microsoft Dynamics AX Applications AX2012 Before AX2012, the only table used for recording all the inventory transactions was InventTrans . In AX2009, a lot of data in InventTrans is either redundant or fields are used to represent a specific type of transaction like sales, purchase, transfer etc.…

Read →
AX to SQL data dictionary synchronization issues thumbnail

AX to SQL data dictionary synchronization issues

One of my clients restored their AX database from PROD to DEV environment for AX 2009 and on database sync following error message was thrown Cannot execute a data definition language command on (). The SQL database has issued an error. Problems during SQL data dictionary synchronization. The operation failed. Synchronize failed on 1 table(s) This error message does not tell you which table is failing during sync, when I checked from event log I found following error logs which tells you table name but error message was totally misleading. “Object Server 01: The database…

Read →
Dynamics AX "7" Insights thumbnail

Dynamics AX "7" Insights

http://www.bdosolutions.com/ca/insights/microsoft-convergence-update-part-3-dynamics-ax-roadmap-and-strategy-microsoft-dynamics-ax-7-0/

Read →
Error when validate settings in Report servers by any admin account which is not account used to install the AX reporting services extensions. thumbnail

Error when validate settings in Report servers by any admin account which is not account used to install the AX reporting services extensions.

First thing you need to verify the Service account and Execution Account are properly configured under Reporting Services Configuration Manager. After some troubleshooting, I found UAC was not turned off. I was running on MS Windows Server 2012. UAC has to be turned off via registry by changing the DWORD "EnableLUA" from 1 to 0 in "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system". You will get a notification that a reboot is required. After the reboot, UAC is disabled. After UAC is disabled, the issue is resolved. social.technet.microsoft.com/.../13953.windows-server-2012-deactivating-uac.aspx

Read →
How to create Info part and use it on List page thumbnail

How to create Info part and use it on List page

This post is about how to create info Part in AX and use it on list page. For this example; I am using Projects List page and will add Revenue Info Part on it. Right click on AOT\Parts\Info Parts and create New Info Part Assign Query to this info part I have assigned ProjTable_NoFilter query Add New Group under Layout Name it ProjectRevenue and set few properties as shown Note I haven't assigned DataSource to this group, I will be using data methods to get data here. Add new fields under ProjectRevenue group and name…

Read →
Cannot open the datafile file axapden-us.alt thumbnail

Cannot open the datafile file axapden-us.alt

Faced following error after restoring Dynamics AX databases from one AOS server to other. Cannot open the datafile "C:\Program Files\Microsoft DynamicsAX\60\Server\DAX2012R3\bin\Application\appl\Standard\axapden-us.alt" Error code from the openrating system: errno = 13. Look in file 'errno.h' or in the operating system documentation for an explanation. Resolution: It was the account permssion issue. Make sure AOS service account must have added into Dynamics AX databases with full permissions (at least db_owner). This AOS service account manages the files located at above mentioned path in error. In my Case; Source AOS service was running with domain user account (…

Read →
Export Import Model - Power Shell & Command line statements thumbnail

Export Import Model - Power Shell & Command line statements

I myself often require following commands and worth to have these at one place to get it more quickly. Export a Model File Windows PowerShell Export-AXModel -Model <name> -File <Filename.axmodel> Example: daxture is a model name and it exist in C drive Export-AXModel -Model daxture -File C:\daxture.axmodel Export-AXModel -Server SERVERDB -Database DataBaseName –Model "Model Name" -File c:\temp\xxxxx.axmodel AXUtil Command axutil export /model:<modelname> /file:<filename> /verbose Example: daxture is a model name and it exist in C drive axutil export /model: " daxture" /file:"C:\daxture.axmodel" /verbose Import a Model File Windows PowerShell Install-AXModel -File <Filename.axmodel> -Details Example: daxture…

Read →
Calculate timing in X++ operations [WinAPI::getTickCount()] thumbnail

Calculate timing in X++ operations [WinAPI::getTickCount()]

While reading some lengthy operations e.g. reading data from CSV files, fetching data in query and uploading data etc I wanted to know the time consuming in each opertion. This helped me to optimize my logic or query in making client-server calls. We can use following function to know about time consumption; int startTime, endTime; startTime = WinAPI::getTickCount(); [Perform X++ operations] endTime = WinAPI::getTickCount(); info(strFmt( 'It took %1 minutes' , ((endTime - startTime)/ 1000 )/ 60 )); Note: WinAPI::getTickCount() tells time in milliseconds you need to change accordingly as per your required unit.

Read →
Building query AND using query object in X++ thumbnail

Building query AND using query object in X++

Create and add datasource with range in X++ // Code using X++ to build the query Query query; QueryRun queryRun; QueryBuildDataSource qbds; ProjTable ProjTable; ; query = new Query(); // Add a datasource to the query qbds = query.addDataSource(tableNum(ProjTable)); // Add a range to the newly added datasource. qbds.addRange(fieldNum(ProjTable, ProjId)).value( "00403_1036..00412_1036" ); queryRun = new QueryRun(query); while(queryRun.next()) { projTable = queryRun.get(tableNum(ProjTable)); info(projTable.ProjId + ", " + ProjTable.Name); } Use query object to retrieve AOT query // Code using a query string static void UseAOTQuery(Args _args) { Query query; QueryRun queryRun; QueryBuildDataSource qbds; QueryBuildRange qbr; ProjTable…

Read →
Conditional IIF Sum in SSRS report at group level thumbnail

Conditional IIF Sum in SSRS report at group level

I got a requirement where I want to show sum amount based on differnent conditions. Simple Sum of amount can be shown with following expression; =Sum(Fields!Amount.Value) I tried following expression to show conditional sum on a group level; It did not work :( =Sum(IIF(Fields!name.value = "Standard", Fields!Amount.value, 0)) I tried following expression after getting idea from this blog and it worked =Sum( VAL( IIF(Fields!name.value = "Standard", Fields!Amount.value, 0) ) )

Read →
Use ReportItems in SSRS report thumbnail

Use ReportItems in SSRS report

Sommetime we require to use values from textboxes in SSRS for some calculations or data hiding and some other manipulations. Textbox or any other object on report design is an item of the report and can be accessed through ReportItems!TextBox.value This can be used as on textbox expression =ReportItems!Amount.Value - ReportItems!Amount1.Value

Read →
Count records in Query Vs Cound Loops in Query thumbnail

Count records in Query Vs Cound Loops in Query

Sometime we do need to know the number of records fetching through X++ query and this can be achieved by SysQuery::CountRecords(QueryRun) function. This function works similar to this X++ logic; ProjTable projTable; select count(RecId) from projTable; info(strFmt("%1 total records", projTable.RecId)); // total tecords 1130 Lets see with X++ query; static void CountProjTableRecords(Args _args) { Query query = new Query(); QueryRun queryRun; QueryBuildDataSource qbd; qbd = query.addDataSource(tablenum(ProjTable)); queryRun = new QueryRun(query); info(strfmt("Total Records in Query %1", SysQuery::countTotal(queryRun))); // total tecords 1130 } However, this SysQuery::CountRecords(QueryRun) function count only the number of records of the first datasource.…

Read →
Show last day of the month from date in SSRS report thumbnail

Show last day of the month from date in SSRS report

Following expression can be used to show last day of the monthin SSRS report. Format(DateSerial(Year(Parameters!Dataset1_AsPerDate.Value), Month(Parameters!Dataset1_AsPerDate.Value), "1" ).AddMonths(1).AddDays(-1), "dd/MM/yyyy" ) Input: Parameters!Dataset1_AsPerDate.Value = "02/01/2015" Outout: 31/01/2015

Read →
Show AX full company in SSRS thumbnail

Show AX full company in SSRS

Following expression can be used to show full AX company name from legal entities in SSRS report. =Microsoft.Dynamics.Framework.Reports.DataMethodUtility.GetFullCompanyNameForUser(Parameters!AX_CompanyName.Value, Parameters!AX_UserContext.Value)

Read →
Show Print Date & Time and Page Number in SSRS report - Custom formatted thumbnail

Show Print Date & Time and Page Number in SSRS report - Custom formatted

Following expression can be used to show print date and time in SSRS report. =Microsoft.Dynamics.Framework.Reports.DataMethodUtility.ConvertUtcToAxUserTimeZoneForUser( Parameters!AX_CompanyName.Value,Parameters!AX_UserContext.Value, System.DateTime.UtcNow , "d", Parameters!AX_RenderingCulture.Value ) & " at " & Microsoft.Dynamics.Framework.Reports.DataMethodUtility.ConvertUtcToAxUserTimeZoneForUser(Parameters!AX_CompanyName.Value, Parameters!AX_UserContext.Value, System.DateTime.UtcNow, "t", Parameters!AX_RenderingCulture.Value ) OutPut: 01/01/2015 at 8:14 AM Following expression can be used to show page number in SSRS report. =System.String.Format(Labels!@SYS182565, Globals!PageNumber & space(2) & Labels!@sys26401 & space(2) & Globals!TotalPages) OutPut: Page 1 of 2

Read →
Format a date in SSRS report thumbnail

Format a date in SSRS report

After adding a Date parameter in contract class of SSRS report it starts showing in report's parameters node with Data type DateTime. There is no option to make it either short date or format a date at parameter level. You can use following expression in report design where this parameter has been used in design, mostly in textbox. =format(Parameters!Dataset1_AsPerDate.Value, "dd/MM/yyyy" ) Happy Daxur!ng

Read →
The data source is not embedded within a (parent) data source. thumbnail

The data source is not embedded within a (parent) data source.

This error comes when you try to add new datasource to the top of the query. QueryBuildDataSource qbds; qbds = query.addDataSource(tableNum(newTable)); // This is wrong You should add new table to the Main datasource instead. query.dataSourceTable(tableNum(newTable)).addDataSource(..) // This is correct

Read →
AOT and X++ queries and ranges in AX 2012 thumbnail

AOT and X++ queries and ranges in AX 2012

Let's say we have a query in AOT \Queries\ProjTable And now we want to add more datasources into this query's parent datasource (ProjTable) and some ranges etc. Let's assume we have a class (SRS report data provider class or a dialog class) which is using above query and during processing in this class we want to add more datasources and so on. I created a SRS report data provider class for this example; Class declaration [ SRSReportQueryAttribute ( querystr (MarginAnalysisReportV2Sw)), SRSReportParameterAttribute( classstr (MarginAnalysisReportContractV2Sw)) ] public class MarginAnalysisReportDPV2Sw extends SRSReportDataProviderBase { Query query; TempTable tempTable; RecordInsertList…

Read →
Use enum values and unbounded table fields in insert_recordset thumbnail

Use enum values and unbounded table fields in insert_recordset

insert_recordset is one the greatest enhancement in AX 2012 which allows us to insert records from one to another table in single client-server trip. This is an X++ SQL statement and is similar to update_recordset which i explained in my this post . Sometime we may require to insert values into destination table's column which do not exists in source table's column. To elaborate it more let's have an example and then I will explain you how it works; static void testJob(Args _args) { ProjTable projTable, projTableInsert; ProjStatus enumValue = ProjStatus::Created; str 30 strValue =…

Read →
All about Update_recordset thumbnail

All about Update_recordset

AX 2012 introduces many feature in regards to the performance enhancement and provides ways to access (insert, delete, update) database with less overhead (less database calls). If we talk about updating record(s) in database, few points come into our mind. One is looping through all records and update them in database (will create total number of records calls to database, and will degrade performance). How about to make only one call to database and update all records in this one call. AX 2012 provides way to use X++ SQL statements to enhance performance. This option…

Read →
Cache display methods in AX 2012 thumbnail

Cache display methods in AX 2012

Display methods must be written at the table level However, developers often write display or edit methods to perform some calculations and then bind them on form's controls to allow user to display or edit values in those bounded controls. Display/Edit methods create excessive client-server round trips and impact on product performance. And if there are display methods added on the form it will make 5 client-server round trips, one for each method. Options 1: CacheAddMethod This issue can be addressed by using the CacheAddMethod on the FormDataSource. This method enables the form to calculate…

Read →
"An item with the same key has already been added" in SSRS report thumbnail

"An item with the same key has already been added" in SSRS report

"An item with the same key has already been added" You may encounter this error while creating SSRS report and the reason behind this error is having fields with the same name in the query used in report. To deal with this issue, in AX go to the query used in report and identify the fields that are duplicated between the datasources in the query. Delete overlap field by setting the Dynamic property to NO at fields node of the datasource in query. Happy Daxure!ing

Read →
Unable to find appropriate service endpoint information in the configuration object Dynamics Ax 2012 thumbnail

Unable to find appropriate service endpoint information in the configuration object Dynamics Ax 2012

"Unable to find appropriate service endpoint information in the configuration object Dynamics Ax 2012" There can be multiple reasons to see this error while working on SSRS report in AX 2012. SSRS reports and AOS services communicate via WCF services and these WCF services are either not running on AOS or need to refresh under AX client configuration. First would be, BIServices is not activated under System Administration > Setup > Services and Application Integration Framework > Inbound ports. Second option to resolve this error is to refresh WCF configuration under Connection tab of Dynamics…

Read →
Fiscal calendar period dates and status thumbnail

Fiscal calendar period dates and status

Financial calendars can be created and accessed from General ledger > Setup > Financial calendars. Fiscal calendar periods status (Open, On hold and Closed) can be changed from General ledger > Setup > Ledger > button. Following job can be used to get Start and End date of current Fiscal year static void fiscalCalendarDates(Args _args) { PeriodStart periodStartDate; PeriodEnd periodEndDate; periodStartDate = FiscalCalendarYear::findYearByCalendarDate(CompanyInfo::fiscalCalendarRecId(), systemDateGet ()).StartDate; periodEndDate = FiscalCalendarYear::findYearByCalendarDate(CompanyInfo::fiscalCalendarRecId(), systemDateGet ()).EndDate; info( strFmt ( "%1" , periodStartDate)); info( strFmt ( "%1" , periodEndDate)); periodStartDate = FiscalCalendars::findFirstDayofYear(Ledger::find(Ledger::current()).FiscalCalendar, systemDateGet ()); periodEndDate = FiscalCalendars::findLastDayofYear(Ledger::find(Ledger::current()).FiscalCalendar, systemDateGet ()); info( strFmt (…

Read →
Dynamics AX tab in MS Project Client thumbnail

Dynamics AX tab in MS Project Client

To open Dynamics AX project's WBS structure in MS Project, Microsoft Dynamics Add-in for Microsoft Project must be installed. 1. Open MS Project 2. Create a new blanl project 3. Select the File menu option 4. Select options there and click Add-Ins. You should see "Microsoft Dynamics AX Add-in for Microsoft Project" If it is missed in the list of Active Application Add-Ins and is shown under Inactive Application Add-Ins list. You need to activate it. To activate it; Click on Go... A dialog will pop up and will let you select installed Add-Ins you…

Read →
MS Project client integration with AX 2012 thumbnail

MS Project client integration with AX 2012

This post covers the integration of MS Project Client with MS Dynamics AX 2012 R2 CU7. Services setup in AX 2012 1. For the first time setup we have to deploy AifProjWBS service group from AOT in AX 2012 Project management and accounting parameters in AX 2012 2. Setup appropriate parameter for storing MS project files. In this example I am using Archive directory other option can be Sharepoint. 3. Folder path for Microsoft Project files to sit. It can be local directory path or UNC path. Please make sure UNC path must be accessible…

Read →
Saving and Selecting voucher templates in AX 2012 thumbnail

Saving and Selecting voucher templates in AX 2012

Since there are numerous options available in AX 2012 to create journal lines very quickly from already saved voucher templates. Someone can go with the option which best suites their requirements out of these available options; Voucher Template, Periodic Journal, Allocation Rules and Accrual Schema. This post is all about saving and selecting Voucher Template and here is how we can use this feature; 1. Under General ledger module > Journals > General journal form 2. Select a journal which you want to use as a source for Voucher Template 3. Click on Lines button…

Read →
Computed columns in Views - Dynamics AX 2012 thumbnail

Computed columns in Views - Dynamics AX 2012

Computed columns have been using in SQL server since many versions but this feature was available Dynamics AX since version 2012. Follow steps described here to learn how to create view and walthrough the complete example to understand how can we add computed columns in AX 2012 Views. More examples can be found from here; http://daxmusings.codecrib.com/2011/10/computed-view-columns-in-ax-2012.html Well, here is an example which illustrates how can we add computed columns in a view with different logic. Computed column; Returning Field in View public static server str compAmount() { #define.CompView(SWProjForecastCost) #define.CompDS(ProjForecastCost) #define.CostPrice(CostPrice) return SysComputedColumn::returnField( tableStr (#CompView), identifierStr…

Read →
Retrieving/Picking files from Directory through X++ thumbnail

Retrieving/Picking files from Directory through X++

Following piece of code to pick all files from a directory. static void readFromDirectory(Args _args) { #Evat_NL #File // variable declration to retrieve files from folder Filename baseFolder; Filename pdfFilename; Filename foundBaseFileName; Filename foundFileName; container mainFolder, subFolder, fileContainer; boolean filesFoundMainFolder = true ; boolean filesFoundSubFolder = true ; int apiResult; int startTime, endTime, fileCounter; RecordInsertList recordList = null ; int setCurrentFolder (Filename _filename = '' ) { ; return WinAPI::setCurrentDirectory(_filename); } ; baseFolder = @"C:\Test\invoices\" ; // Reading all pdf invoices from a directory apiResult = setCurrentFolder(SysTreeNode::duplicatePathDelimiters(baseFolder)); mainFolder = WinAPI::findFirstFile( "*.pdf*" ); foundBaseFileName = conpeek…

Read →
Tool to copy security permissions in AX thumbnail

Tool to copy security permissions in AX

Copying security roles, groups, user options and associating worker against user The role based security works very well in AX 2012 and security development tool has also made the life of AX system administrator very charming. It was a nightmare to define security for each user in earlier versions of MS Dynamics AX. However, there is one area which security development tool does not cover and is often required in many occassions. That is "To Copy user roles from one user to another" . Let's say we have created/imported a new user in AX and…

Read →
Passing parameters to another form and open it in Edit mode thumbnail

Passing parameters to another form and open it in Edit mode

Below code can be used to pass one parameter from one form to another and open that form in Edit mode. FormRun formRun; Args args; str defaultFormOnTable; MenuFunction menuFunction; args = new Args(); args.record(CustTable::find(‘test account’)); menuFunction = new MenuFunction( menuitemDisplayStr (CustTable), MenuItemType::Display); if (menuFunction) { menuFunction.openMode(OpenMode::Edit); formRun = menuFunction.create(args); if (formRun) formRun.run(); } In this example I opened customers form in Edit mode by passing customer account 'test account'as a parameter.

Read →
How to validate Email and URL through X++ thumbnail

How to validate Email and URL through X++

With default functionality in AX, Email address and URL can be of any format and these do not get validated as per their respective correct formats. Existing functionality Accounts receivable | Common/Customers | All customers | Customer form | Under Contact information fast tab Someone can put Email address in any format as I did "faisal" which is not a correct format of email address. Same applies for URL under contact information for customers. Customized functionality I created a new class with two static methods to validate these attributes as follows by taking concept from…

Read →
Random number generation through X++ thumbnail

Random number generation through X++

AX has buit-in functionality to generate random numbers. You can use Random class (a kernel class, not visible in AOT) for this purpose. There are two more ways to generate random number in X++ One is using RandomGenerate Class which extends Random class and generates values within specified range; Second is using xGlobal::randomPositiveInt32() method. Example using Random class to generate random numbers (All in CAPITAL letters) public str generateRandomCode() { str pass=''; int length, counter, randInt,randAscii; ; length = 4; for(counter = 1; counter <= length; counter++) { randInt = Random.nextInt(); randAscii = randInt mod…

Read →
Configure Visual Studio to connect/open with correct AOS thumbnail

Configure Visual Studio to connect/open with correct AOS

Visual Studio is essential to create/edit SSRS reports with MS Dynamics AX 2012 and later releases. Here are steps to configure visual studio with correct AOS (in my case it is development AOS). Connect with computer where visual studio is installed Go to location where visual studio file is installed and placed. In my case it is placed at C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE Right click and sent to create shortcut to desktop (one can create shortcut anywhere) Right click Visual Studio shortcut (will name something "devenv - shortcut") and take properties Set target =…

Read →
Running AX 2012: "An invalid directory structure for Microsoft Dynamics AX was detected" thumbnail

Running AX 2012: "An invalid directory structure for Microsoft Dynamics AX was detected"

I came across an issue recently when I tried to run Dynamics AX 2012 from client configuration file on 32-bit operating system. Client configuration file was created on 64-bit operating system and was copied to 32-bit operating system computer to use. As error says it tries to bind directory at path C:\Program Files (x86)\Microsoft Dynamics AX\60\\Client\Bin which was not exist on 32-bit operating system. Resolution 1 Open client configuration (.axc) file in notepad and change the path at the very end of file. This path should match your directory structure in computer. Source computer (64…

Read →
The target prinipal name is incorrect - SSRS with AX thumbnail

The target prinipal name is incorrect - SSRS with AX

Following error made me worried when I was not able to run (existing or customized) SSRS reports from AX. Reports were working fine few days back and there wasn’t a single change done neither at report server nor with AOS service accounts. After digging into issue, came across the issue was services and services groups in AOT. My AOS was connected with TFS and when I got latest from TFS it affects SRSFramework and SSASFramework services and there was some sort of reference lost in service groups. Resolution: Generate FULL CIL Confirm the Business proxy…

Read →
Assigning security roles to new AX user was never that easy !!! thumbnail

Assigning security roles to new AX user was never that easy !!!

Some time before I got a chance to write on a utility to make user role assignment a much easier....on ONE click. For example; a new accountant joined your organization and CFO asked AX System Admin to add this new user into AX and give him/her same permissions as other accountants have in AX. Without this utility AX system Admin will open existing user roles in a seperate window and add these roles for new joined users....Is it not the time consuming activity when you have to add dozens of roles. This utiltiy not limited…

Read →
Let's have inside into MS Dynamics AX 2012 R3 thumbnail

Let's have inside into MS Dynamics AX 2012 R3

Inside MS Dynamics AX 2012 R3 is released with new features (functionally) and performance enhancement (technically). http://blogs.msdn.com/b/microsoft_press/archive/2014/08/12/new-book-inside-microsoft-dynamics-ax-2012-r3.aspx

Read →
Collection classes in AX – What, When and How to use thumbnail

Collection classes in AX – What, When and How to use

Data inserting, traversing and retrieving can be done with many different ways in AX. We do have different collection classes for it and each one has its own importance and performance impact. Let’s talk about each one by one and compare it. List - are structures, contain values of any X++ type that are accessed sequentially - all values must be of same X++ type (specified through baseEnum types) - type is defined on creation and cannot be modified after initialization - can be traversed through ListEnumerator class - values can be added from both…

Read →
How Exception handling Try/Catch statements work in AX thumbnail

How Exception handling Try/Catch statements work in AX

A sample code for Try/Catch statements in AX under run method in a class. public void run() { #OCCRetryCount try { } catch (Exception::Deadlock) { retry ; } catch (Exception::UpdateConflict) { if (appl.ttsLevel() == 0 ) { if (xSession::currentRetryCount() >= #RetryNum) { throw Exception::UpdateConflictNotRecovered; ...

Read →
Signing limits for Business Documents in AX 2012 thumbnail

Signing limits for Business Documents in AX 2012

A signing limit defines the largest financial commitment that a worker is authorized to make on behalf of an employer. There are two types of signing limits — spending limits and approval limits . A spending limit is the maximum amount a worker is authorized to spend on business-related purchases. An approval limit is the maximum amount a worker is authorized to approve for a specific business document when the document is submitted to workflow. The limits are associated with a worker's job or compensation level. Signing limits can also vary depending on the transaction…

Read →
SSRS report expressions - compiled and ongoing thumbnail

SSRS report expressions - compiled and ongoing

How to get full AX company in SSRS report =Microsoft.Dynamics.Framework.Reports.DataMethodUtility.GetFullCompanyNameForUser(Parameters!AX_CompanyName.Value, Parameters!AX_UserContext.Value) How to show alternate row colour in SSRS report Set following expression to row’s background property =IIf(RowNumber(Nothing) Mod 2 = 0, "LightGrey", "WhiteSmoke") How to format a date =format(Parameters!Dataset1_AsPerDate.Value, "dd/MM/yyyy" ) How to show date and time on report =Microsoft.Dynamics.Framework.Reports.DataMethodUtility.ConvertUtcToAxUserTimeZoneForUser(Parameters!AX_CompanyName.Value, Parameters!AX_UserContext.Value, System.DateTime.UtcNow, "d" , Parameters!AX_RenderingCulture.Value) & " at " & Microsoft.Dynamics.Framework.Reports.DataMethodUtility.ConvertUtcToAxUserTimeZoneForUser(Parameters!AX_CompanyName.Value, Parameters!AX_UserContext.Value, System.DateTime.UtcNow, "t" , Paramete...

Read →
Debug/Test SSRS report in AX 2012 thumbnail

Debug/Test SSRS report in AX 2012

People came across issues like report is not showing data on report or data is not per their expectation. It is really hard to judge where it goes wrong and what needs to be correct in which class RDP, Contract, UI or Controller. Following sample job can be used to debug SSRS report processing data and lead to find what goes unexpected. For more information about classes and table used in this example please read my previous post static void FF_ReportDPTest(Args _args) { // temp table declaration FF_ReportTmpTable ffReportTmp; // RDP class binded with FF_Report…

Read →
Run SSRS report from AX form thumbnail

Run SSRS report from AX form

Continue from my previous post where I developed an example using all SSRS framework classes. One of them is controller class which is used to call SRS report from AX forms. Just for the note controller class is used for following purposes. Modifying a report query based on the input data Modifying report contract data based on the input data Control a report parameters dialog Open different reports/designs from the same menu item based on the input data Reports that are opened from a form Example; how to call report from AX form button/menuitembutton click…

Read →
Customise code tagging in AX 2012 – MS Dynamics AX Best practice thumbnail

Customise code tagging in AX 2012 – MS Dynamics AX Best practice

Code commenting is one of the best practice for any software development which really helps other team mates or future developers to understand code quickly. Code comments should be enough expounding for others. MS Dynamics AX provides diverse possibilities to comment out code in much better and generic way through scripts. This can be used by right click in any method within AOT objects as shown; Here we also have tagging option to use generic way to comment out our code and this could be really helpful when working on big projects. MS Dynamics AX…

Read →
Business/Working days in AX thumbnail

Business/Working days in AX

Following job is to calculate business days/working days in AX using base calendars. In my case base calendar name is "24/5" you can change it as per your setup. static void businessdaysInPeriod(Args _args) { WorkCalendarSched workCalendarSched; date start; date end; counter workingdays; counter totaldays; CalendarId primCalendar= "24/5" ; ; start = str2date ( "21-11-2014" , 123 ); end = str2Date ( "26-11-2015" , 123 ); workCalendarSched = new workCalendarSched(); while (start<=end) { totaldays++; if (workCalendarSched.isdateopen(primCalendar,start)== true ) { workingdays++; } start++; } info( strfmt ( "Total days: : %1" ,totaldays)); info( strfmt ( "Total working…

Read →
Stop deletion of record from a table thumbnail

Stop deletion of record from a table

Recently came across an issue where records from customized tables were being deleted occasionally. Following wat did a quick fix for me to stop further records delete from table. Overwrite delete method on table and comment super(). This also stops deletion from code, e.g. if we write query delete_from table this commented super will prevent user to delete record from table. public void delete() { //super(); } This will also stop deletion from code too. e.g. It worked fine but records can also be deleted by pressing Ctrl+F9 on table browser. To handle this situation…

Read →
Send email from AX using live or gmail exchange server thumbnail

Send email from AX using live or gmail exchange server

You may find few more posts over this topic to send emails from AX using live (Hotmail) or gmail exchange server. This is really helpful when we don’t have exchange is in place sometimes due to high cost or you just want to send emails for testing or demo purpose. Let’s see what parameters need to setup and how can we achieve this requirement. Go to System Administration | Setup | System | E-mail parameters P.S. I am using a dedicated email account at outlook (Hotmail) domain for this example. NTLM option can also be…

Read →
Failed to create a session; confirm that the user has the proper privileges to log on to Microsoft Dynamics thumbnail

Failed to create a session; confirm that the user has the proper privileges to log on to Microsoft Dynamics

I faced this issue " Failed to create a session; confirm that the user has the proper privileges to log on to Microsoft Dynamics" when I imported MS contoso data into my new created AX environment. Though this is not specific to MS contoso data import, you can have on original post which solved my problem too. http://www.ksaelen.be/wordpresses/dynamicsaxblog/2013/02/ax2012-r2-db-sync-failed-to-create-a-session/

Read →
Number sequence framework step by step thumbnail

Number sequence framework step by step

There are many posts over the internet address Number Sequence framework, I found a worth sharing slides which tells you; How to create new number sequence How to use number sequence in form How to use number sequence in X++ Microsoft dynamics ax2012 : Number Sequence Framework, Step by Step from Hamdaoui Mohamed Amine

Read →
Delete legal entities in AX 2012 thumbnail

Delete legal entities in AX 2012

Delete a legal entity seems to be a straight forward option in AX, just click on delete button on legal entity form. This does not work sometimes as per your thoughts and you face errors like below. Cannot delete a record in Ledger (Ledger). The corresponding AOS validation failed. Stack trace: Call to TTSCOMMIT without first calling TTSBEGIN. Stack trace (S)\Classes\xRecord\Delete (S)\Data Dictionary\Tables\DirPartyTable\Methods\Delete - line 14 (S)\Data Dictionary\Tables\DirOrganizationBase\Methods\Delete - line 17 (S)\Data Dictionary\Tables\CompanyInfo\Methods\Delete - line 31 (S)\Classes\xRecord\dbOpInTransaction (C)\Classes\FormDataSource\delete (C)\Classes\FormRun\task (C)\Forms\OMLegalEntity\Methods\task (C)\Classes\SysSetupFormRun\task OR Cannot delete a record in Batch job (BatchJob). The corresponding AOS validation failed.…

Read →
AX 2012 - Import Free Text Invoices - Header and lines - from one excel file thumbnail

AX 2012 - Import Free Text Invoices - Header and lines - from one excel file

I got a requirement to upload free text invoices into AX 2012 from one excel file. All the header and lines information was in one excel sheet so I had to came up with different solution than the import process described on many blogs or can be done through built in AX classes. However, those import process work perfectly if you have data into seperate files or only for one record. Here is the job which I used to import free text invoices into AX 2012. In this job I used a table CustomerInvoices (new…

Read →
Stopped (error): X++ Exception: Could not find user at SysWorkflowDueDateProvider thumbnail

Stopped (error): X++ Exception: Could not find user at SysWorkflowDueDateProvider

I developed a custom workflow and its setup its corresponding configuration, I was able to submit and everything but ended up getting the following error in my workflow history when the workflow system tried to assign it to user which is the part of managerial hierarchy. "Stopped (error): X++ Exception: Could not find user at SysWorkflowDueDateProvider-resolve SysWorkflowDueDateProvider-resolveDueDate SysWorkflowQueue-resume" I setup the workflow assignment for managerial hierarchy (position hierarchy) which was correctly setup under Human Resource > Common > Positions > Position hierarchy. Later when I checked the worker association with users I found that under…

Read →
SSRS permissions issue; cann't able to run from AX non admin user thumbnail

SSRS permissions issue; cann't able to run from AX non admin user

Question: I have been facing the following issue while running SSRS reports from AX non-admin user. Please be informed that all the required permissions have been assigned from reporting service manager like content manager and browser…even I gave all. ANSWER: There are three areas where I have to define the security. 1- Site Settings 2- Folder Settings 3- Individual Folder Security I was missing the last one.

Read →
Microsoft Dynamics AX 2012 R3 Virtual Machine is available thumbnail

Microsoft Dynamics AX 2012 R3 Virtual Machine is available

Microsoft has released the Microsoft Dynamics AX 2012 R3 demo machine. Download is available at partnersource and customersource. Early in Macy 2014 Microsoft release Microsoft Dynamics AX 2012 R3 and can also be downloaded from the links mentioned in my previous post . At that time the application was general available and could be installed using the Microsoft Dynamics AX 2012 R3 setup files or you could deploy a virtual machine on Azure . This demo virtual machine can now be run at your own hardware using hyper-V as earlier demo machines versions use to…

Read →
Import HRM Positions from Excel through X++ thumbnail

Import HRM Positions from Excel through X++

You can use different options to import data into Dynamics AX 2012 specially the subject line entity (Positions). Data import/export framework would be the best option to import it, you can also use excel addins for this purpose. However, due to large number of tables involved in few import process it might be difficult to judge right tables and their sequence. You can also use X++ code to import data into AX either from CSV file or from Excel file. The following job in X++ may help you in importing positions from excel file. static…

Read →
SysDictTable object not intialized - Data Import/Export Framework thumbnail

SysDictTable object not intialized - Data Import/Export Framework

I got the following error while importing Employee Master data using Data Import/Export Framework (from staging to target entities). After doing some debugging I found there was a table “ RetailStaffTable ” in Emloyee Entity structure but the Retail configuration key was turned off or Retail components were not installed. I ended up deleting the record from the DMFTargetEntityHierarchy table. (Alt+F9 to delete from table browser). I reran the process and it went fine.

Read →
Restrict non-admin users to open multiple sessions in AX thumbnail

Restrict non-admin users to open multiple sessions in AX

Few times client asked to restrict their users to not open AX sessions multiple times. As It may impact on performance somehow. The following code snipet can do this job for you. NOTE: Please take backup of your application before copying code Copy Paste the Following Code in startupPost method of info class in AOT void startupPost() { // To restrict user login form second login xSession session; SysClientSessions SysClientSessions; UserId currentUserId; int counter; currentUserId = curUserId(); if(currentUserId!="Admin")// Allow Admin User to login multiple time { while select SysClientSessions where SysClientSessions.userId == currentUserId && SysClientSessions.Status…

Read →
AX 2012 - Compile and CIL Generation errors thumbnail

AX 2012 - Compile and CIL Generation errors

Someone may come across the following compilation errrors in classes while compiling the application; \Classes\BIGenerator\classDeclaration \Classes\DMFBIConfigurationEntityClass\classDeclaration \Classes\SysStartupCmdGenerateSsasProject\buildProject \Classes\BIAnalysisServicesProjectController\classDeclaration When I dig into these errors it was related to Microsoft.Dynamics.AX.Framework.Analytics.DLL that is installed with Reporting Extensions. Fix: Install the SQL 2008 R2 Analysis Managment Objects (my running version of SQL) on the same machine as the AX Client (in my scenario, the AOS server) . Then recompile!

Read →
AX 2012: Forms and Tables methods call sequence thumbnail

AX 2012: Forms and Tables methods call sequence

Many a times we came across the point that where should we write code either it would be in init() of a form or in datasource init() method. And which method will be called first and where you can actually retireve record and what would be best way to accomplish few basic requirements without impacting the performance. For all above reasons I found an interesting link and thought it would be worth sharing here. http://www.slideshare.net/HamdaouiAmine/microsoft-dynamics-ax2012-forms-and-tables-methods-call-sequences-30159669#

Read →
Access denied; Copying DLL into Windows Server 2012 thumbnail

Access denied; Copying DLL into Windows Server 2012

Installing .DLL file into GAC folder of windows is just a drag & drop procedure and it always work. However, things can be annoyed if this simple thing does not work as it happened with me and I was having the following access denied error even I was logged in with Administrator. There is another way to install .DLL file through power shell and following commands can be used to install and remove .DLL from GAC folder. You can also have a look on techNet article for more details. Add a DLL to the GAC…

Read →
Dynamics AX 2012 R3 is released! thumbnail

Dynamics AX 2012 R3 is released!

Dynamics AX 2012 R3 is now released and can be downloaded from this link link https://mbs.microsoft.com/partnersource/northamerica/deployment/downloads/product-releases/MSDYAX2012R3Release

Read →
AX 2012: How to retrieve the license information through X++ thumbnail

AX 2012: How to retrieve the license information through X++

Recently I came across the requirement to retrieve the licence information from the system to use it for some purpose. Here is the sample to job to get license information. static void getLicenseValue(Args _args) { str licVal; licVal = xSysConfig::find(ConfigType::SerialNo, 0).Value; info(strFmt("%1", licVal)); } Output:

Read →
Dynamics AX 2012 - Advanced Performance Optimization - Part 1 thumbnail

Dynamics AX 2012 - Advanced Performance Optimization - Part 1

To maintain the performance of an application with large amount of data is always being a night dream for any organization. However, things can be control with pro-active steps and can easily be managed if something happen other than expectation. This blog entry is mainly focused on some of the (there can never be 100%) points which we can take into our consideration while implementing and customizing Dynamics AX 2012. Dynamics AX AOS settings Index Hints and LTRIM The best practice is to disable index hints allowing SQL Server to decide the most efficient way…

Read →
CIL generation: Duplicate type name within an assembly. thumbnail

CIL generation: Duplicate type name within an assembly.

Issue Definition: I have been trying to generate a FULL CIL into our working live environment and suddenly it started giving me the following error; CIL generation: Duplicate type name within an assembly. Assessments: I did the following steps: 1- Strong recommendation, apply latest kernel build. Download link: Package: ----------------------------------------------------------- KB Article Number (s) : 2957061 Language: All (Global) Platform: i386 Location: ( http://hotfixv4.microsoft.com/Microsoft%20Dynamics%20AX%202012%20R2/nosp/KB2957061/6.2.1000.7176/free/474249_intl_i386_zip.exe ) 2- To improve Compilation speed I did following changes : - For the full compile not catching all the syntax errors, please follow the X++ code workaround suggestion: Under \Classes\SysCompilerOutput\startCompilation…

Read →
Microsoft Dynamics AX2012 R2 CU 7 has been released thumbnail

Microsoft Dynamics AX2012 R2 CU 7 has been released

Microsoft has released a new cumulative update for Microsoft Dynamics AX2012 R2, named Cumulative Update 7 (KB2885603). The version number of this release is 6.2.1000.4051. You can download the update here . More information on Partersource and Customersource will be available soon. There is an installation guide for this update available on the Microsoft Download site. Download it here .

Read →
CodeFlow - A code review tool from Microsoft. thumbnail

CodeFlow - A code review tool from Microsoft.

For better and efficient code reviews, Microsoft has developed a tool called CodeFlow and it will be shipped in the next version of Microsoft Visual Studio. More information and screen shots about this tool can be seen in the below links: http://www.microsoft.com/en-us/news/features/2012/jan12/01-05CodeFlow.aspx http://prashantsblogs.wordpress.com/2013/01/31/54/

Read →
Importing data in AX using Data Import/Export Framework thumbnail

Importing data in AX using Data Import/Export Framework

Here is an excellent blog , which explains how to use the Data import/export framework (old name Data migration framework) to import data in AX. The blog walks you through the different scenarios of data import in AX.

Read →
Using Code review feature in Visual Studio 2012 to send code reviews. thumbnail

Using Code review feature in Visual Studio 2012 to send code reviews.

Efficient code reviews during development phase always helps identify the issues earlier and prevent rework and bugs in later stages of the project. For effective code reviews, there is a code review tool available in Visual Studio 2012 which can be used to improve code quality. To use this feature, all your code changes must be moved to TFS repository. Another pre-requisite is that you need to have an SMTP server setup for your TFS server. Without this, code review emails cannot be send to specific reviewers. Below are the related links which helps you…

Read →
WebSearchAx tool for searching stuff related to AX thumbnail

WebSearchAx tool for searching stuff related to AX

I found a web search tool for AX which some of you might already be using it, but it is a great tool to know about if you haven’t used it before. The WebSearchAx tool for AX is used to apply advanced criteria to your search for Help about Microsoft Dynamics AX. You can search about AX stuff according to specific roles like developer, system administrator, application user and can also limit the search criteria to specific version of AX. WebSearchAx can also search the web for white papers, code samples, and blog entries about…

Read →
New version of the task recorder has been released thumbnail

New version of the task recorder has been released

A new version of the task recorder has been released. New features: - Video capturing of tasks (might be handy for support and training purposes) - The ability to generate a package for the business process modeller in Lifecycle services (not exactly sure what this means but it might be useful) link in case you’re interested. http://www.microsoft.com/en-us/download/details.aspx?id=39353

Read →
Overview of AX build numbers thumbnail

Overview of AX build numbers

Most of the times when we start working with new clients and are being asked to update their systems with new requirements. We start looking into which version of AX is installed? what is the build version ? Have any hotfixes installed on it or have any one installed any rollup or commulative update in the system. Many a times response from clients is "We really don't about it!". Below link can help you to find out answers of these questions yourself quickly; http://blogs.msdn.com/b/axsupport/archive/2012/03/29/overview-of-ax-build-numbers.aspx

Read →
How to display dimension combination values name in AX 2012 thumbnail

How to display dimension combination values name in AX 2012

Dimension combinations are stored are DimensionAttributeValueCombination class. But they are stored as a combination for example: (100010-AX-00001- – - -). How would you know the value in each combination belongs to what dimension? This was one of my requirements to find name against each dimension combination values and display it on Trial Balance screen. The answer is through dimension storage class. This class is used to manipulate these combinations. The code below helps you in finding out the required values.

Read →
“How Do I” Videos — Dynamics AX thumbnail

“How Do I” Videos — Dynamics AX

“How Do I” Videos — Dynamics AX Read full post at Dynamics AX Developer Center http://msdn.microsoft.com/en-us/dynamics/ax/cc507280 “How Do I” Videos — Dynamics AX On this page you will find videos designed for all Microsoft Dynamics AX developers, from the novice to the professional. New videos are added regularly, so check back often. Forms Series This how-to video series is focused on forms and their features in Microsoft Dynamics AX. How Do I: Link Parent and Child Forms by Using Dynamic Links? (6 minutes, 47 seconds) Enterprise Portal Series This how-to video series is focused on…

Read →
How to add financial dimension on forms inside AX 2012 thumbnail

How to add financial dimension on forms inside AX 2012

Add financial dimension on forms inside AX 2012 1. Perform a) Open AOT>>Data Dictionary>>Extended Data Types type/select DimensionDefault and drag it in table which will be used further as a datasource in form where you have to show the Dimensions. Do Remember that you have to drag it in table not at DataSource. b) Open Table in the Data, Dictionary which will be used as a Datasource, and create a realtion with table DimensionAttributeValueSet . c) Right Click the Relations. Select ‘New Realation’. Select properties. Set name as DimensionAttributeValueSet, Table as DimensionAttributeValueSet. d) Right Click…

Read →
AX 2012 Developer Resources thumbnail

AX 2012 Developer Resources

AX 2012 Developer Resources This page collects the AX 2012 Development Articles available at blog , as well as the most relevant links to Microsoft documentation. They are arranged by topic. You will find duplicate links for articles that touch multiple topics. General Topics Microsoft Guide: What's New for Developers (download) [fixed link - thanks to reader Waldemar Pross] Microsoft Guide: New, Changed and Deprecated Features (download) Microsoft Whitepaper: Deploying Customizations Across Environments (download) Dynamics AX 2012 System Requirements (download) Deploying AX 2012 Code Importing Data Using the Excel Add-Ins X++ Language X++ as a…

Read →
"Error when executing direct SQL – SqlStatementExecutePermission” thumbnail

"Error when executing direct SQL – SqlStatementExecutePermission”

While accessing SQL statements within AX world I came across an error which was really time consuming for me to get rid of. I created a method like this; It got failed while executing statement and gave following error " Error when executing direct SQL – SqlStatementExecutePermission” on line resultSet = statement.executeQuery(sql); SOLUTION: You can solve this issue easily, if you use the method marked as server static and call this method from the display method.

Read →
Dynamics AX 2012: "Precision lost" warning message thumbnail

Dynamics AX 2012: "Precision lost" warning message

This post is copied from Peter Villadsen blog and I thought to share it on my blog too. It really helped me a lot. A question came up at today's webinar where a developer had a (presumably legitimate) reason to cast a real value into an integer value. The X++ language does not allow explicit casting (there's no support for it in the language), but the compiler will do its best to satisfy the user and do the conversion on its own. In this case, however, it issues a warning message, lest this is not…

Read →
Code for Traverse between Tables and all the fields thumbnail

Code for Traverse between Tables and all the fields

With reference of Bineet's blog here I found the code for Traverse between tables and all the fields. //Travese between tables and for each table traverse between all the fields static void TeeNode_traverse(Args _args) { TreeNode treeNode, treeNodeTable; TreeNodeIterator iterator; void traverseFields(TreeNode _treeNode) { TreeNode parentNode; parentNode = _treeNode.AOTfindChild(‘Fields’); //treeNodeTable = _treeNode.AOTfirstChild(); iterator = parentNode.AOTiterator(); parentNode = iterator.next(); while(parentNode) ...

Read →
How to get table name and number of records in each table in AOT thumbnail

How to get table name and number of records in each table in AOT

Today, I came across a requirement to find out the name of each table in AOT along with the number of records for each table. Here is the code to achieve this functionality; void getTableNameRecordCount(Args _args) { #AOT Name name; NumberOf recordCount; TreeNode treeNode; SysDictTable sysDictTable; ; treeNode = TreeNode::findNode(#TablesPath); treeNode = treeNode.AOTfirstChild(); while (treeNode) { name = treeNode.AOTname(); sysDictTable = SysDictTable::newTableId(treeNode.applObjectId()); recordCount = sysDictTable.recordCount(false); if (recordCount) info (strfmt("@SYS26868", name, recordCount)); treeNode = treeNode.AOTnextSibling(); } }

Read →
Inside MS Dynamics AX 4.0 and MORPHIX IT thumbnail

Inside MS Dynamics AX 4.0 and MORPHIX IT

Inside MS Dynamics AX 4.0: http://www.4shared.com/file/hI4Hbnn7/MicrosoftPressInsideMicrosoftD.html? MORPHIX IT: http://www.4shared.com/file/hI4Hbnn7/MicrosoftPressInsideMicrosoftD.html?

Read →
CRUD operation in Dynamics AX 2009 through .Net business connector thumbnail

CRUD operation in Dynamics AX 2009 through .Net business connector

Friends, rather going into more details about "How to's" of accessing Dynamics AX through .Net, my main objective is to share my experience of performing CRUD operations in Dynamics AX 2009 through .Net BC. Here is a sample code; // CREATE OR INSERT SAMPLE // Create the .NET Business Connector objects. Axapta ax; AxaptaRecord axRecord; string tableName = “AddressState”; try { // Login to Microsoft Dynamics AX. ax = new Axapta(); ax.Logon(null, null, null, null); // Create a new AddressState table record. using (axRecord = ax.CreateAxaptaRecord(tableName)); { // Provide values for each of the AddressState…

Read →
How to reuse table Id in Dynamics AX thumbnail

How to reuse table Id in Dynamics AX

Sometime we created tables just for testing purpose within AOT and later on we delete these tables. In such cases we don't care about the IDs which are created for each table. There is a way to use these system generated IDs for other newly created tables. You can do this by following steps; 1. Export the table with its current id. 2. Delete the table 3. Edit the xpo file and change the id to what you want 4. Import the xpo file with the id option checked. As long as the id is…

Read →
Dynamics AX 2009: How to retrieve table properties thumbnail

Dynamics AX 2009: How to retrieve table properties

Here is the sample code to retrieve table properties in Dynamics AX 2009. static void TableProperties(Args _args) { Dictionary dictionary; TableLabel tableLabel; SysdictTable dTable; TreeNode Tnode; ; //initilize the data dictionary dictionary = new Dictionary(); // Replace _tableId parameter with the actual table id dTable = new SysDictTable(_tableId); // initilize the tree node to traverse each property of the table tNode = dTable.treeNode(); // Replace "Label" with any property name of th...

Read →
Secure your MS Dynamics AX thumbnail

Secure your MS Dynamics AX

Data security has always been the main concern of every organization, implementing MS Dynamics AX. I will not increase the length of the post by going into details of "How to's" of security setup in Dynamics AX. Attached manual is providing the brief of security and is very useful to understand the basics of security in AX. Microsoft Dynamics Ax Security

Read →
Refresh DataSource and retain position thumbnail

Refresh DataSource and retain position

This post has been copied from http://devexpp.blogspot.com/2012/02/refresh-datasource-and-retain-position.html Refresh a DataSource is a very common task to Dynamics AX developers, as you'll most likely perform changes on a record and have to present it to the user, on a form . The most commonly used method to refresh the DataSource to make a form show what you have changed on a record is the research method. The only problem is that the research method doesn't retain the record that was selected, it positions the DataSource on the first record of the result, causing the user to…

Read →
Get and Set values implicitly in web control in EP thumbnail

Get and Set values implicitly in web control in EP

DataSetViewRow row; row = AxDatasource.GetDataSet().DataSetViews["DataSetViewName"].GetCurrentRecord(); // Get old value row.GetFieldValue("FieldName"); // Set new value row.BeginEdit(); row.SetFieldValue("FieldName", NewValue); row.EndEdit();

Read →
Retrieving data from AX table in EP thumbnail

Retrieving data from AX table in EP

Sometime we are in need of retrieving data from the tables which are not added in form's datasource in EP page. To manipulate the data from tables other than datasource (in EP) or dataset (in AX), following code will work.

Read →
Hide Fields in a AxGroup /AxForm in Enterprise portal thumbnail

Hide Fields in a AxGroup /AxForm in Enterprise portal

There was a requirement to hide/un-hide the fields within AXGroup according to the setup defined in AX form either to show fields or not as per user. protected void AxFrmEmployee_PreRender(object sender, EventArgs e) { AxForm frm = this.axFrmEmployee; for (int i = 0; i < this.AxGroup1.Fields.Count; i++) { AxBoundField fld = this.AxGroup1.Fields[i] as AxBoundField; if ((fld != null) && (fld.Metadata.Name == "TitleId")) { fld.Visible = (frm.CurrentMode == DetailsViewMode.ReadOnly) ? false : true; } } }

Read →
Accessing the URL of AxUrlMenuItem from AX into EP (Code behind) thumbnail

Accessing the URL of AxUrlMenuItem from AX into EP (Code behind)

Sometimes we need to change/append the URL defined on AXURLMenuitem in Dynamics AX 2012 in order to open different EP pages based on user selection. Here is the code to Create the complete URL in code (based On eb Menu Items) protected override void OnPreRender(EventArgs e) { // Get the URL for the webpage that referenced the current record AxUrlMenuItem url = new AxUrlMenuItem("EPSalesTableInfo"); // update the hyperlink to point to the URL hpRecord.NavigateUrl = url.Url.ToString(); // you can use this URL to redirect to any page like Response.Redi...

Read →
Making string field a custom lookup on user selection thumbnail

Making string field a custom lookup on user selection

Sometimes we just compile our posts to keep the things at one place so we or someone can get it easily when we in need. This post belongs to the same concept :) Requirement was to filter the records in grid according to the selection of base enum values from a lookup. Easy task :) but then I had to make a string field a custom lookup on selection of first value from base enum and to make it a read only on selection of second value of the base enum. This is what I…

Read →
How to configure and run AX 2012 Hyper-V on Virtualbox thumbnail

How to configure and run AX 2012 Hyper-V on Virtualbox

I've found an interesting link about how to run AX 2012 VPC on Windows 7 without any need for Windows 2008 Hyper-V server installed on your machine. Configuring and running the AX 2012 Hyper-V image with VirtualBox Step by Step guide Video

Read →
.NET business connector to access Dynamics AX from .NET world thumbnail

.NET business connector to access Dynamics AX from .NET world

Few days before I was struggling to import the huge file data from excel into Dynamics AX as AX COM connector is not much powerful to import huge file data from excel. One of mine friends suggested me to go through .Net business connector to achieve the import functionality more quickly. Here is the link which you can also find useful while integrating AX with different .Net based applications. http://blogs.msdn.com/b/cesardelatorre/archive/2007/07/06/accessing-dynamics-ax-4-0-from-net-using-the-dynamics-ax-net-business-connector.aspx

Read →
Microsoft Dynamics AX workflow thumbnail

Microsoft Dynamics AX workflow

I found a comprehensive blog describing the tips and tricks and code samples to implement workflow in your environment. I will be pleased to share it with all ; http://workflowax.wordpress.com/

Read →
Manage, Update & Deploy Workflows in AX 2012 thumbnail

Manage, Update & Deploy Workflows in AX 2012

I found a very good video describing how we can manage, update and deploy workflows in AX 2012. This demo is demonstrating how workflow is configured and running in Purchase Requisition Process. Link to video: Manage, Update & Deploy Workflows

Read →
Import sales orders from master and details text files thumbnail

Import sales orders from master and details text files

The are many code snippets which you can find easily over the internet to import sales orders from a text file or from excel. The purpose of this post is to share my experience of uploading data into sales order form from two different text files. void ImportSalesOrders() { Container con; CustTable custTable; SalesTable salesTable; SalesLine salesLine; Headers headers; Stock details; num newSalesI...

Read →
Dynamics AX and database synchronization error thumbnail

Dynamics AX and database synchronization error

Due to huge customization in application we may come across database and application synchronization failure issue. Sometimes you will see this error when you add some new fields in CustTable or SalesTable, this is just for an example you can have this issue in any table or view. Following job will forcefully synchronize all the tables in AOT. static void forceDbSynchronize(Args _args) { Dictionary dict; int idx, lastIdx, totalTables; TableId tableId; Application app...

Read →
Delete duplicate records from table thumbnail

Delete duplicate records from table

Sometimes we lost unique identity check in the tables while doing some customization in Dynamics AX. It may happen due to failure of database synchronization. Here is the code to remove the duplicate records from a table, I used Dimension table as an example; static void deleteduplicate(Args _args) { set fieldSet = new set(Types::Integer); // create dicindex from the unique index DictIndex dictIndex = new Dictindex(tablenum(Dimensions),indexnum(dimensions, DimensionIdx)); ; // these are the fields from the index // add them to a set fieldset.add(fieldnum(Dimensions, DimensionCode)); fieldset.add(fieldnum(Dimensions, Num)); // set allow duplicates ReleaseUpdateDB::indexAllowDup(dictIndex); // delete duplicate records…

Read →
Format the system date in Dynamics AX thumbnail

Format the system date in Dynamics AX

The following code show the dates in format like December 22, 2011 static void datesJob(Args _args) { str dd, mm, yy, dt; dt = date2Str(systemDateGet(), 123, DateDay::Digits2, DateSeparator::Slash, DateMonth::Digits2, DateSeparator::Slash, DateYear::Digits4); dd = substr(dt, 0, 2); mm = substr(dt, 4, 2); yy = substr(dt, 7, 4); dt = mthname(str2int(mm)) + ' ' + dd + ', ' + yy; print dt; pause; }

Read →
Dynamics AX – Use definition groups to import data thumbnail

Dynamics AX – Use definition groups to import data

It’s perfectly correct that we always learn when we want to or when we are in need of achieving goals. This happened to me for last couple of weeks when I was looking for different ways to import data in Dynamics AX 2009. I came to know that we can use data definition groups under Administration > Periodic > Data export/import > Definition groups to import data from excel or csv files. Here you can find the complete information to import data using data definition group. Any questions and comments will highly be appreciated!

Read →
How to get the filtered datasource query after pressing Ctrl +G thumbnail

How to get the filtered datasource query after pressing Ctrl +G

Question: How to get filtered query after using filter by grid option in grid Grid showing filter records Grid showing complete list of records Answer: You can get the query which is created after providing filter criteria like this; datasourceName.queryRun().query().datasourceNo(1).ToString();

Read →
Find On-Hand inventory thumbnail

Find On-Hand inventory

While working on inventory module I wrote this code to find out the On-Hand inventory by using the InventOnHand class. static void findingOnHand(Args _args) { ItemId itemId; InventDim inventDim, inventDimCriteria; InventDimParm inventDimParm; InventOnhand inventOnhand = new InventOnhand(); ; itemId = '00200956'; inventDimCriteria.InventLocationId = '08'; inventDimParm.initFromInventDim(inventDimCriteria); inventOnhand.parmInventDim(inventDimCriteria); inventOnhand.parmInventDimParm(inventDimParm); }

Read →
Find On-Hand inventory on given date thumbnail

Find On-Hand inventory on given date

This piece of code can help you to find out On-Hand inventory at a particular date. static void findingOnHandByDate(Args _args) { ItemId itemId; InventDim inventDimCriteria; InventDimParm inventDimParm; InventSumDateDim inventSumDateDim; ; // Specify the item to get onhand info on itemId = '00005'; //inventDimCriteria.InventColorId = '02'; inventDimParm.initFromInventDim(inventDimCriteria); inventSumDateDim = InventSumDateDim::newParameters(mkdate(31,12,2009), itemId, inventDimCriteria, inventDimParm); info(strfmt("PostedQty: %1",inventSumDateDim.postedQty())); info(strfmt("DeductedQty: %1",inventSumDateDim.deductedQty())); info(strfmt("ReceivedQty: %1",inventSumDateDim.receivedQty())); }

Read →
Check Active Inventory Dimension thumbnail

Check Active Inventory Dimension

In recent time I came across with a requirement how to find out an active inventory dimension associated with an item. Here is a sample job to do this task; static void checkInventDimActive(Args _args) { ItemId itemid = "1000"; ; info(strfmt("%1", InventDimSetup::find(InventTable::find(itemid).dimGroupId, fieldNum(InventDim, configId)).Active)); }

Read →
Dynamics Ax 4.0 installation thumbnail

Dynamics Ax 4.0 installation

This question is being from many folks. How to install the Dynamics AX on non-domain computers. This article is going to help you to resolve the issue.

Read →
Update record after record insert in table thumbnail

Update record after record insert in table

If you are getting the following error while inserting and updating records. Cannot edit a record in Table (Tablename). An update conflict occurred due to another user process deleting the record or changing one or more fields in the record. You will be doing it in this way; 1. Table table; 2. ; 3. table.Field1 = 'A' ; 4. table.insert(); 5. 6. table.Field2 = 'Desc' ; 7. table.update(); To avoid such cases: 01. Table table; 02. ; 03. ttsbegin; 04. table.Field1 = 'A' ; 05. table.insert(); 06. 07. table.Field2 = 'Desc' ; 08. table.update(); 09.…

Read →
List of “Whats New in Dynamics AX 2012″ Documents is Now on PartnerSource! thumbnail

List of “Whats New in Dynamics AX 2012″ Documents is Now on PartnerSource!

Finally Microsoft has released some documents about the long waited Microsoft Dynamics AX 2012 . These new training materials highlight the new features in Microsoft Dynamics AX 2012 . These materials are currently downloadable on PartnerSource (Partner Service Plan required). They will be orderable (can be purchased) beginning April 21. What’s New – Application in Microsoft Dynamics AX 2012 for Finance, PA, Case Mgmt., HRM and Public Sector Course Number 80164 What’s New – Technical in Microsoft Dynamics AX 2012 for Implementation Course Number 80165 What’s New – Application in Microsoft Dynamics AX 2012 for…

Read →
Easy Extended AX Table-Browser thumbnail

Easy Extended AX Table-Browser

During implementations and regular developments in AX, I observed that many consultants/developers open the tables from AOT in the Table-Browser and by hand attempt to add/delete the records by hitting Ctrl+N/Alt+F9 keys and often copies the records from the table-browser and paste them to excel for checking/saving/printing/... the table data. The distress of manually copying/pasting of records and recalling the control-keys can be avoided by simply extending the Table-Browser by adding the Standard data Toolbar to the form Step-1: Go to the AOT and select \Forms\SysTableBrowser\Designs\Design and then change the design property WindowType value from…

Read →
Document management directory issue in AX thumbnail

Document management directory issue in AX

Question: When using document handling in AX 2009, there are 3 options: note, file, and document. While using any one of the options I am getting the following error; "Document management directory does not exist" . Answer: Check the Document Management directory by navigating to Basic > Setup > Document management > Document types form, on the General tab in the archive directory field ensure that the path is correct as the system appears to be trying to save the document but cannot find it.

Read →
6 steps to take backup of all the objects from 'user' layer thumbnail

6 steps to take backup of all the objects from 'user' layer

While working on client side with lot of customizations, someone must take the backup of all the changes which already have done in an application. A very short way of taking backup from a selected layer is as follows; 1. Create a new project and open it. 2. Click on the Advance filter/Sort for this project, it will open the following screen Note: Make sure the above options should be selected for this scenario. 3. Click on ‘Select’ button. 4. Remove all the ranges from this query form and add only one range. The form…

Read →
Microsoft Dynamics AX Recorded Webcasts thumbnail

Microsoft Dynamics AX Recorded Webcasts

It’s like a dream to have a bulk of videos over Dynamics AX at one place. Advance System Integration did it for us and I am glad to share it with you here Webcast Title Topic Area Recorded Date Microsoft Dynamics AX 2009 General Functional Overview Demo General AX October 23, 2008 - Video Microsoft Dynamics AX 2009 General Technical Overview Demo General AX November 6, 2008 – Video Live Webcast: Upgrading to Microsoft Dynamics AX 2009 General AX November 4, 2009 – Video Microsoft Dynamics AX 2009 Financial Module Demo Finance November 20, 2008…

Read →
Filter datasources of same table on Tab Pages thumbnail

Filter datasources of same table on Tab Pages

I had a requirement to show the filtered data of one table on different tabs within a form. The standard filter functionality in AX forms is a powerful feature. Using this filter functionality in your code is something you'll definitely use at some point in time as a programmer. Let me explain it with an example; we have a currency table with multiple currencies e.g. EUR and USD. I have two different tabs named ‘EUR’ and ‘USD’ and these will show the respective filtered data from the currency table i.e. EUR tab will show the…

Read →
Suppress the scaling message on AX Reports thumbnail

Suppress the scaling message on AX Reports

While working on AX reports, I got a very powerful and useful feature of AX. When a report doesn't fit on a page, depending on its properties Ax will resize the report. Now AX will inform you that the report has been rescaled (Report is scaled xx percent to fit to page) and this message is generally not well received by users. Users are annoyed by the message, they get it every time they run the report, they cannot do anything about it, and they have to click to close the infolog. In order to…

Read →
Pack/Unpack Mechanism to reduce the RPC Count for Temporary Table thumbnail

Pack/Unpack Mechanism to reduce the RPC Count for Temporary Table

Many a times it’s becomes our need to use the temporary tables while displaying data either on the forms or dialog forms. We all are aware of how to use temp table in AX and also with this fact that there is always being a performance impact (chattiness between client & server) to insert data in temp table. We can use pack/unpack mechanism to reduce this chattiness and pack the whole temp table data once on client and use it on the server. You can use this mechanism like below, Create a temporary table like…

Read →
Delete Actions thumbnail

Delete Actions

Sometimes its rare to have all the information about DELETE actions on the table and we read books and google it. This post will really helpful in describing how to create delete actions on tables and which Delete action should be used and when? There are two purposes to define the delete actions on the table level; § Restrict the deletion of a record based on related records in another table § Cascade the deletion of a record to related tables to ensure data-consistency How can I add delete actions in table? Delete actions are…

Read →
Financial Dimensions thumbnail

Financial Dimensions

Here are some useful videos which I found from Sunrise Consultants site: Financial Dimensions Overview: Definition of financial dimensions within Microsoft Dynamics AX Financial Dimensions Processing: Using the financial dimensions in Microsoft Dynamics AX Financial Dimensions Reporting: Reading financial dimensions in a report from Microsoft Dynamics AX Financial Dimensions Setup: Setting up the parameters of financial dimensions in Microsoft Dynamics AX

Read →
Debugging X++ code in Dynamics AX thumbnail

Debugging X++ code in Dynamics AX

When you are developing X++ code for Dynamics AX over the time you will run into a situation where the below Tips & Tricks can make your debugging live easier. The informations are very rare to find at one place. Since I was also once in the situation needing to find them, I thought it maybe a good idea to collect the most useful ones I'm using day to day... The most oblivious one: Interrupting the code execution When you have written some code that is causing an endless loop (or a very long execution)…

Read →
Creating SSRS Report Step by Step thumbnail

Creating SSRS Report Step by Step

Saveen Reddy did an outstanding job by sharing such informative articles on crearting SSRS reports and consuming cubes. Here you can have these articles which I went through and found it very useful. Creating a Simple SSRS Report Creating an SSR Report through data methods (Business Logic) Launching an SSRS report from the Dynamics AX client UI Creating an SSRS Report that gets Data from an AX cube Ad hoc Analysis using Excel 2007 to get data from an AX OLAP Cube

Read →
How to make a parameter dropdown depend on the selection of another parameter drop down thumbnail

How to make a parameter dropdown depend on the selection of another parameter drop down

“Expressions have the solution of every problem” Let’s say you have param1 which is data bound (drop down list from dataset1), and param2 which is data bound (drop down list from dataset2). Add dataset1 Add param1 and set its values to be “From dataset” with dataset set to dataset1 Add dataset2 with a parameter dataset2_param (it could be based on a data method with a parameter param, or a query with range param), dataset2_param is the parameter you want to use to filter the drop down list of the second parameter, report parameter param will…

Read →
Debugging business logic in AX 2009 SSRS reports thumbnail

Debugging business logic in AX 2009 SSRS reports

Background With AX2009 you are now able to do SSRS reports in Visual Studio. The typical process for designing a report consist in creating a query and bind to it, code some business logic (BL) specific to the report and design the visual part. This post will focus on debugging the report business logic. For more information on designing reports in general, see the msdn documentation You can have an idea on it from excellent post on Channel 9 here . Debugging Let say you've designed a fancy report in VS and in order to…

Read →

No posts match those filters.

Search the whole site · Ctrl/⌘ + K