Quantcast
Channel: Dynamics 365 Blog
Viewing all 1498 articles
Browse latest View live

Project Management and Service Industries Hotfixes Released in November 2014

$
0
0

Starting with November 2014, I will be posting the hotfixes released for the Project Management and Accounting, as well as the Service Industries modules for Dynamics AX 2012 R2 and Dynamics AX 2012 R3 twice each month. I would like to raise visibility for customers and partners to see what's been updated and changed, as there's many fixes that change and improve existing functionality. It will also give customers and partners a chance to be proactive if any of these appear to be something you might encounter in the future.

I will break these hotfixes down between the two releases. Keep in mind that a hotfix is first released on the build that the issue or design change is reported for. If you see a hotfix that exists in a different release, search for the fix in Lifecycle Services to see if it exists for your build. If the hotfix does not exist in Lifecyle Services for your version, there's a strong chance that it is in the works of being developed for your build of AX. In that scenario, the recommendation would be to submit a new support request so we can track the need for the hotfix.

If you see a hotfix that you would like to download and test, please log into Microsoft Dynamics Lifecycle Services (https://lcs.dynamics.com/) to review code changes, search for related issues, and download the hotfix for testing. If you are unfamiliar with Lifecycle Services, review the following blog for instructions on using Lifecycle Services to download a hotfix:

http://blogs.msdn.com/b/axsupport/archive/2013/12/13/using-lifecycle-services-to-download-hotfixes.aspx

If you have any questions about these fixes that cannot be answered by Lifecycle Services, please activate a new support request so our Project Engineers can assist you.

Watch for these posts twice each month, and I look forward to any suggestions and feedback!

Tyler Lewin
Senior Support Engineer
Microsoft Dynamics AX

 


Dynamics AX 2012 R2 


 KB 3017094 - Project sales order lines that exist in a project invoice proposal can be deleted on the original sales order. This hotfix will disable the "Delete" button on the sales order when existing sales order lines that are attached in a project invoice proposal are selected.

KB 3018214 - This allows the service order invoice to use the selected dimension on the service order line instead of the linked dimension when "Dimension link" is activated (Inventory and warehouse management | Setup | Posting | Dimension link).

KB 3016012 - If a sales tax code has a tax percent of 0, this hotfix will set the "Actual sales tax amount" text box to non-editable in Enterprise Portal, where before a value could be entered.

KB 3016805 - This hotfix allows AX to create an audit trail record when transactions are viewed for from the financial voucher for expense reports posted in Enterprise Portal.

KB 3016006 - If the amount of two on-account lines are the same for fixed price project invoicing and both are taxable, the project invoice report will display one of them on non-taxable field and the other on taxable field. This will allow AX to show the full amount as taxable.

KB 3017106 - This hotfix prevents a user from submitting the same expense transaction on multiple expense reports if multiple windows are open.

KB 3016035 - If you have a project quotation workflow configured, this will require existing approved project quotations to flow through workflow again if a new line is added.

KB 3017908 - On collections cases (Home | Common | Cases | All cases) a description wasn't required to be entered, and this will make that mandatory.

KB 3013876 - This will allow support of printing the project invoice proposal report in PDF format to a network mapped drive.

KB 3016854 - If a project contract has a funding limit and there are transactions posted to that funding limit, this will disable the delete button for that funding limit so the link between the transaction and funding limit is not broken by deleting the funding source. You can still edit the amount, as long as the new value is greater than the spent amount.

KB 3013072 - When calculating a sales price in the project invoice proposal form, this will allow the value for the markup to be calculated based on the original AP transactions unit price plus only the non-exempt tax, rather than including both exempt and non-exempt for the markup cost price.

 


 Dynamics AX 2012 R3


 KB 3016033 - This will prevent multiple workflow instances of the project invoice proposal workflow if the user clicks "Submit" multiple times.

KB 3017152 - When a purchase order has been previously raised from item requirements and then is marked "Cancelled" on the purchase order, this will ensure that the committed costs against the item requirement are updated.

KB 3013179 - On a purchase requisition, an error stating "Lot ID is not specified" can occur when an approved requisition is revised and confirmed.

KB 3013901 - This KB will ensure that selected transactions remain selected and don't get cleared by an automatic form refresh when performing an invoice proposal and splitting the customer reconciliation advance amount.

KB 3016001 - This hotfix will ensure that records posted to the LIMITSPENT value on the PROJFUNDINGLIMIT table are rounded with only 2 decimal places. If these records contain more than 2 decimal places, it could attempt to post to a limit that is already spent.

KB 3016007 - Travel requisitions will show the correct committed costs on the project contract after installing this KB.

KB 3016015 - In Enterprise Portal there is a "week summary to date" fact box. If you create a timesheet from favorite, this KB will allow those timesheets to update this fact box.

KB 3015487 - For intercompany customer invoices for an expense report with negative amounts, this hotfix will ensure the correct sales price instead of a zero amount.

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Cumulative Update 8 for Microsoft Dynamics AX 2012 R3 now available!

$
0
0

Cumulative Update 8 (CU8) for Microsoft Dynamics AX 2012 R3 is now available on CustomerSource and PartnerSource. CU8 includes many new features, as well as regulatory updates and hotfixes, so check it out!

What’s included in CU8

CU8 for AX 2012 R3 includes:

How to install CU8

To get started with your installation of CU8, complete these steps:

  1. Review the System Requirements to make sure that your environment supports CU8.
  2. Download CU8 from the Hotfix Download Available section on the CU8 download page.
  3. Install CU8 by following the step-by-step instructions in the Installation Guide for Microsoft Dynamics AX 2012 R3 Cumulative Update 8.

To help you better understand the CU8 installation, you may also want to see the following
videos:

Help and how-to content

Product documentation for AX 2012 (including all versions and cumulative updates) is available on TechNet.

For more information about all versions of AX 2012, see the following resources:

Known issues

The known issues in CU8 can be found by using the Issue search tool in Lifecycle Services. You can log in to Lifecycle Services using your CustomerSource or PartnerSource account, and then in the Issue search box, enter "CU8 known issue". (NOTE: Be sure to enter "CU8 known issue", otherwise you'll get different search results.)

AX for Retail 2012-R3: Customer would like to pay for Sales Orders in Retail POS that were created in Dynamics AX

$
0
0

Customers have asked if it was possible to load a sales order that was created in Dynamics AX in POS and pay the sales order.

If the Sales order has been invoiced in AX, you can use the Sales Invoice function to pay the invoices in POS. In AX, make sure you have a payment journal selected in Retail Parameters>Posting>Invoice section or you will receive an error.  Also, make sure you have an offset account or Bank selected on the Journal name

The sales order will need to be invoiced in Dynamics AX in order to use the Sales Invoice function in POS. If the Sales order is in an Open order or Received status, you can use the Sales order function in POS on AX 2012 R2 and R3.  In AX 2012, you can use the Recall order function to open the Sales orders in an Open order or Received status in POS. 

Sales Invoice function:

This will open the invoice in POS and you can pay as you normally would. 

If the Sales order is in an Open Order status, you can Pick up the order invoice and pay the sales order by go into Create order and change the Sales order to Pick-up. 

Sales order\Recall orders function:

If you select View details, the Sales order can be changed from Ship to Pickup. 

You can then go back into the Sales order function, select the Created sales order and select Pick up order.

If the Sales order is in a Delivered status, you will not be able to invoice it in POS.  The sales order has already been shipped, so you will not be able to pick up the items.

If you would like to process a payment for the Delivered sales order in POS, you must invoice the sales order in AX first.

Visual Studio Tools for Microsoft Dynamics AX 2012 R3 CU8 now requires Microsoft Visual Studio 2013

$
0
0

Per prior posts on this topic
Introducing New Update to Microsoft Dynamics AX 2012 R3 - available now!
Microsoft Dynamics AX Visual Studio Development Tools will be Upgraded to Microsoft Visual Studio 2013!
It is important to note what this means.  Development work (ex. Enterprise Portal, SSRS) done in Visual Studio will now be with Microsoft Visual Studio 2013

Note when going to CU8
• Report Viewer 2012 runtime component is required
• Visual Studio Tools (for 2010) will have to be uninstalled via AX setup.exe > Install Microsoft Dynamics AX components > Remove components > under Developer tools mark Visual Studio Tools
• Install Visual Studio 2013 (Professional or higher)
• When going through CU8 installer note the Visual Studio 2013 Dev Tools selection

Modify, and edit main accounts in Microsoft Dynamics AX 2012

$
0
0

On Microsoft Dynamics AX 2012 the created main account could be modified or edited even if this main account has transactions have been posted on it. This may raise questions for accounting, and internal audit people, specially in the basic control in the ERP where the master data should not be changed if there are posted transactions since this will breach the integrity in the system. In this post we will examine this function how does it works, and how you can control it as well.

 

The rational behind main account modification that modifying master data, and transactions data for this main account, so there is no concern to breach the integrity of  the system, in addition to that let us look at it from another angle, there would be a scenario where the user  creates the main account make some thing wrong on it structure, or the CFO/Controller wants to creates a new caption for accounts and wants to put old accounts under this new caption,  so the opened modification for main accounts make it much more easier, and flexible.

Here we will pick up a main account  from the Audit Trial form General Ledger| Inquiry| Audit trial

 

Go to General Ledger| Inquiry| Setup| Chart of Accounts select and then press Edit.

Then modify the account number from 112000 to be 112222

Go back and check the same transaction on the audit trial, it will be modified to be 11222 and this executed over the system.

In case of the team who operating Microsoft Dynamics AX is concerned regarding this function, and wants to control it there are two ways whether using security or from the AOT, hereunder we will go through how to control it from the AOT.

Go to AOT| Data Dictionary| Tables| MainAccount(sys)| MainAccountId(sys,usr)|  On property go to Allow edit: No and save.

 

Then go back to the application and check the main account field, the filed in gray mode "dimmed"

 

Credits

Roman Abylkhatov Escalation Engineer

 

Error during data import, when using multiple entities in one Processing Group that have different financial dimensions

$
0
0

Consider the following scenario:

You will get an error "Unable to return DimensionAttributeValue record for xxxxxx",

when using the DIXF tool to import data and have multiple entities in one Processing Group

that have different financial dimensions.

The Problem is that, the system always takes the first source data format for the "Copy data to target" step. 

The simple scenario is:

 

1. Create a Processing Group

2. Create 2 entities in that processing group (i.e. Customer and Items)

a. It is needed to have 2 entities with different Financial dimensions

    and different source data formats

3. Get the staging data

a. Your data should have the Field "DefaultDimensionStr" filled

4. Copy the Data to target

5. Now you are getting the error :

     "Unable to return DimensionAttributeValue record for xxxxxx".

Workaround suggestion:

Go to \Data Dictionary\Tables\DMFDataSourceProperties\Methods and create a new method.

Overwrite the new created method with following code snippet:

public

static DMFDataSourceProperties wdxFindByExecIdDefGroupEntity(

    DMFExecutionId          _execId,

    DMFDefinationGroupName  _defGroup,

    DMFEntityName           _entity)

{

    DMFDataSource               dmfDataSource;

    DMFDataSourceProperties     dMFDataSourceProperties;

    DMFDefinitionGroupExecution dFDefinitionGroupExecution;

   

      if (_execId && _defGroup)

    {       

               selectfirstOnly1 ExecutionId, DefinitionGroup from dFDefinitionGroupExecution

               where dFDefinitionGroupExecution.ExecutionId == _execId

                && dFDefinitionGroupExecution.DefinitionGroup == _defGroup

                && dFDefinitionGroupExecution.Entity == _entity

       

              join SourceName from dmfDataSource

           where dmfDataSource.SourceName == dFDefinitionGroupExecution.Source

          join dMFDataSourceProperties

           where dMFDataSourceProperties.Source == dmfDataSource.SourceName;

    }

   return dMFDataSourceProperties;

}


 

3- Save and compile

4- Got to the \Classes\DMFEntityWriter\write method and change the code as shown below:

    //Before

//dmfDataSourceProperties =  DMFDataSourceProperties::findByExecIdAndDefGroup(_executionId,_definitionGroup);

//After
dmfDataSourceProperties = DMFDataSourceProperties::wdxFindByExecIdDefGroupEntity( _executionId, _definitionGroup,_entity.EntityName);

 

5- Save and compile

6- Do an Incremental CIL generation

Adding a item to the AX R3 Online Store gives the error message "We cannot Process your request at this time. Please try again later. "

$
0
0

As my first official blog posting I thought I'd share an interesting issue I encountered.  We couldn't add any items in AX 2012 R3 Online Store to our Shopping Cart as an Anonymous Customer.  When we tried to add any item we would encounter the error message, "We cannot Process your request at this time.  Please try again later. "

 

  

Unfortunately this is a pretty vague error message and doesn't really explain why we can't add an  item.   To help narrow this down further our best place to start is the SharePoint Log files. In a default SharePoint Server  install, the log files are found in:   C:\Program Files\Common Files\Microsoft shared\Web Server Extensions\15\LOGS   If you have installed SharePoint elsewhere please check with your SP Admin for the log location.    Since the AX Online Store is set to log to Error Level by default we should be able to see any error messages in the logs that we saw on the webpage.    By simply searching the SharePoint Log files for the error message, "We cannot process"  I was able to find the below Call Stacks.

 

 

11/17/2014  08:21:23.83         w3wp.exe  (0x1CEC)    0x2538        Dynamics AX Retail 1   General Logging 1            1        Unexpected        Exception id: ,

 Error message: We cannot process your request at this time. Please try again later.System.NullReferenceException: Object reference not set to an instance of an object.     at
Microsoft.Dynamics.Commerce.Runtime.Workflow.CartWorkflowHelper.AddCustomerAffiliationsToCart(RequestContext context, Cart newCart)     at
Microsoft.Dynamics.Commerce.Runtime.Workflow.CartWorkflowHelper.PerformSaveCartOperations(RequestContext context, SaveCartRequest request)     at
Microsoft.Dynamics.Commerce.Runtime.Workflow.CreateOrUpdateCartRequestHandler.Process(SaveCartRequest request)     at
Microsoft.Dynamics.Commerce.Runtime.Workflow.WorkflowRequestHandler`2.Execute(RequestContext context)     at
Microsoft.Dynamics.Commerce.Runtime.Workflow.Composition.PipelineRequestHandler.Execute(RequestCo...        bd0bcd9c-fe56-60d5-0f65-14c790caa354

 

 The error message in the above call stack is still pretty vague. However if we look at the Call stack itself we get a few more clue as to where the problem may be coming from.  The error message, "System.NullReferenceException: Object reference not set to an instance of an object"  typically tells us that either we received a Null value, or a method in code wasn't properly initialized before we called it.  Unfortunately this again is a very common error and doesn't tell us what wasn't set.   However the line before it calling  "Microsoft.Dynamics.Commerce.Runtime.Workflow.CartWorkflowHelper.AddCustomerAffiliationsToCart"    Gives a much better clue,  this line indicates that we were trying to set add a Customer Affiliation (Customer specific discounts, like Employee, Military, Frequent Shopper) to our Shopping Cart  via the Commerce Run Time Service.   

 

Since in this scenario we are trying to buy something as an anonymous customer we shouldn't  have a customer id associated to our transaction. My obvious question becomes, "Why are we looking for Affiliations for a Customer ID that we didn't supply and where did this Customer ID come from?"      The answer for this is actually quite simple,  whenever we add an item to the Shopping Cart we query the CRT.customerView  table for the Customer Record.  Based on the results of this view we then get the respective affiliations for that customer.  In the case of an Anonymous Customer we actually use the  Default Customer specified in the  AX Online Store's form. 

 

 To figure out what Customer ID's are available at the Channel Database level, I ran the below query.

 

 Select * from crt.CustomersView      

 

 The result was no records returned!

 

 

 

Comparing the Results of the View with our Call stack we can now see why the code was giving us an "Object Reference Error" as no customers are showing in the view.  At a minimum we should always get our Default Customer in this view.  To figure out why our default Customer wasn't showing in the view,  I first needed to know how this view was pulling data.   To do this  I opened SQL Server Management Studio and locate the CRT.CustomersView in the Online Store Database. By simply right clicking this view and selecting > Script to New Query Window.   We can see that the view is mostly comprised of a join between the AX.CustTable , AX.DirPartyTable and the AX.RetailCustTable.  Unfortunately in AX HQ these tables aren't so easily linked together.  Instead the CustTable is linked back to the DirParty table via the AddressBook tables.  Since a Default Customer is a required field  in the AX Online Store form and our view is based on Address Books, we know that the problem is either coming from the Address Book for the Online store, or the Customers listed in the Store's Address Book.

 

 

 

  Since my Channel Database doesn't show any Customers belong to the Store's Address book.  My next approach is to see what we have  listed in AX.  Since I already know the table relationship for AX, and what the Store's Customer Address Book is set to.  We can run a quick SQL query to see what Customers in AX should be tied to this Address Book. Running the below query against the AX Database (Remember to change the where clause to match the address book listed for your Online Store)

 

Select * from DIRADDRESSBOOK b

join DIRADDRESSBOOKPARTY p on p.ADDRESSBOOK = b.RECID

join custtable c on p.PARTY = c.PARTY

where b.name = 'USRTCentrl'

 

The result was no records returned!

 

 

 At this point the issue becomes self-explanatory we don't have any customers, including our Default Customer, in the Store's Address Book. 
To correct this we simply need to add out Default Customer for the Online Store to the Online Channel's Customer's Address Book. 

 

To Correct this:

  1.  Log into an AX Client > Go to Retail  > Common > Retail Channels > Online Stores > Edit your Channel Database (yes edit it)
  2. Right Click your Default  customer Field > Select View Details
  3. Edit your Customer Record
  4. In the General Fast Tab >  Assign your Retail Store's Address to the Address Books field.
  5. Save your Changes.
  6. Republish the Online Store
  7. Finally run the 1010  (Customers) and 1070 (channel configuration)  jobs for your Online Store Data Group

 

 Recap:

============

Unfortunately adding the Default Customer to the Online Store's Address Book is not a requirement when setting up the Online Store.   It's very easy to overlook this simple set up issue since it's not required.    Hopefully some of the meth ology I used above to troubleshoot this issue will help you in your own Online Store endeavors.

Unable to import model files generated using Export-AxModel cmdlet, or upload it to LCS for Customization analysis

$
0
0

I wanted to share an issue you may face when exporting models using the AX 2012 powershell cmdlets. As per the system requirements, we recommend using Powershell v2.0. However you may have Powershell v3 and above installed on your system (like Windows Server 2012 R2), and this can cause the following issues:

 

Issue 1:

Unable to import models using AXUTIL.EXE, where the models were created using Powershell cmdlet Export-AxModel.

To demonstrate the issue create a custom model file, in this example we refer to a model called “Demo Model”

 

(a)   
Example, run the AX Management Shell and then run the following command to export a custom model called ‘Demo model’

Export-AXModel -model "DEMO MODEL" -file c:\temp\demo1.axmodel

 

(b)  
Run an elevated cmd prompt and import demo1.axmodel using axutil.exe:

axutil import /file:c:\temp\demo1.axmodel

 

We get an error:

ERROR: Could not load file or assembly 'C:\TEMP\demo1.axmodel' or one of its dependencies. This assembly is
built by a runtime newer than the currently loaded runtime and cannot be loaded.

 

(However importing the same model using Install-AXModel  cmdlet works fine).

 

(c)
Or if you import the model in to your LCS Project (https://lcs.dynamics.com) under the "Customization analysis" tool, you will get an error as follows:

Only models exported with AxUtil version 6.3.164.2431 or lower can be uploaded to this project

 

 

Issue 2:

Also notice that the same model exported by powershell cmdlet is a different file size, compared to it being exported by axutil.exe

 

(a)   
e.g. Export the ‘Demo Model’ using axutil.exe

axutil export /model:"DEMO MODEL" /file:c:\temp\demo2.axmodel

 

(b)  
Now compare file sizes of demo1.axmodel and demo2.axmodel, and notice that demo1.axmodel file is
slightly smaller.

 

 

Cause:

Powershell v3 and above uses a different Microsoft .NET Framework build then v2.

 

 

SOLUTION:

This issue can be resolved by enforcing the AX Management Shell to use Powershell  Version 2 framework instead as follows:

 

(1)   
Secondary mouse-click on the “Microsoft Dynamics AX Management Shell” icon in “Administrative tools” and select properties.

 

(2)   
By default it will have the following target cmdline (or something similar):

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy RemoteSigned -NoExit & 'C:\Program Files\Microsoft Dynamics AX\60\ManagementUtilities\Microsoft.Dynamics.ManagementUtilities.ps1'

 

(3)   
Change the target cmd line on your system by adding one more argument: -Version 2 as follows:

 

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Version 2 -ExecutionPolicy RemoteSigned -NoExit & 'C:\Program Files\Microsoft Dynamics AX\60\ManagementUtilities\Microsoft.Dynamics.ManagementUtilities.ps1'

 

Now you should be able to create the correct model file format when running the Export-AXModel cmdlet in the “Microsoft Dynamics AX Management Shell”.


Vendor invoice - A currency to convert from is required to retrieve exchange rate information when trying to access a Vendor Invoice that is linked to a Purchase Order

$
0
0

Characteristics of issue:

We have had some Dynamics AX 2012 customers run into the error:  "A currency to convert from is required to retrieve exchange rate information when trying to access a Vendor Invoice that is linked to a Purchase Order" when attempting to access the vendor invoice within the client.  In the cases we have seen all of these vendor invoices have been attached to a workflow. 

 

How to validate that issue exists on your system:

You can validate whether the issue exists on your system by running the following query:

Select * from SOURCEDOCUMENTLINE a where a.RECID not in (select SOURCEDOCUMENTLINE fromVENDINVOICEINFOTABLE) and (a.SOURCERELATIONTYPE = 1425 and a.TYPEENUMNAME='SourceDocumentLIne_VendorInvoice')

If you get any results returned from the query above we then need to verify that these are associated with orphaned SOURCEDOCUMENTLINE records.  You can run the following query to verify that there is an orphan SOURCEDOCUMENTLINE record associated with the Vendor Invoice Header. 

Select SOURCEDOCUMENTHEADER, COUNT(*) From SOURCEDOCUMENTLINE where SOURCEDOCUMENTHEADER in (Select SOURCEDOCUMENTHEADER from SOURCEDOCUMENTLINE a where a.RECID not in (select SOURCEDOCUMENTLINE from VENDINVOICEINFOTABLE) and (a.SOURCERELATIONTYPE = 1425 and a.TYPEENUMNAME='SourceDocumentLIne_VendorInvoice')) And SOURCERELATIONTYPE = 1425 GROUP BY SOURCEDOCUMENTHEADER HAVING COUNT(*) > 1

If results exist for the above query we have verified that the issue exists in your environment.

 

Resolution:

Step 1:

To clean up the orphaned records:

1. Run the query below again:

Select SOURCEDOCUMENTHEADER, COUNT(*) From SOURCEDOCUMENTLINE where SOURCEDOCUMENTHEADER in (Select SOURCEDOCUMENTHEADER from SOURCEDOCUMENTLINE a where a.RECID not in (select SOURCEDOCUMENTLINE from VENDINVOICEINFOTABLE) and (a.SOURCERELATIONTYPE = 1425 and a.TYPEENUMNAME='SourceDocumentLIne_VendorInvoice')) And SOURCERELATIONTYPE = 1425 GROUP BY SOURCEDOCUMENTHEADER HAVING COUNT(*)

2.  For each SOURCEDOCUMENTHEADER value returned in the result set, delete the orphaned SOURCEDOCUMENTLINE record by inserting the appropriate SOURCEDOCUMENTHEADER value in the delete statement below.

Delete from SOURCEDOCUMENTLINE where RECID not in (select SOURCEDOCUMENTLINE from VENDINVOICEINFOTABLE) and (SOURCERELATIONTYPE = 1425 and TYPEENUMNAME='SourceDocumentLIne_VendorInvoice' and SOURCEDOCUMENTHEADER = <ENTER YOUR SOURCEDOCUMENTHEADER VALUE>)

3.  To prevent future occurrences of this issue install KB 3008597.

 

 

 

 

Installing the AX 2012 R3 Async Server to a Clustered SQL Server Environment

$
0
0

A while back I had a request to install the Microsoft Dynamics AX 2012 R3 Async Server against a SQL Server Cluster.  Since the Demo VM's available are all one-box setup's I thought this would be a good challenge.  As it turns out I was right, in order to install against a SQL Server Cluster we have to make a few slight modifications to installation.  Since we have to modify the installation we are going to have to install and configure the Async Server via the PowerShell Installation method.    If you are not familiar with this method then please check out the Installation Document on TechNet at:   http://technet.microsoft.com/EN-US/library/dn741219.aspx

 

 For this particular install we are running the following:

  1. 3 SQL Nodes  on the default SQL Instance  (you can use a named instance if you desire) all ready setup and configured
  2. Windows Clustering Service to act as a our load balancer/failover  which is all ready setup and configured
  3. Our cluster virtual name that we are installing/connecting  to is:  AGCluster.Contoso.com
  4. We are only going to be installing the Website against a Single IIS instance. (I'll cover installing against an IIS Load Balanced site later)
  5. Remember the installing user must have permissions to access the SQL Server and create Databases.

 

 To begin: 

  1. Launch your AX 2012 R3  media
  2. Select to Install the Microsoft Dynamics AX 2012 R3  Async Server 
  3. When you reach the Configure Async Server  Window > UnMark the "Configure Async Server" option

 


 

4. Click next to proceed with the Installation until it completes

5.  After your installation completes, open Windows File Explorer and browse to your Async Server install directory.  (The default for this is: C:\Program Files
(x86)\Microsoft Dynamics AX\60\CDX\Async Server\Tools     unless you selected to install AX to a different drive)

 6. Within the Tools folder we need to modify both the SS-Settings.xml and SS-Topology.xml files before we can proceed with the PowerShell Install.

A. First we are going to start with the SS-Settings.xml file.  Since we are going to do a Single IIS Server we can follow the instructions on the TechNet Installation page for most of the xml file.  However there are a few key fields that we need to pay special attention to.  They are listed below:

 

HQMessageDatabaseServerName                          

HQMessageDatabaseServerNamedInstanceName   

HQMessageDatabase             

InstallDatabase  

InstallSynchService  

WebApplicationServiceBinarySourceFolder

 

 In order to install the Async Server against a SQL Cluster we are going to have to do a split install. A split install means we are only installing the database portion or IIS portion as one time.  So let's quickly break down what each of these settings will do.

 

HQMessageDatabaseServerName          <----------- This is the name of the machine hosting a single SQL Server, for a SQL Cluster this is the name of the Virtual Cluster Address.   Since in this example our cluster is called AGCluster.Contoso.com,   we are going to set this value to be AGCluster.

 

HQMessageDatabaseServerNamedInstanceName    <----------  This is going to be the name of our SQL Named Instance, if you're not using a named Instance then set this to the value of SQL Cluster name.

 

HQMessageDatabase                <----------- This is will be the name of our Message Database for the Async Server.  Don't confuse this with the Async Client Message database. These are two separate databases.

 

InstallDatabase    <------------------  By setting this to true, we are going to create the above message database, create the local Windows Groups on SQL Server machine and assign the appropriate permissions to the database for these groups.  Setting it to false skips this part of the installation code.     Because we need to do a split install, we are going to set this value to be true.

 

InstallSynchService   <-------------- By settings this to true, we are going to install and create all of the IIS website components, this is what creates the files on the file system. Please keep in mind when you set this to true, the Installer uses the server specified in HQMessageDatabaseServerName as the name of the IIS Machine to install on.      Setting this to false will skip this part of the installation.  Since our IIS Service will not be installed on a SQL Virtual Cluster, we are going to set this value too false for the install.

 

WebApplicationServiceBinarySourceFolder  <------------ This is the folder where you installed the Async Server to.  One good point here, the Installer is expecting the folder label package to be include in path. This is because during the IIS install we need to update the Web.config file that was created in here.

 

For a SQL Cluster install our values in the SS-Settings.xml file will look like the following:

 <Setting key="HQMessageDatabaseServerName" value="AGCluster" />

<Setting key="HQMessageDatabaseServerNamedInstanceName"
value="AGCluster" />

 <Setting key="HQMessageDatabase" value="AsyncServerMessageDatabase" />

<Setting key="InstallDatabase" value="true" />

 <Setting key="InstallSynchService" value="false" />

<Setting key="WebApplicationServiceBinarySourceFolder" value="C:\Program Files (x86)\Microsoft Dynamics AX\60\CDX\Async Server\package" />

 

Remember to save your changes, and place the file back in the Tools folder so your PowerShell Script can use it.

 B.  Now we need to modify the SS-Topology.xml file for a single SQL server, or One-box install we wouldn't normally need to edit this file.  However the reason for making changes to this file is because of how our installer interrupts the Settings.xml file.  As mentioned earlier the Install Database section tries to create a Windows Users Group on the machine that we specified in the HQMessageDatabaseServerName field.   Since we are pointing our SQL Server to a Virtual Cluster Name that isn't an actual Machine the installer will fail when it tries to create the Windows Groups.   The below error message is what you will end up seeing:

Exception      : System.Management.Automation.MethodInvocationException: Exception calling "Create" with "1"
                        argument(s): "Create failed for Login 'agcluster\RetailHQMessageDBUsers'. " --->
                        Microsoft.SqlServer.Management.Smo.FailedOperationException: Create failed for Login
                        'agcluster\RetailHQMessageDBUsers'.  --->
                        Microsoft.SqlServer.Management.Common.ExecutionFailureException: An exception occurred while
                        executing a Transact-SQL statement or batch. ---> System.Data.SqlClient.SqlException: Windows
                        NT user or group 'agcluster\RetailHQMessageDBUsers' not found. Check the name again.
                         at Microsoft.SqlServer.Management.Common.ConnectionManager.ExecuteTSql(ExecuteTSqlAction
                        action, Object execObject, DataSet fillDataSet, Boolean catchException)

 

 To avoid the above error, we need to tell the Installer not to create our Groups or assign users to groups.  Instead we will manually create our groups and assign users to them.  There's a very import point I need to cover here about how the Installer reads and uses the SS-Topology.xml file. The PowerShell installer is designed to replace any values between the characters [  and ]  with the value we specified in the  SS-Settings.xml file. 

 Using our example when the installer reads the line <ServerName>[HQMessageDatabaseServerName]</ServerName>  out of the SS-Topology.xml file it replaces  [HQMessageDatabaseServerName]   with the value of "AGCluster".      As you can see through the SS-Topology.xml file we are installing or creating everything against the machine we specified in the Settings file.   For a one box or Single SQL Server install this is great, since we are going to be doing a Split Install we need to trick the installer into skipping the User Group creation and Permissions assignment.  The nice part here is that this is pretty easy to do, we just need to comment out the sections of this file that refer to our Groups.   Since this is a standard XML document to comment out these sections we just start with a "<!-- "  and end our comment with a  "-->"   As you can see from the highlighted sections below there are basically three sections that we need to comment out.

 

     <Settings>
  <InstallDatabase>[InstallDatabase]</InstallDatabase>
  <InstallSynchService>[InstallSynchService]</InstallSynchService>
  <Databases>
    <Database id="HQMessageDB" install="true" dropifexists="false">
      <ServerName>[HQMessageDatabaseServerName]</ServerName>
      <ServerNamedInstanceName>[HQMessageDatabaseServerNamedInstanceName]</ServerNamedInstanceName>
      <DatabaseName>[HQMessageDatabase]</DatabaseName>       
      <Installation>
        <InstallationType>SqlScripts</InstallationType>
        <InstallationValue>..\Database\HQMessageDatabase.sql</InstallationValue>
      </Installation>    
  <!-- <WindowsLogin id="RetailHQMessageDBUsers" GroupName="[HQMessageDatabaseServerName]\RetailHQMessageDBUsers" CreateIfNotExists="true" MappedSqlRoleName="db_datareader" />
      //<WindowsLogin id="RetailHQMessageDBUsers" GroupName="[HQMessageDatabaseServerName]\RetailHQMessageDBUsers" CreateIfNotExists="true" MappedSqlRoleName="db_datawriter" />
  <WindowsLogin id="RetailHQMessageDBUsers" GroupName="[HQMessageDatabaseServerName]\RetailHQMessageDBUsers" CreateIfNotExists="true" MappedSqlRoleName="db_executor" />
  <WindowsLogin id="AOSServiceUser" UserName="[AOSServiceUser]" MappedSqlRoleName="db_datareader" />
  <WindowsLogin id="AOSServiceUser" UserName="[AOSServiceUser]" MappedSqlRoleName="db_datawriter" />
  <WindowsLogin id="AOSServiceUser" UserName="[AOSServiceUser]" MappedSqlRoleName="db_executor" />            -->
    </Database>
  </Databases>
  <WindowsGroupMemberShips>
     <!-- <add MachineName="[HQMessageDatabaseServerName]" GroupName="RetailHQMessageDBUsers" UserName="[AppPoolUser]" />  -->
   </WindowsGroupMemberShips>
  <SynchServerInstance>   
    <WebAppPool id="SynchServiceAppPool">
      <Name>[AppPoolName]</Name>
      <ProcessModel_IdentityType>Custom</ProcessModel_IdentityType>
      <ProcessModel_UserName>[AppPoolUser]</ProcessModel_UserName>
    </WebAppPool>
    <WebSite>
      <Name>[WebSiteName]</Name>
      <PhysicalPath>[WebSiteWorkingFolder]</PhysicalPath>
      <ApplicationPoolXPath>Settings/SynchServerInstance/WebAppPool[@id='SynchServiceAppPool']</ApplicationPoolXPath>
      <PortSSL>[WebSiteHttpsPort]</PortSSL> 
      <PortTcp>[WebSiteTcpPort]</PortTcp>    
  <ServerCertificateThumbprint>[WebSiteSSLCertificateThumbprint]</ServerCertificateThumbprint>
  <ServerCertificateRootStore>[WebSiteSSLCertificateRootStore]</ServerCertificateRootStore>
  <ServerCertificateStore>[WebSiteSSLCertificateStore]</ServerCertificateStore>     
      <WebApplication>
        <Name>[WebApplicationName]</Name>
        <PhysicalPath>[WebApplicationWorkingFolder]</PhysicalPath>
        <ApplicationPoolXPath>Settings/SynchServerInstance/WebAppPool[@id='SynchServiceAppPool']</ApplicationPoolXPath>
        <ServiceBinarySourceFolder>[WebApplicationServiceBinarySourceFolder]</ServiceBinarySourceFolder>
        <AppSettings>
         <!-- <PropertyForConnectionString Key="ConnectionString" DatabaseXpath="Settings/Databases/Database[@id='HQMessageDB']" LoginId="RetailHQMessageDBUsers" /> -->         
        </AppSettings>
      </WebApplication>
    </WebSite>
  </SynchServerInstance>
</Settings>

 

Now simply Save the SS-Topology file back to your Tools folder.
 
7. Now we simply need to run the PowerShell Installation commands as documented in TechNet:  http://technet.microsoft.com/EN-US/library/dn741219.aspx
 
When it completes you should see the below message.
 
 
 


8. Before we can install the IIS Side of the Application we create our Users, Groups and assign appropriate permissions.   This part is actually pretty easy as all of our information will be coming from the SS-Settings.XML and SS-Topology.xml file's that we modified earlier.  If we look at the sections we commented out in the Topology.xml file we can see that we are trying to make the following Windows Login Group
 
<WindowsLogin id="RetailHQMessageDBUsers" GroupName="[HQMessageDatabaseServerName]\RetailHQMessageDBUsers" CreateIfNotExists="true" MappedSqlRoleName="db_datareader" />
      //<WindowsLogin id="RetailHQMessageDBUsers" GroupName="[HQMessageDatabaseServerName]\RetailHQMessageDBUsers" CreateIfNotExists="true" MappedSqlRoleName="db_datawriter" />
  <WindowsLogin id="RetailHQMessageDBUsers" GroupName="[HQMessageDatabaseServerName]\RetailHQMessageDBUsers" CreateIfNotExists="true" MappedSqlRoleName="db_executor" />
  <WindowsLogin id="AOSServiceUser" UserName="[AOSServiceUser]" MappedSqlRoleName="db_datareader" />
  <WindowsLogin id="AOSServiceUser" UserName="[AOSServiceUser]" MappedSqlRoleName="db_datawriter" />
  <WindowsLogin id="AOSServiceUser" UserName="[AOSServiceUser]" MappedSqlRoleName="db_executor" />          
 
 
<add MachineName="[HQMessageDatabaseServerName]" GroupName="RetailHQMessageDBUsers" UserName="[AppPoolUser]" />
 
          <PropertyForConnectionString Key="ConnectionString" DatabaseXpath="Settings/Databases/Database[@id='HQMessageDB']" LoginId="RetailHQMessageDBUsers" />       
 
 
Based on the above lines we can see that we are trying to create a Local User Group on the SQL Server named  "RetailHQMessageDBUsers" Since we have more than 1 SQL Server Node, and we want to ensure a seamless cluster failover,  we should create a  Domain User Group called "RetailHQMessageDBUsers" instead of a local group.  The second part of this then assigning the SQL permissions of DB_dataReader/DataWriter/Exectutor to the Group for the Async Message Database that we created.   The next part of this code is Adding the User that runs the AOS account to the Async Server Message Database with the same permissions.    Next we add the account running our IIS Application Pool to the Group we created, and finally we update the Web.config file with the Async Server Message Database and the Group Name.
 


In order to proceed we need to do the following:
 
A. Create an Active Direcetory User group named "RetailHQMessageDBusers"
B. Add the Domain Account running the Application Pool to our User Group
C. In SQL Server Management Studio add a user Login for the Group “RetailHQMessageDBusers" and give it the permissions to the Async Server Message Database.
D. In SQL Server Management Studio add the AOS Account as a login and give it Permissions to the Async Server Message Database.
 
** For the Connection String portion we can set this after we install the IIS Web Parts section.
 
 
9. Now that we've created the correct permissions we can install the IIS Portion of the Async Server.   *****Remove all the <!--  and -->  we entered into the SS-Topology.xml file earlier.
 
10. Edit the SS-Settings.xml file and change the following:
A.  InstallDatabase   == False.  
B. IntallSynchService ==  True
C. HQMessageDatabaseServerName  ==  Name of Machine that is hosting IIS.
D. HQMessageDatabaseServerNamedInstanceName ==  ""
 
 
Your SS-Settings.xml file should now look like this:   (Remember to populate all of the additional Website Values as listed in Technet)
<Setting key="HQMessageDatabaseServerName" value="MYIISMachine" />
<Setting key="HQMessageDatabaseServerNamedInstanceName" value="" />
 <Setting key="HQMessageDatabase" value="AsyncServerMessageDatabase" />
<Setting key="InstallDatabase" value="false" />
 <Setting key="InstallSynchService" value="true" />
<Setting key="WebApplicationServiceBinarySourceFolder" value="C:\Program Files (x86)\Microsoft Dynamics AX\60\CDX\Async Server\package" />
 
11. Save your changes to the SS-Settings.xml file
 
12. Edit the SS-Topologyl.xml file, and modify the below sections so that the Installer will user our Domain User Group and not a Local User Group. Remember by removing the [   ] we are forcing the installer to use the value we entered here.
 
<WindowsLogin id="RetailHQMessageDBUsers" GroupName="YOURDOMAINNAME\RetailHQMessageDBUsers" CreateIfNotExists="true" MappedSqlRoleName="db_datareader" />
      //<WindowsLogin id="RetailHQMessageDBUsers" GroupName="YOURDOMAINNAME\RetailHQMessageDBUsers" CreateIfNotExists="true" MappedSqlRoleName="db_datawriter" />
  <WindowsLogin id="RetailHQMessageDBUsers" GroupName="YOURDOMAINNAME\RetailHQMessageDBUsers" CreateIfNotExists="true" MappedSqlRoleName="db_executor" />
 
 
13. Save your changes to the SS-Topology.xml file
 
14. Finally on the machine that is going to be hosting IIS, run the PowerShell install commands the same as before.  This will then install the IIS Components and configure the Website.
 
15. Once the installation finishes,  located the Web.config file in C:\Program Files (x86)\Microsoft Dynamics AX\60\CDX\Async Server\Package
16. Locate the below Section and verify  it is point to your SQL Cluster, if not update it as below.
 
<connectionStrings>
    <add name="HQMessageDBConnectionString" connectionString="Server=AGCluster;Database=AsyncServerMessageDatabase;Trusted_Connection=Yes;Encrypt=true;TrustServerCertificate=true" />
  </connectionStrings>
 
 
Although it a bit of manual work to setup the end result is definitely worth it.  As always I hope you found this information useful in your R3 Implement endeavors.

 

AX for Retail Barcode Font Printing Issues

$
0
0

For those who have seen the blog that I created for Payables Checks issues with MICR fonts, I wanted to share some information on AX for Retail barcodes not printing correctly.

If the report contains special fonts like MICR and Bar Codes and print correctly when printed to the screen, but do not render correctly when printed to the printer or pdf, the font will need to be manually installed on the AOS Server and the SSRS Server. 

Copy the font from the Windows\Fonts folder on the AX client machine to the AOS and the SSRS server Windows\Fonts folder.

Once the font has been manually installed restart the SSRS Service and AOS Service.

If the above does not work uninstall the font, reboot the SSRS server and copy the font again (you may need to reboot again).

The MICR font file is IDAutomationMICR.TFF, but the barcode font will depend on how you setup the barcode in AX for Retail.

 

Listed below is the barcode type - font name:

GS1-128 – BC C128 and BC C128 HD

Code 39 – BC C39 2 to 1, BC C39 3 to 1, BC C39 2 to 1 HD, BC C39 3 to 1 HD

Interleaved 2 of 5 – BC I25 and BC I25 HD

Code 128 – BC C128 and BC C128 HD

UPC A – BC UPC and BC UPC HD

UPC E – BC UPC and BC UPC HD

EAN13 – BC UPC and BC UPC HD

EAN8 – BC UPC and BC UPC HD

Integrating the Shipping Carrier Interface in AX 2012 with UPS WorldShip - Part 1

$
0
0

In this blog series, we will walk through the steps to configure Microsoft Dynamics AX 2012 to integrate with UPS WorldShip using the Shipping carrier interface located in Inventory and warehouse management. This integration will enable Dynamics AX 2012 to send sales order shipment information automatically into UPS WorldShip for processing.  Once processed, UPS will send the shipping transaction information back to Dynamics AX.

To start this series off, we will begin by installing UPS WorldShip on a workstation.

 

A. Install UPS WorldShip

  1. Run USP WorldShip setup.
  2. Click the Next (button)

   

  1. If prompted to reboot, click Next (button) to reboot your computer. 

  

  1. Once your computer reboots you should see the UPS WorldShip Setup (form)
  2. In the UPS WorldShip Setup (form), select the Application language (I am using English)
  3. Determine what directory you would like to install UPS WorldShip
  4. Select the Country/Territory of the installation
  5. Select Add shortcut to UPS WorldShip on desktop
  6. Click on the Next (button) 

  

  1. Read through the License terms
  2. Click on the I accept the terms of the license agreement (radio button) if you accept the terms of the license agreement.
  3. Click on the Next (button)  

  

  1. In the current iteration of UPS WorldShip, there are three different types of configurations that one can deploy in you environment.  The installation types are as follows:

 

  1. Single Workstation– Use this installation type if this WorldShip system will not be connected to any other WorldShip workstations. 

  

 

  1. Workgroup Admin (LAN Admin)– Use this type of installation if you want to allow other Workgroup clients (LAN Remotes) in a Workgroup to connect to this workstation.  Only one Workgroup Admin is allowed per workgroup. 

  

 

  1. Workgroup Remote (LAN Admin)– Choose this type of installation if you want the workstation to connect to a Workgroup Admin (LAN Admin) workstation. 

  

  1. In this example, we will be installing UPS WorldShip in Single Workstation mode. 
  2. Click the Single Workstation (radio).
  3. Click the Next (button) 

  

  1. Once the installation is complete, you will be prompted to reboot your system. 
  2. Click the Reboot Now (button)

   

  1. Select your internet connection type (mine is Direct Access)
  2. Click the Next (button) 

  

  1. Configure your direct access connection
  2. Click the Next (button) 

  

  1. If the configuration is correct, you should receive the following Dialog stating: "Successfully connected using Direct Access." 

  

  1. Click the Finish (button) to complete the setting up the communication setup. 

  

  1. Enter in your UPS account information and click the Finish (button) 

  

  1. Authenticate your UPS account by providing the information UPS is requesting and click the Submit (button) 

  

 

UPS WorldShip should now be fully installed on your workstation.  In the next installment of this series, we will configure the Shipping Carrier interface in Microsoft Dynamics AX 2012.

 

Best regards, 

John Bengson

FAQ: Microsoft Dynamics AX Kernel Hotfixes

$
0
0

This blog article attempts to address some of the questions we are commonly asked relating to kernel hotfixes. It is primarily written for AX 2012, R2 and R3 but many of the concepts are relevant to previous versions. It briefly covers the other types of AX hotfix but this is primarily to illustrate what a kernel hotfix is and how it differs from the other types. This article also does not go into great detail about the hotfix installation process.

Please refer to the following links for more detailed information on installing all the different variations of hotfix package for Dynamics AX:

http://technet.microsoft.com/en-us/library/hh335183.aspx

http://support.microsoft.com/kb/893082

If any of your questions on this topic still remain unanswered, please leave a comment below and we will try to answer them for you!

Q1: What is a kernel hotfix?

A kernel hotfix updates the binary source files and other supporting files for all the AX components.

Kernel hotfixes are therefore also commonly referred to as binary hotfixes. Some examples of the files a kernel fix may update are the executable files (ax32.exe, ax32serv.exe) and assemblies(Microsoft.Dynamics.AX.*.dll). The installer will replace each file that needs patching with a newer version.

Q2: What is an application hotfix?

An application (X++) fix updates objects in the AOT.

It can make updates in the SYP, GLP, FPP & SLP layers (the layers reserved for Microsoft code). These changes are made in the AX model store in AX 2012 and later versions.

Q3: What are the major differences between these two types of fix?

A kernel fix is always cumulative.

Each, new kernel build contains every kernel fix previously published.

An application fix is NOT cumulative.

Application fixes will normally update just the objects that need fixing in order to resolve a specific issue. However, it may also need to update any dependencies (i.e. additional objects in the AOT that the “fixed”objects reference and that have also been fixed themselves).

The exception is a cumulative update or service pack, where both the kernel and application patches are cumulative.

Q4: What is the relationship between the application code and the kernel?

The AX kernel provides the underlying functionality that supports the execution of the application (X++) code.

The X++ application code is an interpreted language and the X++ interpreter is a part of the AX kernel. The kernel manages the resources used during the execution of X++ and performs garbage collection to clean up X++ objects and other resources that go out of scope.

The AX kernel is primarily programmed in C++ but also includes .NET assemblies. It is Microsoft-proprietary code and is not published externally, whereas the X++ source code is visible in the AOT.

The X++ programming language includes system classes, which are actually kernel classes (i.e. they are implemented in C++). For more information, refer to http://msdn.microsoft.com/en-us/library/aa853470.aspx

Q5: What is a hybrid fix?

A hybrid fixincludes patches for both the kernel and application code.

It’s similar to a cumulative update/rollup except that the application part of a hybrid fix will target a specific issue and is therefore not cumulative. Another similarity with a cumulative update is that you can apply just the kernel or just the application update.

Hybrid fixes are released when changes in the application code reference new functionality in the kernel (or vice-versa). However, these references are implemented in such a way as to ensure that the application will still run normally when only the application or kernel portion of the fix is installed (see Q8 for more on this).

Q6: Do I need to update my customizations after applying a kernel hotfix?

No, you do not need to resolve code conflicts between the patched Microsoft code and custom application code.

It’s a common misconception that applying the kernel hotfix will cause conflicts with custom X++ code. This only applies to application fixes, which as mentioned above will update the X++ source code in the lower, Microsoft-owned layers and can therefore affect customizations in higher layers.

Q7: Do I need to test a kernel hotfix before I implement it in Production?

You should always follow your normal processes for testing changes to your Dynamics AX environment before introducing the kernel hotfix into Production.

Each fix is tested before release, but it doesn't completely guarantee against the introduction of undesired behaviour in a customer's environment; every environment is different with a unique combination of hardware, configuration settings, integrations and custom application code and it's simply not possible to test every combination before the hotfix is published.

You should always take appropriate measures that minimize the risk of downtime and ensure your business critical functionality works as expected after the fix is applied.

For more information on how to implement a Dynamics AX hotfix, please refer to the following TechNet article:

http://technet.microsoft.com/en-us/library/hh335183.aspx

Q8: Is it supported to have a different kernel and application build?

YES, it is supported to have different builds for the application and the kernel BUT... they must be for the same version and service pack level.

Our Product Group ensure that dependencies between the application and kernel are not introduced when creating AX hotfixes. Dependencies between the application and kernel builds can only be introduced in a new product version and a new service pack (NOT in a rollup/cumulative update).

We also recommend having a kernel build that is the same or higher build than the application build. Applying a kernel update is normally a simpler process than updating the application code, so in the case of applying a cumulative update it makes sense to apply the kernel part of the update as well as the application part. This also ensures that you get the full benefit from any hybrid fixes, which as mentioned above require updates in both the kernel and application to function fully.

Examples:

Application build

Kernel build

Supported?

5.0.593.0 (AX2009 RTM)

5.0.1500.6491 (AX 2009 SP1 RU8)

NO (the application build is for RTM, whereas the kernel is for SP1)

6.2.1000.4051 (AX2012 R2 CU7)

6.2.1000.1437 (AX2012 R2 CU6)

YES…but not recommended!

(The kernel build is lower than the application build)

6.3.164.0 (AX2012 R3 base)

6.3.1000.930 (AX2012 R3 latest kernel*)

YES (the kernel build is higher than the application build but both are for AX 2012 R3 with no service pack)

* True at the time of writing. See Q10 below for ways to find the latest kernel.

Q9: Is it supported to have different kernel builds for different AX components in the same environment?

NO it is NOT supported. Customers should always apply the kernel fix to every AX component in the same environment.

It’s possible that unexpected behaviour could result from a kernel mismatch. In the latest versions of AX, the AOS throws a warning message to the event logs (event 151) if a client tries to connect to it and has a different kernel version.

The screenshot below is taken from the AX hotfix installer when applying a kernel fix for AX 2012 R2. It shows a list of all AX components that require updating (NOTE: ignore the checkboxes - only a few AX components were installed on my system, so some of the checkboxes were automatically disabled):

 

  
Q10: I have found a hotfix for my issue, should I install the specific hotfix referenced by the KB article?

Not always - if you are experiencing an issue that has been fixed in the AX kernel then download and install the very latest, kernel hotfix available for your product version and service pack.

As mentioned above, kernel hotfixes are cumulative so it normally makes sense to install the very latest kernel build. To recognise whether a fix is for the kernel or the application code, refer to http://technet.microsoft.com/en-us/library/hh335183.aspx

To find the most recent releases, you can refer to the following post on our blog, which we update on a regular basis:

http://blogs.msdn.com/b/axsupport/archive/2012/03/29/overview-of-ax-build-numbers.aspx

You can also log a support case to request the latest kernel hotfix package. Support cases that are logged to request hotfixes will normally be closed free-of-charge.

Q11: Can I uninstall a kernel hotfix?

Yes, a kernel hotfix can be uninstalled using the standard Windows functionality for uninstalling program updates

(i.e. by going to Control Panel, Programs, Programs and Features,Installed Updates).

The same is not true for application hotfixes, as these will add or replace models in your AX model-store and therefore cannot be removed in the same way.

As mentioned above, you must always ensure that all AX components have matching kernel versions when applying or removing a kernel hotfix.

Q12: I am experiencing crashes in my AX environment, should I install the latest kernel?

In most cases, YES! Almost all, known crash-causing bugs are resolved in the latest kernel build.

This is because problems in X++ code are normally detected and handled by the kernel’s exception handling framework or by the X++/IL compiler, whereas unexpected exceptions in the kernel force the operating system to terminate the program.

Troubleshooting crashes often requires a lot of time-consuming investigation work. Applying the latest, cumulative kernel update is the most efficient way to troubleshoot and ensures that wedo not investigate issues that have already been resolved.

Unless you have already captured enough information to help diagnose the issue then it is normally recommended to apply a kernel update.

For example, we will almost always require a full, user-mode crash dump file. This type of file will only be captured if you have set up Windows Error Reporting or enabled a crash rule in a debugging tool (e.g. Debug Diagnostic). In certain cases, we may need to analyse more than one dump file. Rather than wait for further crashes to occur and risk more downtime in your environment, a better alternative could be to proactively update the kernel.

Error when browsing a custom service hosted as IIS web service: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

$
0
0

Title: Error when browsing a custom service hosted as IIS web service - An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

Scenario:

You are using Microsoft Dynamics AX 2012
You have created several Custom Services that you can deploy using NetTcp successfully and consume the WSDL in your client applications without any errors.

You can deploy the same Custom Services in an enhanced port, using the HTTP adapter (to host as IIS Web Services).
However when you try and browse to the service you get an error similar to the below:

Server Error in '/MicrosoftDynamicsAXAif60' Application.
--------------------------------------------------------------------------------
An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 
Stack Trace:

[BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)]
   System.Signature.GetSignature(Void* pCorSig, Int32 cCorSig, RuntimeFieldHandleInternal fieldHandle, IRuntimeMethodInfo methodHandle, RuntimeType declaringType) +0
   System.Reflection.RuntimeMethodInfo.get_Signature() +82
   System.Reflection.RuntimeMethodInfo.GetParameters() +38
   System.Runtime.Serialization.ClassDataContractCriticalHelper.EnsureMethodsImported() +189
   System.Runtime.Serialization.DataContractCriticalHelper.CreateDataContract(Int32 id, RuntimeTypeHandle typeHandle, Type type) +786
   System.Runtime.Serialization.DataContractCriticalHelper.GetDataContractSkipValidation(Int32 id, RuntimeTypeHandle typeHandle, Type type) +117
   System.Runtime.Serialization.XsdDataContractExporter.GetSchemaTypeName(Type type) +85
   System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter..ctor(OperationDescription description, DataContractFormatAttribute dataContractFormatAttribute, DataContractSerializerOperationBehavior serializerFactory) +413
   System.ServiceModel.Description.DataContractSerializerOperationBehavior.GetFormatter(OperationDescription operation, Boolean& formatRequest, Boolean& formatReply, Boolean isProxy) +308
   System.ServiceModel.Description.DataContractSerializerOperationBehavior.System.ServiceModel.Description.IOperationBehavior.ApplyDispatchBehavior(OperationDescription description, DispatchOperation dispatch) +69
   System.ServiceModel.Description.DispatcherBuilder.BindOperations(ContractDescription contract, ClientRuntime proxy, DispatchRuntime dispatch) +120
   System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription description, ServiceHostBase serviceHost) +4122
   System.ServiceModel.ServiceHostBase.InitializeRuntime() +90
   System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) +182
   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +742
   System.ServiceModel.HostingManager.ActivateService(ServiceActivationInfo serviceActivationInfo, EventTraceActivity eventTraceActivity) +126
   System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity) +901
[ServiceActivationException: The service '/MicrosoftDynamicsAXAif60/<your custom service name>/xppservice.svc' cannot be activated due to an exception during compilation.  The exception message is: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B).]
   System.Runtime.AsyncResult.End(IAsyncResult result) +650220
   System.ServiceModel.Activation.HostedHttpRequestAsyncResult.End(IAsyncResult result) +210733
   System.Web.AsyncEventExecutionStep.OnAsyncEventCompletion(IAsyncResult ar) +166
 

--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18055

 

Possible Causes:

Cause 1:

One possible reason can be that the Custom Services Data contract classes contain other methods referencing types that are not part of the service/data contract.  Data contract classes should only have parm methods that are the data members. So when deploying the service to IIS, the modules containing these other types are not included and the types do not load. 

When generating service classes, we only parse the public service and data contracts.  We expect that data contracts are just containers for passing data around and do not have a dependency on non-service contract types.  When deploying to IIS, we only copy the types that are part of the contract.  This has always been the design for using data contracts in Services and AIF. 

 

Resolution:
To resolve this, re-view your service contracts and refactor the code and remove all parm methods from data contracts that are not data members, and redeploy the service to IIS again.

 

More information:
The reason why we don't experience the same behaviour when consuming the Custom Services over  NetTcp is that NetTcp is hosted on the AOS where all data types and NetModules are available and it manages to resolve the other data types. The real solution is to ensure that Data contract classes only have parm methods that are the data members. Further info on using Data Contracts in X++ can be found at http://technet.microsoft.com/library/gg848068.aspx

 

Cause 2:

Assuming the data contract services are all valid, and you are running Microsoft Dynamics AX 2012 R2 with application build 6.2.1000.4051 (CU-7), then review and/or test with Application hotfix KB2934017

Error: Sales is not marked as Direct delivery and an intercompany vendor cannot be included. - Direct Delivery with Intercompany

$
0
0

In case of you are intended to create a direct delivery for end customer through an Intercompany purchase order using Direct Delivery function,  you may receive an Infolog error message "Sales is not marked as Direct delivery and an intercompany vendor cannot be included." when you mark Include in Direct Delivery form, and this error prevent transaction execution.

  

This error indicate that there is a missing setup on the end customer master data

Go to Accounts receivable| Common| Customers| All Customers. Then locate the customer you need and go to Miscellaneous details fast tab, Intercompany filed group.

And mark Direct delivery check box.  

For the already created sales order transactions and have this error, The direct deliver check box need to be modified on the SalesTable under the AOT. The newly created sales order it will work as expected.

 

 


New procedure for submitting Intrastat returns in Belgium as of 2015 in Microsoft Dynamics

$
0
0

We have released a country-specific update for Belgium to enable the Intrastat report supporting the new XML format in Microsoft Dynamics AX2009 SP1, AX2012, AX2012 R2 and AX2012 R3.

 Overview

The Intrastat report is used to report all physical movements of goods in the EU community. When goods are transferred between one company's warehouses that are located in different countries, the transfer transactions are also required to be included in the Intrastat declaration. The procedure for submitting Intrastat returns to
the National Bank of Belgium is being changed. As of the year 2015, Intrastat returns can only be submitted via the internet application OneGate. This internet application enables you to enter the data manually or to import data files in CSV or XML format. The released AX modification is applicable for all Belgian companies and provides the possibility to create Intrastatreport in required XML format.

Help content

A help content explaining how you can proceed with the Intrastat returns submission to the National Bank of Belgium via generation of electronic documents in the new XML format that is effective starting from January 2015 reporting period will be published on http://technet.microsoft.com later.

Download information

The feature is available for download using the following link: https://mbs2.microsoft.com/Knowledgebase/KBDisplay.aspx?scid=kb;EN-US;3018604



How to prevent copy/paste from grids

$
0
0

In Microsoft Dynamics AX you can copy information from grids and paste that information into a Microsoft Excel worksheet. You can do this by selecting the lines you want to copy, going to File > Edit > Copy, and then pressing CTRL + V in Excel. You can also just press CTRL + C from the Dynamics AX grid.

For some customers this is extremely useful, for some other customers this can be something they don't want the users to be able to do. And there is no way to control this functionality through standard Dynamics AX security.

Following is an example of customization you can test to block this functionality for all users.

Class: sysSetupFormRun

Method: task

First, declare a variable of type FormControl, and then add the if code block for #taskCopy:

I hope this is helpful!

Bertrand

Project Management and Service Industries Hotfixes Released in December 2014 (Part 1)

$
0
0

In this blog series I will be posting the hotfixes released for the Project Management and Accounting, as well as the Service Industries modules for Dynamics AX 2012 R2 and Dynamics AX 2012 R3 twice each month. I would like to raise visibility for customers and partners to see what's been updated and changed, as there's many fixes that change and improve existing functionality. It will also give customers and partners a chance to be proactive if any of these appear to be something you might encounter in the future.

I will break these hotfixes down between the two releases. Keep in mind that a hotfix is first released on the build that the issue or design change is reported for. If you see a hotfix that exists in a different release, search for the fix in Lifecycle Services to see if it exists for your build. If the hotfix does not exist in Lifecyle Services for your version, there's a strong chance that it is in the works of being developed for your build of AX. In that scenario, the recommendation would be to submit a new support request so we can track the need for the hotfix.

If you see a hotfix that you would like to download and test, please log into Microsoft Dynamics Lifecycle Services (https://lcs.dynamics.com/) to review code changes, search for related issues, and download the hotfix for testing. If you are unfamiliar with Lifecycle Services, review the following blog for instructions on using Lifecycle Services to download a hotfix:

http://blogs.msdn.com/b/axsupport/archive/2013/12/13/using-lifecycle-services-to-download-hotfixes.aspx

If you have any questions about these fixes that cannot be answered by Lifecycle Services, please activate a new support request so our Project Engineers can assist you.

Watch for these posts twice each month, and I look forward to any suggestions and feedback!

Tyler Lewin
Senior Support Engineer
Microsoft Dynamics AX

 


Dynamics AX 2012 R2 


 KB 3025429 - Allows timesheets with multiple funding sources to be posted, where before we would get an error "Cannot create a record in Hours (ProjEmplTrans). The record already exists."

 KB 3024345 - This hotfix will allow a sales order that's marked on a project purchase order to remain marked when the quantity is changed.

 KB 3018464 - If you override the exchange rate for an intercompany expense report in EP, this fix will ensure the new rate is used by the destination company.

 KB 3019592 - After this hotfix, the copy functionality in the project wizard will now copy the schedule dates as well.

 KB 3023357 - If an expense entry in EP is including tax, this hotfix will correct the tax ledger postings and calculation (net vs. gross).

 KB 3023298 - When rate changes occur before payment, the payment amount will now match employee expense report amount when vendor invoice is posted in a foreign currency.

 KB 3024736 - This hotfix will make sure that the actual sales tax amount is unchanged when changing the project category on project journals.

 KB 3020830 - If a user clicks "Submit" more than once, this hotfix make sure that only one workflow instance is created.

 KB 3022290 - This will keep the correct project sales price when a user adjusts the sales tax amount and then enters a project category and makes sure the tax amount is not recalculated.

Microsoft Dynamics AX - 1099 Tax updates for 2014

$
0
0

Tax time is around the corner, so I thought I would let everyone know that we recently released this year's 1099 tax update for Microsoft Dynamics AX that makes the following improvements.

1.)     Fixes to the Update 1099 information routine.
2.)     Fixes to the actual 1099 print outs.
3.)     Addition of a form to allow users to manually key in 1099 information for a vendor right into the table so they can enter information and print the 1099.


This update was released under KB3019585 and will cover the following versions of Dynamics AX.

AX 2009 - 5.0
AX 2012 - 6.0
AX 2012 R2 - 6.2
AX 2012 R3 - 6.3

 

John Bengson

Microsoft Dynamics AX - 1099 Tax update details for 2014

$
0
0

There have been several requests for more detailed information about what changes were introduced in this year's 1099 update packaged in hotfix KB3019585.  Here is an outline of the changes that we have made.


1099-MISC

    
1.
Boxes 11 Foreign tax paid was deleted but box remains as shaded blank box on form
     2.
Boxes 12 Foreign country or U.S. possession was deleted but box remains as shaded blank box on form.
     3.
Update 1099 fields

         

     4.
Modify code to no longer enter data into MISC-12
          a.
Vendors with 1099 box set to MISC-11 will have 1099 box set to blank
     5.
Upgrade 1099-MISC transactions dated 1/1/2014 and forward for the following
          a.
Transactions with box MISC-11 must have the 1099 box set to blank


1099-INT

    
1.
Height for Boxes 4 and 5 was decreased from 4 lines to 3 lines
     2.
Position of boxes 6 and 7 was shifted up
     3.
Height for Boxes 6 and 7 was decreased from 4 lines to 3 lines
     4.
Position of boxes 8 and 9 was shifted up
     5.
Height for Boxes 8 and 9 was decreased from 4 lines to 3 lines
     6.
New box 10 Market discount was added
     7.
New box 11 Bond premium was added
     8.
2013 Boxes 10, 11, 12, 13 are now 2014 Boxes 12, 13, 14, 15
     9.
Update 1099 fields

         

     10.
Should not need an upgrade since the previous 1099 boxes were not stored as 1099 fields
          a.
1099 box INT-10 was updated to 1099 box INT-12
          b.
1099 box INT-11 was updated to 1099 box INT-13
          c. 1
099 box INT-12 was updated to 1099 box INT-14
          d.
1099 box INT-13 was updated to 1099 box INT-15


1099-OID

    
1.Box 5 was changed from Foreign tax paid to Market discount
     2.
Box 6 was changed from Foreign country or U.S. possession to Acquisition premium
     3.
Update 1099 fields

        

     4.
Upgrade 1099-OID transactions dated 1/1/2014 and forward for the following
          a.
Transactions with box OID-05 must have the 1099 box set to blank
          b.
Transactions with box OID-06 must have the 1099 box set to blank


1099-DIV

    
No change


Additional Changes 

     1. Functionality added to manually add 1099 amounts to account for non-cash compensation that would otherwise not be tracked in Dynamics AX.
     2.
Addressed an issue where only the SysAdmin role could edit 1099 fields in 1099 transactions form.  An accounting user/manager role should also have access. (Also logged as Connect Suggestion 378229).
          a.
Create privilege Maintain vendor 1099s
               i.
Maintain security access for
                    a)
Form Tax1099Summary
                    b)
Form VendSettlementTax1099
          b.
Create duty Maintain vendor 1099s
               i.
Assign to Accounts payable manager and Accounting manager
     3. Update E-mail (field) in the
1099 software vendor (form) - (Tax1099SoftwareVendParameters) http://technet.microsoft.com/en-us/library/aa584995.aspx

Viewing all 1498 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>