Business Connector code refresh

15 04 2011

While developing business connector applications you may come across issues where you code changes in AX do not seem to be taking effect or the caching is taking too long to refresh. I’ve tried restarting the AOS, restarting IIS, restarting Application pools even restarting the entire server and nothing seemed to have helped. However, an easy way to ensure that your changes are always available to the business connector code is to add the following line at the beginning of your .NET code, after loggin in, but before executing your custom code:
DynAx.CallStaticClassMethod(“SysFlushAOD”, “doFlush”);

(where DynAx is a logged in instance of Microsoft.Dynamics.BusinessConnectorNet.Axapta)

I hope that helps someone.





How to run multiple Dyanamics AX workflow websites on IIS 7

10 12 2010

Previously I have written up a post on how to run multiple workflow websites on the same server. The instructions are pretty IIS 6.0 specific, so here is an update on how to do this on IIS 7.

Step 1 – Create a new business connector configuration
1. Click start, control panel, administrative tools, Microsoft Dynamics AX 2009 Configuration.
2. Select Busines Connector from “Configuration Target”
3. Click Manage, Create Configuration.
4. Provide an intuitive name for the business connector configuration e.g. AX2009_DEV. You will need to use this in a few minutes again, so make a note of it.
5. Click ok.
6. Select Connection tab, select the AOS that is already there and click edit.
7.  Provide the correct server name, instance name and TCP/IP port, click ok.
8. Click apply to save your new configuration.
9. Select your previously selected configuration and click ok (this is so that your already existing website will still work).

Step 2 – Duplicate the website files
1. Open up My Computer and navigate to c:/Program Files/Microsoft Dynamics AX/50
2. Duplicate the Workflow folder  and rename the new folder to something intuative like “WorkflowDev”
3. Edit the web.config file inside the newly created folder using Notepad or similar text editor.
4. Replace the line “<appSettings/>” with

<appSettings>
<add key="BUSINESS_CONNECTOR_CONFIGURATION" value="[BUSINESS CONNECTOR NAME FROM STEP 1.4]" />
</appSettings>

5. Save and exit notepad

Step 3 – Create your website application pool
1. Open IIS Manager: Start, Control panel, Administrative Tools, Internet Information Services (IIS) Manager
2. Expand your server node, Click application pools.
3. Click add Application Pool (on the right)
4. Enter and Application pool name E.G. MicrosoftDynamicsAXWorkflow50Dev
5. Select .Net Framework v2.0.50727
6. Select Classic from the Managed pipeline mode.
7. Click ok to close.
8. Select your newly created application pool, click advanced settings.
9. Ensure that the managed Pipleine mode is set to classic.
10. Under Process Model -> Identity, click “…”, select custom account, click select, enter your bcproxy account details used for your previous workflow website. e.g. domain\bcproxy. Click ok to close, click ok to close the select window.
11.  Set the IdleTime-out (minutes) setting to 0.
12. Set Regular Time Inteval (minutes) (under Recycling section) to 0.
13. Click ok. Your application pool is now setup.

Step 4 – Create Application
1. In IIS Manager, expand the Sites node, expand “default website”
2. Right click on default website and click “Add Application”
3. Provide a name for your application e.g. MicrosoftDynamicsAXWorkflow50Dev
4. Select the application pool you created in step 3
5. Under the physical path node click … and browse to the folder you copied in step 2. e.g. C:/Program Files/Microsoft Dynamics AX/50/WorkflowDev, click ok
6. Ensure that your connect as settings are set to Pass-through authentication.
7. Click ok.

Step 5 – Select your website with AX.
1. In Dynamics AX 2009, naviagate to Administration -> Setup -> Workflow Infrastructure configuration wizard, under website select your new application that you created e.g. http://myserver:80/MicroftDynamicsAXWorkflow50Dev
2. Validate the website and complete the wizard.

You should now have multiple workflow websites running successfully in IIS 7.0

For more information on setting up your workflow infrastructure in dyanmics Ax 2009 check out this post.

Happy Daxing!





No .NET Business connector session found.

2 11 2010

My quick fix for the day. If you are getting an error message “No .NET Business connector session found.”  in your system event log, there may be a number of things to look at, however the first thing to check is whether the default business connector on your IIS machine is set up and pointing to the correct AOS. This may occur on development servers with multiple AOS instances. You can take a look at this post how to setup multiple workflow websites on the same machine in order to avoid this issue.

Happy Daxing





Developing a business connector application

25 05 2010

OK, so its slightly off my main blog topic, but I was quite interested to understand how the Workflow Website communicates with Dynamics AX through the .NET Business connector. So I decided to experiment and try build my own application using it. Much to my surprise it proved to be a quite easy and enjoyable experience with no major hiccups along the way (provided you have an AX client and Business Connector configuration already setup).

As an experiment I attempted to build a time tracker in C# to run on my desktop in order to actively keep track of the time that I work on my various client’s systems. It reads project information (activities, categories, projects etc..) from AX to populate the form. It then writes time data back to a table back in AX.

With relatively minimal effort I was able to accomplish exactly what I needed to. If you want to try your own hand at writing business connector applications, check out the MSDN walkthrough ovver here: http://msdn.microsoft.com/en-us/library/aa868997.aspx

Going through this exercise really helped me understand how the whole Dynamics AX 2009 Workflow framework functions. Well worth the time.





Workflow Walkthrough – Infrastructure

12 01 2010

Ok. So far on this blog I’ve been covering bugs, tricks and other issues relating to Dynamics AX workflow. However I haven’t yet provided any formal walk-throughs of workflow in its entirety. So here is my opportunity to add something of which I hope will be real value when creating new workflow templates, configurations and setting up of the workflow infrastructure.

So lets start at the beginning shall we.

Basic Requirements for Workflow to Be installed

  1. Dynamics AX AOS with at least SP1 installed
  2. IIS server.
  3. .Net Business Connector (installation described during this tutorial)
  4. EP Licence (Not officially required, but needed for .Net Business Connector)

Step 1 – Workflow Website Installation

Before creating our workflow templates or configuring pre-existing DAX templates, we need to setup the workflow infrastructure including the Windows Workflow Foundation Framework, .net business connector etc, relevant system users and a number of configurations within AX itself. So first things first. Lets setup out Workflow Website containing Windows Workflow Foundation.

  1. Install Internet Information Services (IIS)
  2. Setup a default website on IIS
  3. Run the Dynamics AX server installation file on your IIS machine
  4. Select ‘Add/Remove Components’
  5. Select .NET Business Connector
  6. Click next.
  7. Select a Language for the .NET Business Connector.
  8. Click next.
  9. Click Finish when the .NET Business Connector has finished being installed.
  10. Run the Dynamics AX server installation file on your IIS machine again
  11. Select ‘Add/Remove Components’
  12. Select ‘Workflow’ (Ensure that your active Dynamics AX .NET business connection configuration on your IIS machine (previous steps) is pointing to the correct AOS as the setup wizard will need to connect to your AOS to make some changes)
  13. Click Next
  14. You will be requested to enter a username and password for the user that your business connector will use to login to your AX environment. If you have previously set this up in your environment, the username will not be available to change. You can later set this up in your environment by going to Administration -> Setup -> Security -> System Service Accounts
  15. Select your default website that you would like to add you Workflow Virtual directory/Application to. You can install this to your sharepoint site if you so wish.
  16. Click Next
  17. Select the system account that your AOS is running as, so that the setup wizard will add this user to the list of users allowed to access the workflow website
  18. Click Next
  19. Click Install
  20. Click Finish when the Workflow Installation wizard has finished.

Your workflow infrastructure should now all be ready.

Should you wish to have multiple AOS environments all running Workflow, but only 1 IIS server, see this post for more details.

Step 2 – Configure your AOS

  1. Login to your Dynamics AX Environment as and administrator User.
  2. Ensure that your email server parameters are correctly setup (Administration -> Setup -> E-mail parameters)
  3. Setup your System Service Accounts (Administration -> Setup -> Security -> System Service Accounts)
    1. Business Connector Account (account used to login to your workflow website and other external tools)
    2. Workflow System Account
    3. Workflow Execution Account
  4. Setup a batch server (Administration -> Setup -> Server Configuration)
  5. Setup a workflow batch group (Administration -> Setup -> Batch Groups), give it a name like WF or WORKFLOW
  6. Run the workflow infrastructure configuration wizard (Administration -> Setup)
    1. In the first screen click Next
    2. Enter the full Workflow Website address that you created above if not already populated
      1. E.G. http://MYSERVER:80/MicrosoftDynamicsAXWorkflow50
    3. Click Validate, you should get a message such saying ‘Workflow runtime URL is valid’ if not you have not setup either your business connector account successfully or the workflow website is not functioning properly.
    4. Click Next
    5. Select the batch group that you created above (this is for the message processing batch job)
      1. If this is greyed out, you can cancel the batch the wizard and go back and delete your already existing workflow message processing batch job)
    6. Click Next
    7. Select the batch group that you created above (this is for the expired workitems batch job)
      1. If this is greyed out, you can cancel the batch the wizard and go back and delete your already existing due date workflow batch job)
    8. Select a recurrence time for how often you want workflow to check for expired workitems, by default this is every hour.
    9. Click Next
    10. Click Next to confirm, this will create the necessary batch jobs for workflow workitem processing as well as due date checking.
      1. To confirm that the batch jobs were create you can check under (Basic -> Enquiries -> Batch Job). There should be 2 new batch jobs created and in a waiting state (“Workflow Message processing” and “Workflow Due date expirations”)
  7. Setup your workflow per company
    1. Setup Workflow Email template (for workitem assignments) (Basic -> Setup -> E-mail Templates)
      1. Create a new Email template and name it “Workflow” or something similar, select default language and the name of the user that you want to appear in the Sender and Sender address fields in the email when the user receives a notification about new workitem)
      2. Create at least one language template, select a subject and provide the necessary contents for the email by clicking on the template button. You will be able to provide both a text as well as an HTML based template.
      3. You can use a number of ‘tags’ with in your template (and email subject) that will allow you to open and link to the correct notification or record within AX, or simply display more information about the workitem that the user is being emailed about. E.G:
        1. LinkToAlert%/”>View Alert (in the html editor)
        2. LinkToBusinessData%/”>View Record (in html editor)
        3. %Subject% – Displays the subject of the workflow (from WF Configuration)
        4. %Message% – Displays the instruction of the workflow (from WF Configuration)
    2. Setup number sequences (Basic -> Setup -> Number Sequences)
      1. Create number sequences that will be used for your configurations as well as for your actual running instances
      2. E.G.
        1. Configuration Number sequence:
          1. Number Sequence Code: Work_200
          2. Name: Work_200
          3. Smallest: 1
          4. Largest: 999999
          5. Next: 1
          6. Format: ######_200
        1. Instance Number sequence:
          1. Number Sequence Code: Work_201
          2. Name: Work_201
          3. Smallest: 1
          4. Largest: 999999
          5. Next: 1
          6. Format: ######_201
    3. Setup company (for each company) workflow parameters (Basic -> Setup -> Settings for Workflow)
      1. On the first tab select the email template that you have just created (Approval and task notifications)
      2. On the second tab (Administration), your workflow runtime (website) url should already be selected.
      3. On the third tab (Number sequences),  select number sequences created above for:
        1. Configuration Id Work_200
        2. Instance Id Work_201
      4. Close the settings for workflow screen
    4. You company/companies should now be all ready for you to begin developing or configuring workflows.

Keep your eyes open for the Workflow walk-throughs on Configurations and Template developments. Please let me know if you have any further comments or tips that you have discovered during workflow infrastructure configuration.

Enjoy Workflowing

Further reading:
Workflow Installation and Configuration





IIS Permissions for Dynamics AX workflow and All that

15 10 2009

Ok, here’s the scenario.

One sets up a workflow for a client, does comprehensive testing on their test environment and then take it to their live environment. You then go through a checklist of all the workflow hoops that you must hop through for the infrastructure to work correctly, setting up Business connector account, batch jobs, IIS website etc, then you wait to see if all works correctly when the client submits their first record (as you don’t want dirty data). Then you get the dreaded call that Workflow is not working and that somebody is getting many emails saying vaguely that workflow failed to communicate as desired. So today I wrote a small test workflow that enables one to run a record through from start to finish to see if all is well. If anyone is interested in getting hold of this just drop a comment or pop me an email. Its a really basic form with a single approval with everything setup, all thats left is to create a configuration.

However all of that aside, I have a client (running separate machine for IIS and AOS) that I didn’t do this to and got the call awhile later requesting support. Their event logs were displaying the following on the AOS machine

Exception thrown in     
SysWorkflowEventDispatcher-onAcknowledgeWorkflowActivation    
SysWorkflowEventDispatcher-raiseWorkflowActivationEvent        : 
Web service failed: workflow id WI000002AS Server was unable to process request. 
---> Access is denied

and the following on the IIS Machine:

An unhandled exception occurred and the process was terminated.
Application ID: /LM/W3SVC/1114387320/ROOT/MicrosoftDynamicsAXWorkflow50
Process ID: 4776

Exception: System.UnauthorizedAccessException

Message: Access to the port is denied.

StackTrace:    at System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str)
at System.Threading.Semaphore..ctor(Int32 initialCount, Int32 maximumCount, String name)
at Microsoft.SharePoint.Publishing.BlobCache.GetCacheTokenThreadStart()
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()

The underlying connection was closed: An unexpected error occurred on a receive.

We solved the error by adding the Business Connector user to the administrators group on the IIS Machine, and all came right. For the moment this is a temporary hack. Still investigating the precise permissions needed to get this to work with security properly in tact. Anyone have any ideas? I’ll keep you posted on progress. So far checkout technet for official requirements for business connector, apparently you only need IIS_WPG (IIS Worker Process Group) and “STS_WPG (STS Worker Process Group), if running Windows SharePoint Services”

Cheers!





SysWorkflowEventService-onAcknowledgeWorkItem Invalid message sequence – missing Activation message.

23 09 2009

After some investigation into this error with Microsoft Dynamics AX 2009 workflow (found in the system event log of your workflow IIS machine):

SysWorkflowEventService-onAcknowledgeWorkItem
Invalid message sequence – missing Activation message

I discovered that it seems to occur when a problem with the business connector was encountered. I extensively investigated the code associated with the error but to no avail apart from to come to the conclusion that it may be related to some corrupt date. Unfortunately documents that were in workflow will have to be cancelled and resubmitted after re-installing your business connector and Dynamics workflow infrastructure via AX2009 setup, otherwise you will continue to get this error/warning.





Workflow on VPC

17 09 2009

Just finished creating a VPC with clients application and database on it. Yes I probably could have found a template VPC with everything including workflow already setup on it, but then I wouldn’t have been able to know what exactly what was going on to make everything function correctly.

My basic steps were:
1) Get VPC from friendly systems administrator with PreLoaded Client AOS and Database
1.1) Cleared out my business connector user in AX.
2) Setup Active Directory – Had to rename my virtual PC name because it had a _ in the name.
3) Create all the users needed for testing on my new Active Directory Domain and assign them the necessary rights
3.1) Modify in SQL my admin’s SSID and domain, so that i could get into the system again.
4) Uninstall the Business Connector that was originally installed (and workflow if it was as well)
5) Reinstall Business Connector
6) Reinstall workflow using the correct business connector account and domain
7 ) Change my services permissions on my AOS so that it could authenticate correctly to the Workflow Website
8 ) Restarted AOS and ran Workflow Infrastructure configuration wizard
9 ) Imported the remaining users (apart from myself) into AX.

Sadly this took me many an hour to figure out and I’m probably forgetting a few things that i did and am very vague on the rest, but hopefully it will help for any further VPC setups.





The request failed with http status 401: Unauthorized

17 09 2009

Have you got the message “The request failed with http status 401: Unauthorized” when trying to run the Workflow Infrastructure Configuration wizard and trying to validate the URL.
I recently resolved this issue on a VPC that I was configuring by changing the account that the AOS Service was running as to a valid active directory user and not simply the Local System Account (right click on service, properties, Log On)





Business Connector Greyed out on workflow installation

17 09 2009

Have you ever tried re-installing workflow from AX2009 setup file and got to the screen where it asks for the Business connector details to find that the name is greyed out. To solve this:
1) Open up your AX Client as a user with administrator privileges.
2) Click Administration -> Setup -> Security -> System Service Accounts.
3) Clear the Business connector user and network. Close the window
4) Try installing workflow again.