Sunteți pe pagina 1din 293

Ledger Postings Management of

Fixed Price projects in Microsoft


Dynamics Ax 2012 – Scenario I
Sandeep Chaudhury

27 Mar 2012 3:00 AM

 Comments 0

Friends,

Hope all is well your way. I Did not get chance to spend time on my blog this month.

We keep hearing a lot of questions on the ledger posting scenarios, revenue recognition etc in case of fixed price
projects in Microsoft dynamics AX. Well,I thought, I will explain the various ledger posting scenarios in the life
cycle a fixed price project in few of my subsequent posts.

The ledger postings in case of a fixed price project is controlled through the setup done in the Project groups.
Based on the these setups, the ledger posting in a FP project can happen in 8 different ways.

We will analyze each one of the setup options one by one and verify the ledger postings. I will name these 8 ways
of ledger posting as Scenario 1 to 8. We will analyze the scenario 1 in today’s post.

The 3 parameters in the project groups form which controls these ledger posting are as follows.

 On-account invoicing.
 Revenue recognition accounting rule.
 Matching principle.

Scenario 1 :

On-account invoicing Balance

Revenue recognition rule Completed percentage

Matching principle Sales value

Refer to screenshot below for the new project group which I have created.
I have created a new cost template and a fixed price project and attached this to the a new project group with
above setup.

Take an example where a company owns a fixed bid contract of $500000 and agreed upon with the customer for
a milestone based invoicing plan as depicted below screenshot.

Costs are incurred in the project during its progress as indicated in the table below. We will post Estimates for the
project at the end of every month and eliminate it in the month of SEP.

Month Cost in project

APR $20,000

MAY $25,000
JUN $40,000

JUL $30,000

AUG $55,000

Total Cost $170,000

Take a look at the tables below which shows the P&L and WIP statistics in the Project at each month before and
after the estimates are posted.

I am not able to provide the AX screenshots here as I have some issues in my AX environment. You can run these
statements from All Projects > Select a Project > Control Tab > Project Statement.

Project Profit & Loss Statement before posting estimates:

Account Dr/Cr APR MAY JUN JUL AUG SEP TOTAL

Accrued Credit 0 0 0 0 0 0 0
revenue
– sales
value

Revenue 0 0 0 0 0 0 0

Cost Debit $20,000 $25,000 $40,000 $30,000 $55,000 0 $170,000

Gross -20,000 -25,000 -40,000 -30,000 -55,000 0 -170000


Margin

Project WIP Statement before posting estimates:

Account Dr/Cr APR MAY JUN JUL AUG SEP TOTAL

WIP– Debit 0 0 0 0 0 0 0
sales
value

Gross 0 0 0 0 0 0 0
WIP

WIP Credit $250,000 0 $200,000 $50,000 0 $500,000


invoiced
on
account

Net WIP -250000 -200000 -50000 0 -500000


Note : There is no accrued revenue before posting the estimate. Also, as the On account is set up to be “Balance”
in the project group setup, the project on account invoices appear in the WIP-invoiced On account ledger.

Project Profit & Loss Statement after posting estimates:

Account Dr/Cr APR MAY JUN JUL AUG SEP TOTAL

Accrued Credit $58,800 $73,500 $117647 $88,236 $161765 0 ~500000


revenue
– sales
value

Revenue $58,800 $73,500 $117647 $88,236 $161765 0 ~500000

Cost Debit $20,000 $25,000 $40,000 $30,000 $55,000 0 $170,000

Gross $38,800 $48,500 $77,647 $58,236 $106765 $1,70,052


Margin

The values for the accrued revenue are calculated based on the % complete/ Degree of completion in the project
as the setup is done to be “Completed Percentage” rule. If you analyze the table above the accrued revenues are
calculated based on % complete at end of each month. The % complete multiplied with the total contract value of
the project derives the recognized revenue in a given month.

Also note that, you will notice rounding issues in the values above as I have taken random examples.

Project WIP Statement after posting estimates:

Account Dr/Cr APR MAY JUN JUL AUG SEP TOTAL

WIP – Debit $58,800 $73,500 $117647 $88,236 $161765 -500000 0


sales
value

Gross $58,800 $73,500 $117647 $88,236 $161765 0 ~500000


WIP

WIP Credit $250,000 0 $200,000 $50,000 -500000


invoiced
on
account

Net WIP -191200 -73,500 -82,353 -88,236 -111765 0 0

I hope my explanation of this scenario of posting in the fixed price project was clear. Please post your queries if
any pertaining to this.

Till next time !!!!


Thanks

Keep DAXING
Dynamics Ax Project Accounting – Basic
concepts for non-functional consultants
Part I
February 24th, 2012

After talking to a few friends, I realized that they completely lack two basic concepts behind
Project Accounting. Unawareness of these concepts makes Project Accounting so hard to
deal with. The concepts are (A) All these debits and credits floating around (for e.g. Debit
WIP account and credit Profit and Loss Account) (B) Revenue accrual/ Post costs / Estimates
/ Cost Template.

I will write about (A) today and follow up with (B) later. Perhaps then, I should then write
about dimensions since people find this simple concept so confusing.

The concept behind all these debits and credits is really simple. (As long as you understand
the basics of accounting. If you do not then either, get your accounting concepts clear or
do not indulge in Project accounting.)

Say we have company called OverChargers Inc. The company has a single employee Mr
LazyAss who worked for 2 hours in an entire year on a project. The hourly cost is say 50
dollars and Overchargers charge their client at the rate of 500 dollars an hour (cash).
Assuming that the company had no other transactions, what would their year-end accounts
look like?

Forget project accounting setup right now. We are talking of simple accounting here.

To recoup:

Employee cost 2 hours * 50 USD = 100 USD

Sales 2 hours * 500 USD = 1000 USD

Let us start with the Journal Entries:

A. Paid salary

Payroll cost Dr 100.00

To Bank Account 100.00

B. Charges customer

Bank Account Dr 1000.00

To Sales 1000.00
Now the Ledger balances would be

Bank Account Dr 900.00

Payroll cost Dr 100.00

Sales Cr 1000.00

This is fine, as you can see we do not really need the complexity of the project accounting to
maintain project accounts.

That is until you consider a scenario.

What happens when someone forgets to bill the customer or say ends up charging the
customer only 1 hour instead of 2. Such omissions are very normal in a large-scale project
with lots of transactions.

How do you figure out that something is missing?

As you will see, accountants have a clever solution for this problem. If you get this concept
then you will get all these debits and credits floating around in Project module.

Let us consider our original scenario with a small change. LazyAss was paid for 2 hours but
the customer got charged only for 1 hour.

Let us start with journal entries.

A. When you pay salary, you do not debit Payroll Cost. You debit Payroll balance instead.

Payroll balance Dr 100.00

To Bank account 100.00

B. When you charge the company, you make 2 journal entries (remember that customer
got charged only for an hour.

First entry is to reverse the cost for 1 hour.

Payroll cost Ac Dr 50.00

To Payroll balance 50.00

Second entry is to charge the customer for an hour.

Bank Account Dr 500.00

To Sales 500.00
Now what do our ledger balances look like:

Bank Account Dr 400.00

Payroll cost Dr 50.00

Payroll balance Dr 50.00

Sales Cr 500.00

One look at the ledger account and the accountant knows something is wrong since there is
a balance in Payroll Balance account. This account should not have any balance at the year
end.

This is exactly how all these confusing debits and credits in Project module come into
existence.

Same concept applies to inventory cost. In this case, when inventory is issued from store it is
debited to Inventory issue account (which essentially works similar to Payroll balance
account above.)

If you compare the postings above with those of employee journal in Dynamics Ax then you
see the first entry but second entry will be slightly different. If the line property is setup for
accrual then the credit would be to accrual account. If the line property is not setup for
accrual then the posting would be to another balance account.

Ah! But then I am jumping ahead of myself. I will cover accrual (and estimate, cost template,
yawn!) in my next post.

See you around.


“The Value FeeRet in the Category field is not
valid according to the Category setup” Error in
AX 2012
Posted on February 8, 2013 • Posted in AX Troubleshooting, Blog posts, Dynamics AX 2012, Project management
accounting • Tagged AX 2012, Customer payment retention error, Error, Invoice proposal submit, Troubleshoot • Leave a
comment

Friends,

I have been busy in work after my long vacation and break from blogging.

Today, I just wanted to write a quick post about troubleshooting an error which you might face while
submitting invoice proposals which has retention enabled in it in Microsoft Dynamics AX 2012.

If you come across the error with message“The value “ FeeRet“ in the Category field is not valid
according to the Category setup” , where “FeeRet” is the customer payment retention category, then
make sure that The “Active in journal” and “Customer payment retention” check boxes are marked in
the Category setup under Project Management and Accounting > Setup > Categories > Project Categories.

Refer to screenshot below.

Note : Please note that, if you select the ‘Customer payment retention’ check box prior to the ‘Active in
journal’ check box, then you cannot mark the ‘Active in journal’ check box anymore, as it will be disabled.

Hope this will help. Lot of new exciting posts coming soon. Stay tuned.
Keep DAXING

Sandeep

Share this post

 inShare1

 Email


Like this:
Like

Taking advantage of the On hold funding sources


in Project Contracts in Microsoft Dynamics
AX 2012
Posted on November 13, 2012 • Posted in Blog posts, Dynamics AX 2012, Project management accounting, PSA • Tagged AX
2012, Funding limits, On hold funding type, Project contracts, Project Management and Accounting • Leave a comment

Hi,

Hope everyone is doing well and having great times in this festive season.

In today’s post I will discuss a very small and useful functionality which is introduced in the project
management and accounting module of AX 2012. This is the new “On hold funding source type” for
project contracts.

When you use the funding limits on the project contracts, the “On hold” funding source can prove to be
very useful in allocating any transaction amounts which exceeds the specified funding limits for the other
funding sources present in the project contract. The on hold funding source is referred to one of the internal
organizations of AX 2012, which are the business units setup in the company.

Let me now elaborate this with an example.


Let us say there is a project contract with one customer as funding source and one on hold funding source.
Also there is a funding limit of $2000 for the customer which is the funding source for the project contract.
Take a look at the screen below for such a project contract.

Now, let us post few transactions on the project belonging to this project contract, such that the amount
exceeds $ 2000 and see how the on hold funding works. The below screenshot shows an hour journal
posted on this project such that the total sales amount exceeds $2000, the funding limit for the customer.

If we go to the project posted transactions and take a look at the funding allocation, this will show how the
exceeded amount of $100 is allocated to the On hold internal funding source and the allowable $2000 is
allocated to the customer funding source.
Now that the exceeded amounts are allocated to the On hold funding source, you can use adjustment
function later to allocate these amounts back to the funding source when funding limit changes after
agreement with the customer. The advantage of having the On hold funding source is that, it will allow
posting of transactions even if the sales amount exceed the specified funding limits for the funding
customers in the project contract.

Let us now change the funding limit to $3000 as the customer has agreed upon the same and then run
adjustment for the transaction to see how the amount which was allocated to the On hold funding source,
gets allocated back to the customer.

Funding limit change is shown in screen below.


After you change the funding limit for the customer in the project contract, adjust the transaction to see the
impact how the transaction gets allocated back to the funding source.

Select the adjusted transaction and verify the transaction to see that the amount $2100 is now allocated to
the funding source which is Forest wholesale.
Powerfully Simple. Microsoft Dynamics AX 2012.

Feel free to ask any queries about this.

Thanks

Sandeep

Share this post

 inShare1

 Email


Like this:

Accelerated billing/invoicing for Projects in


Like

Microsoft Dynamics AX 2012–(Progress


based billing)
Posted on June 25, 2012 • Posted in Blog posts, Dynamics AX 2012, Project management accounting, PSA • Tagged
Automated billing, AX 2012, Progress Billing • 4 Comments
Automated, accurate and faster billing in Projects is one aspect, which every professional service
organization look as one of the winning factors, when they choose an ERP application for their
organization.

Microsoft Dynamics AX 2012 ERP is equipped with a powerful project billing engine, which helps in
faster invoice processing by providing the various capabilities.

1. Transactions to be billed in a given time period are recommended automatically.


2. Automated workflow for invoice and submission and approval.
3. Automated and accurate progress based billing based on % of work complete in the project.
4. Support for complex billing scenarios such as T&M based, Milestone based, unit based billing etc.
5. Option to specify complex billing scenarios such as T&M based, Milestone based, Per unit billing
etc.

In today’s post I will highlight one of the billing/invoicing features of AX 2012 which is the billing based
on the progress of work in the project. This feature of AX 2012 allows professional services firms to
automate the billing process without having the need of their project accounting staff spending days and
weeks to determine the accurate completion stage of the project.

In Microsoft dynamics AX 2012, the project managers can set up the project in the system and define a
budget for the project and then, the system can calculate the progress based periodic billable amounts
automatically.

This can just be accomplished by executing the below simple steps.

1. Setup the Project and required basic details for it.


2. Setup the appropriate billing rule in the Project Contract.

3. Estimate the Project and establish a project level budget.


With the above minimal setup done, when project transactions are posted, AX 2012 system can calculate
the current completion stage/percentage of the project automatically without having you the need of the
project accounting staff doing to manually which will take a considerably longer time.

Based on the % complete for the project, system will automatically calculate the amount to be billed at the
current state of the project.

This was just one method in the billing engine of AX 2012 and there are several others, which supports
more complex billing scenarios.

Simple, Powerful !! This is it for today. Please contact me if you need further detailed and expert advise on
billing capabilities of Microsoft dynamics AX 2012.

Keep DAXING

Sandeep

Share this post

 inShare1

 Email


Like this:

Intercompany Timesheets Management in


Like

Microsoft Dynamics AX 2012


Posted on June 7, 2012 • Posted in Blog posts, Dynamics AX 2012, Project management accounting, PSA • Tagged AX 2012,
Project Management and Accounting, Timesheets • 3 Comments
Hi All,

I had been very busy with several things on my plate at work. Work keeps all of us busy.

It feels bad for not being able to spend time on my blog and finally decided to take out some time and write
here.

In today’s post, we will explore and discuss about one of the important functionality in the Project
Management area which is “Intercompany timesheets functionality”.

In every mid sized to a large-sized professional service industry, it is a common practice that
employees/workers of the organization keep working on the projects of different legal entities where as
they will be employed in only one legal entity.

The loaning and borrowing activity of employees between the legal entities is essential to make efficient
utilization and putting right people if the right job possible. When working on the projects of legal entities
other than their employing legal entity, Microsoft Dynamics AX 2012 make it simple for the employees to
register their times/hours directly on the projects of the contracting company/resource borrowing company,
without having the need for the employee to enter times at multiple places and multiple times.

NOTE : Intercompany Timesheets Management functionality will be available only if the AX 2012
feature pack is installed.

In the subsequent steps and paragraphs of this post, we will explore the various setups and the overall
intercompany timesheets operation in AX2012.

Let us refer the two legal entities which exchange the employees as the Loaning entity/Resourcing and the
Borrowing/Contracting entity.

The following setups needs to be completed in AX 2012 in the Loaning legal entity.

1. Enable the intercompany timesheets management in the project parameters screen.


2. Setup pricing details for the employees who are to be loaned. This includes setting up the cost price and
the transfer price. The cost price however is ideally setup for all employees weather they will be loaned or
not. The transfer price represents the price which the loaning legal entity charges to the borrowing legal
entity.

Transfer price setup:

Cost price setup:


3. Setup the ledger accounts for the inter company cost and revenue.

4. Make sure that the debit and credit accounts for the intercompany transactions are setup.
This completes the setup required in the loaning/resourcing company.

Now, let us complete the setup needed to be done in AX 2012 in the borrowing legal entity.

1. Setup sales prices for the borrowed resources which the the actual selling price in the project.

2. Setup the debit and the credit accounts for the legal entity the worker will be borrowed from.
3. Further additional setups can be done, like assigning projects and categories to the borrowed worker if
the validation functionality is implemented.

Now that we are done with the minimum setups required for the intercompany timesheet functionality to be
operational, let us take a look at the steps/process by which the borrowed employee can submit this
timesheets in the borrowing/contracting company.

 Employee logs into AX 2012 enterprise portal and navigates to the new timesheets screen.
 Notice the new Legal entity field in the timesheet line which gets enabled when we enable the
intercompany timesheets in AX2012.

 Also notice that the loaning and the borrowing/contracting companies are displayed in the look
up of the legal entity field. The worker will select CEE as the legal entity and enter their times in.
So the employee will be able to submit his/her times in the project of the other legal entity without having
to be an employee of that legal entity.

The back end accounting is then done automatically based on the setups done.

For any queries regarding the inter company timesheets functionality, please do not hesitate to contact me.

Till next time !!!

Share this post

 inShare4

 Email


Like this:

Ledger Postings Management of Fixed Price


Like

projects in Microsoft Dynamics Ax 2012 –


Scenario I
Posted on March 27, 2012 • Posted in Blog posts, Dynamics AX 2012, Project management accounting, PSA • Tagged %
complete, AX 2012, Fixed price project, ledger posting, Project Management and Accounting, Revenue recognition • 4
Comments

Friends,
Hope all is well your way. I Did not get chance to spend time on my blog this month.

We keep hearing a lot of questions on the ledger posting scenarios, revenue recognition etc in case of fixed
price projects in Microsoft dynamics AX. Well,I thought, I will explain the various ledger posting scenarios
in the life cycle a fixed price project in few of my subsequent posts.

The ledger postings in case of a fixed price project is controlled through the setup done in the Project
groups. Based on the these setups, the ledger posting in a FP project can happen in 8 different ways.

We will analyze each one of the setup options one by one and verify the ledger postings. I will name these
8 ways of ledger posting as Scenario 1 to 8. We will analyze the scenario 1 in today’s post.

The 3 parameters in the project groups form which controls these ledger posting are as follows.

 On-account invoicing.
 Revenue recognition accounting rule.
 Matching principle.

Scenario 1 :

On-account invoicing Balance

Revenue recognition rule Completed percentage

Matching principle Sales value

Refer to screenshot below for the new project group which I have created.
I have created a new cost template and a fixed price project and attached this to the a new project group
with above setup.

Take an example where a company owns a fixed bid contract of $500000 and agreed upon with the
customer for a milestone based invoicing plan as depicted below screenshot.

Costs are incurred in the project during its progress as indicated in the table below. We will post Estimates
for the project at the end of every month and eliminate it in the month of SEP.

Month Cost in project

APR $20,000
MAY $25,000

JUN $40,000

JUL $30,000

AUG $55,000

Total Cost $170,000

Take a look at the tables below which shows the P&L and WIP statistics in the Project at each month
before and after the estimates are posted.

I am not able to provide the AX screenshots here as I have some issues in my AX environment.

Project Profit & Loss Statement before posting estimates:

Accou Dr/ APR MAY JUN JUL AUG SE TOTAL


nt Cr P

Accru Cre 0 0 0 0 0 0 0
ed dit
reven
ue –
sales
value

Reven 0 0 0 0 0 0 0
ue

Cost Deb $20,0 $25,0 $40,0 $30,0 $55,0 0 $170,


it 00 00 00 00 00 000
Gross - - - - - 0 -
Margi 20,00 25,00 40,00 30,00 55,00 17000
n 0 0 0 0 0 0

Project WIP Statement before posting estimates:

Accou Dr/C APR MA JUN JU AUG SE TOTAL


nt r Y L P

WIP– Debi 0 0 0 0 0 0 0
sales t
value

Gross 0 0 0 0 0 0 0
WIP

WIP Cred $250,0 0 $200,0 $50,0 0 $500,0


invoic it 00 00 00 00
ed on
accou
nt

Net - - - 0 -
WIP 25000 20000 50000 50000
0 0 0

Note : The project on account invoices appear in the WIP-invoiced On account ledger.

Project Profit & Loss Statement after posting estimates:

Acco Dr/ APR MAY JUN JUL AUG SE TOTAL


unt Cr P
Accru Cre $58,8 $73,5 $117 $88,2 $161 0 ~5000
ed dit 00 00 647 36 765 00
reven
ue –
sales
value

Reve $58,8 $73,5 $117 $88,2 $161 0 ~5000


nue 00 00 647 36 765 00

Cost Deb $20,0 $25,0 $40,0 $30,0 $55,0 0 $170,0


it 00 00 00 00 00 00

Gross $38,8 $48,5 $77,6 $58,2 $106 $1,70,


Margi 00 00 47 36 765 052
n

The values for the accrued revenue are calculated based on the % complete/ Degree of completion in the
project as the setup is done to be “Completed Percentage” rule.

You may notice rounding issues in the values above as I have taken random examples.

Project WIP Statement after posting estimates:

Acco Dr/ APR MAY JUN JUL AUG SEP TOTA


unt Cr L

WIP De $58,8 $73, $117 $88, $161 - 0


– bit 00 500 647 236 765 500
sales 000
value

Gros $58,8 $73, $117 $88, $161 0 ~500


s 00 500 647 236 765 000
WIP
WIP Cre $250, 0 $200, $50,0 -
invoi dit 000 000 00 500
ced 000
on
acco
unt

Net - - - - - 0 0
WIP 1912 73,5 82,35 88,2 1117
00 00 3 36 65

I hope my explanation of this scenario of posting in the fixed price project was clear. Please post your
queries if any pertaining to this.

Till next time !!!!

Thanks

Keep DAXING

Share this post

 inShare1

 Email


Like this:

Customer payment retention functionality in


Like

Microsoft Dynamics AX 2012


Posted on March 12, 2012 • Posted in Blog posts, Dynamics AX 2012, Project management accounting • Tagged A/R
Retainage, AX 2012, Customer payment retention, Projects • 7 Comments

Customers always want to make sure that they get the best work/service done from their vendors
successfully, in time with 100% quality ensured. In the professional services industries, most customers
wants to retain/hold back certain amount/percentage of the payments, when they pay their vendors for a
project work until the project completes.

Vendors can then discuss and validate with the customer about the quality and completion of the project
work and request all the retained amounts upon agreement.
This functionality being fully automated in a simplified manner within the Project Management and
Accounting module, empowers the list of several other capabilities of Microsoft Dynamics AX 2012 for
services industries.

Let us now understand, how this functionality works in dynamics AX 2012. The following are the setups
required for the retention functionality to be working.

Setups required:

1. Define a new Main account in the “Chart of accounts” for the Customer payment retainage
receivables. Ensure that the posting type for this account is “Customer Payment Retention
Receivables”.
2. Setup the Customer Payment Retention Receivables account in the “Accounts for automatic
transactions” form under GL module.
3. Ensure that a number sequence is setup for the Customer payment retention term in Projects
parameters form.

4. Create and setup the new Fee project category for posting the customer payment retention amounts.
Ensure that the Customer payment retention checkbox ins marked for this category.

Let us define the customer payment retention terms under the project management and accounting module.
The payment retention term specifies the schedule for the payment retention. The customer may want the
payment to be retained in one of the following ways.

- A certain percentage/amount on every invoice until the project completes.

- A certain percentage/amount on the invoices until a certain percentage of the project work is completed.

- Once you setup the retention terms, assign them to the Project Contracts, projects or the Billing rules(If
you have implemented)
Now, when you process the invoicing for a project/project contract with payment retention term attached to
it, you will notice the retention details, i.e the % of retention and amount in the invoice proposal screen and
validate before you submit for approval.

The following shows the accounting entry when you post this invoice (Say $1000 with 10 % retention.

Customer payment retention receivable $1000 (Debit)

Project Invoiced revenue $10000 (Credit)

Customer Balance $9000 (Debit)

When you request the retained amount after agreement with the customer, system will reverse the
Customer payment retention receivable entry and debit the customer balance automatically.

Customer payment retention receivable $1000 (Credit)

Customer Balance $1000 ( Debit)

Dynamics Ax 2012 also provides you options to perform several inquiries on the customer payment
retention detail,s under the “Inquiries” and “Reports” sections as shown in few screen-shots below. These
will help users in analyzing the customer payment retention data in projects being in a
central location/screen.
Feel free to contact me if you need more information in terms of setup and processing the customer
payment retention.

Thanks

Keep DAXING

Share this post

 inShare3

 Email


Like this:

An insight to the new and improved Timesheets


Like

Management Functionality in Microsoft Dynamics


AX 2012
Posted on February 16, 2012 • Posted in Blog posts, Dynamics AX 2012, Project management accounting • Tagged
Employee Services, Enterprise portal, Expenses, Microsoft Dynamics AX 2012, Service Industries, Timesheets • 15
Comments
Hi Friends,

I thought of writing about one of the most talked about enhancements in Microsoft Dynamics AX 2012
which is the employee timesheets functionality in Project Management and Accounting module.

Recording the employee’s times(hours) and expenses is one of the key processes in any services industry
today, especially the IT consulting and Management services firms. These firms always look for a
timesheet management system in the ERP system which they evaluate for their organization which can
make it efficient and easy for their employees to enter their timesheets and expenses.

Microsoft Dynamics AX 2012 empowers the professional services industries with a powerfully simple
employee services portal refered to as the Enterprise portal which is based on the Microsoft SharePoint
2010 foundation server, one of the most successful products that MS has released ever.

Now let us discuss about the various capabilities and improvements of the Timesheet system in AX 2012.

Few of the pre requisites for the timesheet functionality to be working are as below.

 Setup timesheet periods. ( Ax 2012 supports Daily, Weekly, Bi-weekly, Semi-monthly and Monthly
etc. periods for registering hours/times).
 Setup the project management setup for the workers. ( Employees and Contractors).
 Create required user relations.
 The project management and accounting module setup. (Projects, activities, categories, line
properties etc.).

Assuming that all of the above required setups are done, employees of the organization can log into the
employee services portal and start entering timesheets.

The Home page of the employee services portal displays role tailored information depending on the user
profile/role which is assigned to the employee.

When an employee/contractor who has system administrator role logs into the enterprise portal, the screen
looks as shown below. This shows all the various capabilities and functionalities present on the enterprise
portal of AX 2012.
However, assuming the case of a typical service industry/IT consulting services industry, where employees
(both salaried and hourly based) deal mostly with timesheets, expenses and their approvals, I have
customized a role to prepare the employee services portal to look as below. Ax 2012 provides the flexibility
of customizing the enterprise portal content the way you want it.

Timesheet Management functionality Highlights in AX 2012:

1. Provides flexibility for defining different timesheet periods depending on need.

2. Timesheets overview screen displaying details of exiting timesheets.


3. Option to set timesheet favorites/favorite lines and functionality to load timesheet lines

these from favorites.

4. Option to create new timesheet by copying an existing timesheet (Previous).

5. Setup delegates for timesheet submission, who can enter timesheets on your behalf in

your absence and manage your timesheet delegates and timesheet favorites right on the

web enterprise portal.


6. Record time on each individual task/activity or the project by entering suitable internal

and external comments for the description of the work. Week summary to date fact box

which displays the total number of hours entered in the week.

7. Employees will have to spend less time in entering comments for each line with the consolidated
comments entry screen.

8. Automatic workflow can be setup for timesheet approval/review. When timesheets are

submitted, they get automatically assigned to the respective reporting manager’s queue

for review.
9. Print your timesheets right from the enterprise portal.

Apart from the timesheets management functionality, the enterprise portal in AX 2012 provided several
other powerful business process capabilities and this will definitely help every organization in a very great
deal.

Till next time !! Keep exploring.

Share this post

 inShare0

 Email


Like this:

Project Quotations Management in Microsoft


Like

Dynamics AX 2012: Highlights of it’s Capabilities,


Benefits and Usage
Posted on February 9, 2012 • Posted in Blog posts, Dynamics AX 2012, Project management accounting • Tagged Project
Quotations • 1 Comment
Bidding for attractive projects and winning them is a critical process for professional services firms today.
As an initial phase of every project, project managers of the organizations use project quotations to
approach customers for bidding projects easily and accurately. A typical project quotation will contain all
possible details of item and services that are quoted for a project.

With MS Dynamics AX 2012, you can create quotations, create activities in quotations, schedule the
activities, soft/hard commit resources, submit and approve quotations and finally convert the quotation to
project. You can do all this all few setups and clicks without having the need to doing much of manual
works.

In today’s post we will discuss the various capabilities of project quotations and the benefits that project
managers can obtain using the project quotations functionality in dynamics AX. These are as described
below.

1. You can create project quotations for exiting customers and potential prospects also. Also you can
make use of quotation templates to spend less time when creating multiple new similar quotations which
you have worked in the past.

2. Create and setup the work break down structure of the project activities right at the project quotation
stage. You can make use of the Copy functionality of WBS to make it easier to create and define the
WBS or you can also define a all new WBS for the current quotation.
3. You can generate the project quotation lines automatically from the work breakdown structure
without having the need to create each line separately for the quotation. With AX 2012, you can also
copy the lines of quotation from an existing quotation.

4. Setup all the various required information on/about the quotation staying in one single screen.

5. Review the estimated profitability of the quotation by just clicking one button.

6. Match and schedule/soft or hard commit resources for activity requirements of the project.
7. Submit detailed quotation for approval to the workflow and confirm quote after approval.

8. Transfer the Confirmed project quotation into an actual project(New or existing) and then run a
wizard to create project WBS, forecasts, project budgets etc. automatically right from the quotation.

Above were few of the highlights of the various capabilities of project quotations in Microsoft Dynamics
AX 2012. Please feel free to reach me if you need more information regarding quotations in dynamics AX.

Thanks
Keep DAXING

Share this post

 inShare0

 Email


Like this:

The Work breakdown Structure(WBS)


Like

functionality for Projects in Microsoft Dynamics


AX 2012:
Posted on February 8, 2012 • Posted in Blog posts, Dynamics AX 2012, Project management accounting • Tagged AX 2012,
Project WBS • 20 Comments

Dear Readers,

In today’s post, let us explore the new work breakdown structure functionality for Projects in Microsoft
dynamics AX 2012.

Every professional services organization in today’s competitive world of business, wants to be more
accurate in terms of managing each descending level of activities/tasks in the projects they carry out, to
manage the costs and revenue efficiently and become more profitable. Breaking down the individual tasks
and activities on projects and tracking costs, revenues, managing resources at each task level etc. helps in
this.

The work breakdown structure of dynamics AX 2012 is a hierarchical representation of the activities and
child activities in a project and helps the project managers to do the following.

 Define the overall work scope of the projects.


 Each descending level of the hierarchy represents increasingly detailed information about the
project work.
 It helps identifying and creating milestones in the project.
 It also helps managers to soft/hard commit resources to the activities/tasks.
 Project managers can create WBS templates and use them any time they want to plan a new
project. They can also create the WBS directly on a project.

Let us first learn how we can view and create the work breakdown structure template for our organization.
The following steps will depict the steps to create new WBS template.
1. Navigate to Project Management and Accounting > Common > Activities > Work breakdown
structure template.
2. Click New > New work breakdown structure template.

3. On the Work breakdown structure details screen, click “New” button to create the hierarchy of
activities/tasks in the project.

4. Create Planning as the new activity and click New button again by keeping the focus on this activity.
Provide activity name, it’s priority and a brief description about it in the designated fields.

5. On the right hand side, expand the various fast tabs to fill in information about this activity. Expand the
Schedule tab and key in the Duration in days, effort in hours, a default category etc. as shown as an
example in the screen above.

6. Expand the Activity requirements tab and setup the resource requirements for this activity in terms of
Education, skills, certification, experience etc. This information can be used if you want to make use of the
resource scheduling functionality of AX 2012.

7. Setup the estimated costs and revenues for this activity by creating new records under this tab.
8. Similarly, complete the end to end hierarchy for this WBS template and setup the above explained
parameters for each of the activities/tasks.

9. Now that we have created and setup a template for a software development project, let us create a new
project and try to use this template in the project to define the task hierarchy for this.

10. For this, create the new project and click Plan tab > Work breakdown structure. Click Copy from
button. System will show all the available templates in the system. Select the template and click Ok button.

11. System will then load the activity hierarchy structure for the project which you can modify as the
current project needs. For example you may wish to assign different resources to the activities and the cost
and revenue estimates may be different for this project.

The project manager can also carry out the resource assignment task from the WBS screen and by clicking
the Assign resources button.

The project managers can also make use of the WBS right from the project quotations level which will help
them in automating most of the project planning tasks such as WBS management, budgeting, resource
assignments etc.

Please feel free to ask any queries you have regarding the WBS management for projects in AX 2012 and I
will be happy to answer.

Thanks

Keep DAXING

Share this post


 inShare0

 Email


Like this:

Track Project Revenues from Free Text Invoices


Like

in Microsoft Dynamics AX 2012


Posted on January 29, 2012 • Posted in Blog posts, Dynamics AX 2012, Project management accounting • Tagged AX 2012,
Free Text Invoice, Project Revenue • Leave a comment

Readers,

In one of my earlier post, I mentioned that AX 2012 now makes it possible to track revenues in Projects
that are billed through the free text invoices.

Let us take a look at this functionality today to understand, how it works in reality. This is a very simple
functionality but was a much needed one as per me.

First thing we must check when we want ensure to track revenues in projects which are billed through free
text invoices is the required parameter setup.

Parameter Setup:

 Navigate to Accounts Receivables > Setup > AR Parameters.


 Click Project link/tab.

 Check mark the “Display project-related fields on free text invoices” check box.
 Check mark the “Allow ledger account number to be edited” check box if you want to be able to
change the revenue ledger account, which gets defaulted when you choose the project and
category in the free text invoice.

Having done that required parameter setup, let us now go and post a free text invoice.

Create and Post a Free Text Invoice:

 Navigate to Accounts Receivables > Common > Free Text Invoices > All free text invoices and
create a new FTI.
 Enter Customer account = 1102. Rest all customer related data will get loaded automatically.
 Click Line details fast tab and click the Project tab.
 Enter the required project and category.

 Notice that, as soon as you enter the project and category, the main account field gets populated
with the main account which is setup in the project posting profile.
 If you want to change the account, you can do so, as we have marked the check box in AR
parameters forms.
 Now, fill in the invoice description, Quantity and the unit price and finally post the FTI.
 You can then verify the project revenue and see that this gets recorded in the project.

We are done !

Thanks
New enhancements in Cash and Bank
Management Module of Microsoft Dynamics AX
2012 R2
Posted on April 20, 2013 • Posted in Blog posts, Dynamics AX 2012 • Tagged Bank Module, Cash and Bank Management
enhancements, IAT, Microsoft Dynamics AX 2012, NACHA • Leave a comment

Hello,

Today, I wanted to discuss few of the enhancements which have been introduced in AX 2012 in the Cash
and Bank Management module. Most of us must be already aware of these, but I just want to discuss these
in this forum as I found these enhancements very useful.

Follow the points below which describes the major enhancements.

1. Additional validation on the Bank account number and routing number(USA and Canadian Bank
accounts):

 Earlier in AX 2009, there was no real-time validation on the bank account number and routing
number fields and users could enter any random values into those fields.
 In AX 2012, new validation have been introduced where only valid bank account numbers and
routing numbers are accepted.
 These validation are triggered based on the “Address” which you select for the bank account. If
the Country of the address is USA, then the bank account number and routing number
validation are thrown accordingly. If the Country of the address is CANADA, then the bank
account number and routing number validation are thrown as per Canadian bank validation.
 To verify this go to Cash and Bank Management > Common > Bank Accounts.
 Select USA OPER bank account.
 Verify that routing numbers and bank account number fields accept random values with no
validation.
 Now specify an address for the bank under the Address fast tab and System will throw the
necessary validation errors/warning for the bank account number and routing number fields
when you save the record(In Conjunction with routing number type).
2. Bank Credit Limit check during vendor payments with bank as the offset:

 We can now define credit limits and credit limit tolerance thresholds for a bank account in AX
2012. These credit limit check gets triggered during making a vendor payment(with bank as
offset).
 System will check for the available balance in the bank account and will throw required tolerance
message as per the credit limit specified for the bank.
 We can define Credit limit related parameters in the Cash and Bank Management parameters
form.
 Define the credit limit for a selected bank account under General fast tab.

 Note that the available balance in the USSI OPER bank(CONTOSO demo data) is $72771678.46.
We will now record a vendor payment journal with an amount $7277378.46(Bank balance +
Credit Limit) and validate the journal. System will successfully validate the journal and say It is Ok.

 So system now allows you pay an amount which is within the (Available balance+Credit limit)
range of for the bank. If we try to make a payment for an amount $727737946, this will exceed
the credit limit and system will stop us from validating and posting it.
3. Inactivate a Bank account:

 In AX 2009, there was no way to deactivate or close a bank account from the Bank sub ledger.
The only way possible was to close the GL account(Cash account) related to the bank account.
 Now in AX 2012, we can inactivate bank accounts from the bank sub ledger. The steps below
explains this change.
 Go to Cash and Bank Management and Select a bank account.
 Expand the General fast tab.
 You can provide a from and To dates for which the back account will be active.
 Additionally you can set bank account status to 3 different options such as

Active for all transactions – Bank account is active and transactions are allowed.

Inactivate for new transactions – Bank account is inactive and no new transactions are allowed.

Inactivate for all transactions – Bank account is inactive and no transactions are allowed
4. Bank Account Statement Import and advanced reconciliation

 A much-needed functionality. AX 2012 now allows importing electronic bank statements and
then performing advanced reconciliations.
 To be able to use the back statement import and reconciliation functionality, you will need a
series of one time configurations. Below are the high level steps to do all required configurations .
 The first step is to configure the setup required for the electronic bank statement import which
includes the parameters, bank statement format, transaction code mapping and bank
reconciliation matching rules etc.
 The next step is to set up the required AIF inbound ports(Services) and import formats etc.

 After all the setups are done, finally we can import the electronic bank statements(XML/XSLT)
formats and perform advanced reconciliation.

In my next post, I will explain in detail the step by step procedure for setting up bank accounts for
statement import and advanced reconciliation procedure.

Till next time !! keep exploring.

Regards

Sandeep
Effective Labor rate in Microsoft Dynamics
AX 2012
Posted on July 11, 2013 • Posted in Blog posts • Tagged AX 2012 R2, Effective Labor rate, ELR • Leave a comment

Hello Everyone,

It has been very long spending time in my blog. Have been very busy at work since last few months.
Today, I wanted to write about another new functionality which Microsoft Dynamics AX 2012 R 2 has
introduced. It is the ability to designate the project cost as an Effective Labor Rate (ELR).

The ELR – Effective Labor Rate is actually the dollar value income per hour of an employee after
calculating productivity. Alternatively, the ELR defines the hourly cost of a worker, if they work all the
available hours in a work week.

AX 2012 R2 enables us to indicate the cost price of a worker as ELR. In the following few steps we will
see how do we setup ELR in AX 2012 and then we will see how the ELR calculation happens when we
post labor transactions/timesheets for them.

 To define the ELR for an employee, go to Project Management and Accounting > Setup > Prices >
Cost prices (Hour).
 Setup the cost price for the employee and then check the Effective labor rate check box.

 Go to HRM > Workers > Select the worker and then click Project Management > Project Setup
and mark Use ELR.
 In the above screens, I have setup the cost of the worker as $100 and marked it as ELR. Also, this
worker is setup to work 8 hours each day (Monday to Friday) in the resource calendar)
 Now, lets go record a project hour journal to see the impact of ELR and see how the calculation
happens.
 Notice that system does not populate the cost price field.

 Let us say the employee worked for 24 hours in a given week. Enter Hours = 24 and post the hour
journal.
 Now let us go to Posted project transactions and verify how system has automatically ELR.
 As we can see in screen above, system has automatically calculated the cost price based if the
worker would have worked for full productivity hours(40 hours ) for the week.
 So the formula for ELR calculation is as given below.

ELR = Effective labor rate price per hour($100)* Number of


hours per week per the worker’s work calendar(40)/Number of
hours worked/registered in the week(24).
This is it for today’s post. Till next time !!
Human Resources – Automatic Benefits Eligibility
Determination for Employees in Microsoft
Dynamics AX 2012
Posted on September 29, 2013 • Posted in Blog posts • Tagged AX 2012 R2, Benefits, Benefits eligibility events, HRM •
Leave a comment

Employees of every organization are often entitled for several benefits such as cell phone, Parking, Dental,
Vision insurance etc.. All the required data for the employee benefits are managed inside the Human
resources management module of AX 2012. There are some sequence of steps involved to configure and
manage all the elements of benefits such as,

 Configure Benefit Types.


 Configure Benefit plans for each benefit types
 Configure Benefit options for the employees for each of the plans.

I will not explain the setup and configuration of benefit elements in this post. In this post, we will focus on
discussing how AX 2012 makes it extremely simple for human resource managers/executives to
automatically determine the eligibility of employees who can be enrolled on a given benefit. AX 2012
allows to configure simple benefit eligibility rules and HR executives can simply create and process
benefits eligibility events. AX will then automatically determine which employees are eligible to be
enrolled for the benefits. Let us now discuss the step by step guidelines to create and run a benefit
eligibility event.

Note: Before you run the benefits eligibility events in AX 2012, make sure you have setup all the benefit
elements.
1. Define benefit eligibility policy and rules:

 The first thing to setup is the eligibility policy parameters which will be used by all the
benefits eligibility policies.
 Navigate to HR > Setup > Policies > Benefits eligibility.
 Click Setup > Parameters on the action pane.
 Select the organization types which can be used with benefits eligibility policies. Notice that
the only organization type which you will have for the benefits eligibility policy will be
Companies.


 The next step is to create the benefits eligibility policy. Click New > Policy
 Select the Company accounts for which this policy will be used.


 The next step is to configure the benefit policy rules. Note that you need to configure the
policy rule types prior to setting this up.
 Let us say the HR assistant wants to process an eligibility event where he/she wants to find all
eligible employees for a benefit and the eligibility criteria is that the “everyone who joined the
company after 12/31/2012.
 Navigate to HR > Setup > Benefits > Benefits eligibility policy rule types.
 Create a new record, give it a name (Batch 2013 in this case) and select the Query as “Benefit
eligibility”.


 Now, go back to the benefits eligibility policy created above. You will notice that the policy
rule type now appears on the policy.
 Select the Batch2013 and click “Create policy rule”.


 Key in the effective date, expiration date and the condition for the policy as shown in screen
below and click OK button.

 With this, we are done setting up the benefits eligibility policy rule.

2. Create Benefit(s):

 The next step is to create a new benefit. Let us create a benefit for Company transportation
such as Company car.
 Navigate to HR > Common > Benefits > Benefits.
 Click New > Benefit to create a new benefit and key in the details as shown in the screenshot
below and click “Create Benefit button”.


 Expand the Eligibility rules fast tab and setup Eligibility = “Rule based” and Select the Rule
type = Batch2013. Please note that AX 2012 allows you to configure the Eligibility to ‘All
workers are eligible” and “By pass eligibility process”. The “By pass eligibility process” will
cause the benefit to be ignored when eligibility event is run.
 Optionally, you can also setup Eligibility overrides with a date range for specific workers. If
you setup eligibility overrides, then you can enroll a worker even if they are not found as
eligible for a benefit.

3. Create and Process the Benefit eligibility event:

 Let us now create a benefit eligibility event and process the same. Follow the below steps to
process an eligibility event.
 On the Benefit created above, click Personnel Actions > Create Eligibility Event and key in the
required details as shown in screen below and click OK button.


 On the Eligibility event form, expand the Workers fast tab.
 You can add selected worker records or click Add all worker button to add all the workers for
this event. Note that, the eligibility event will be ideally run from the HR > Periodic area.

 Click Process button on the Action pane and hit OK button.
 Note that the processing may take a few seconds and wait until you get an info confirming the
completion of the process.
 Click Refresh button and then click Show results
 Notice that system will show all the worker records and their individual eligibility for the
benefit. System also shows description of the reason why a specific worker was not eligible
for a benefit.

Once the eligibility event is run and all the employees are determined, the HR assistant can enroll
employees on the required benefits from the Mass benefits enrollment screen as shown in screen below.

That’s it for today’s post. Keep reading…

Thanks

Sandeep
Share this post

 inShare1

 Email


Like this:
Like

Integration of Microsoft Dynamics AX with


Microsoft Office Word
Posted on August 18, 2013 • Posted in Blog posts • Tagged AX 2012, MS Office integration, MS word integration, Proposals,
PSA, Quotations, R2 • Leave a comment

Microsoft Office , especially the excel, word and PowerPoint are the most popular office productivity
applications which everyone knows and works with today.

Imagine what if a Simple, scalable yet powerful ERP system integrates seamlessly with such popular
applications to exchange data so that users can spend more time on their favorite office applications and
then easily push or pull data to or from the ERP without requiring any development effort.

As most of us know, with Microsoft Dynamics AX 2012, these all come Out-of-the-box.

There has been a lot of great posts and discussions about the Office excel add-in functionality which is
heavily used by most of the implementation teams up to some extent.

In today’s post, I wanted to uncover and discuss the integration of Microsoft Dynamics AX 2012 with
Microsoft Office Word and demonstrate how these two applications share and exchange data effortlessly
making the life of the end users a lot simpler and better.

Let us take an example where the sales manager of an organization has challenges in preparing different
quotation/business proposal formats for different customers and still maintaining all the data inside the ERP
system.

With Microsoft Dynamics AX 2012 and Microsoft Office, they can prepare as many number of proposal
templates in MS word in any format they want for different customers/prospect, and then just upload them
in the organization’s shared document library in the enterprise portal. AX 2012 can then sync those
automatically within it to generate project proposals with data on to the templates without needing multiple
development efforts. Let us now take look at the steps involved in accomplishing this in AX 2012.

Prepare the required project proposal templates and do the


necessary data mapping within AX:

 Open a Microsoft Word document and click on the Dynamics AX tab.


 Connect to the Dynamics AX AOS server in the similar by which you connect
the excel add in function.
 Now, once you have your document source types configured in AX, you
would see the table and data fields in the Add fields pane. In this case, I
have already done the necessary configuration.

Upload all your template documents on the shared document


library of the enterprise:

 After you have prepared all your required proposal templates, you can
upload them in the shared document library in the portal.
 This document can be shared, reviewed and managed as in normal
SharePoint functionality.
 Once these are finalized and ready, AX has in-built functionality to sync with
these.
Complete necessary setup in AX to automatically synchronize the
documents into AX document types:

 AX 2012 now automatically synchronizes with the share point portal and
gets the document templates to create new document types in AX.
Generate project proposals from proposal templates:

 In Dynamics AX, you can create and store proposal templates for various
customers or price groups.
 Once you generate your new proposal either newly, or by copying from a
template, the proposal is all set to be generated in the MS word formats
which were created and designed outside AX, without needing any specific
connection methodology. Thanks to the seamless integration of Microsoft
Dynamics AX 2012 and MS Office.

Generate proposal templates in your desired format with just click


of a button:

 When you click on the Attachments button and create a new document,
you will notice that the document template which we created and synced in
AX appears automatically on the document handling options.
 Click New > Project Quotation Sample menu button. This will automatically attach the word
document for the project proposal on to the proposal record and then generates and launches
the document which the data automatically filled in from Dynamics AX which is ready for review
and sending to Customers or prospects.
Powerful, Simple and Agile ! Microsoft Dynamics AX.

Share this post

 inShare12

 Email


Like this:
Like
Effective Labor rate in Microsoft Dynamics
AX 2012
Posted on July 11, 2013 • Posted in Blog posts • Tagged AX 2012 R2, Effective Labor rate, ELR • Leave a comment

Hello Everyone,

It has been very long spending time in my blog. Have been very busy at work since last few months.
Today, I wanted to write about another new functionality which Microsoft Dynamics AX 2012 R 2 has
introduced. It is the ability to designate the project cost as an Effective Labor Rate (ELR).

The ELR – Effective Labor Rate is actually the dollar value income per hour of an employee after
calculating productivity. Alternatively, the ELR defines the hourly cost of a worker, if they work all the
available hours in a work week.

AX 2012 R2 enables us to indicate the cost price of a worker as ELR. In the following few steps we will
see how do we setup ELR in AX 2012 and then we will see how the ELR calculation happens when we
post labor transactions/timesheets for them.

 To define the ELR for an employee, go to Project Management and Accounting > Setup > Prices >
Cost prices (Hour).
 Setup the cost price for the employee and then check the Effective labor rate check box.

 Go to HRM > Workers > Select the worker and then click Project Management > Project Setup
and mark Use ELR.
 In the above screens, I have setup the cost of the worker as $100 and marked it as ELR. Also, this
worker is setup to work 8 hours each day (Monday to Friday) in the resource calendar)
 Now, lets go record a project hour journal to see the impact of ELR and see how the calculation
happens.
 Notice that system does not populate the cost price field.

 Let us say the employee worked for 24 hours in a given week. Enter Hours = 24 and post the hour
journal.
 Now let us go to Posted project transactions and verify how system has automatically ELR.
 As we can see in screen above, system has automatically calculated the cost price based if the
worker would have worked for full productivity hours(40 hours ) for the week.
 So the formula for ELR calculation is as given below.

ELR = Effective labor rate price per hour($100)* Number of


hours per week per the worker’s work calendar(40)/Number of
hours worked/registered in the week(24).
This is it for today’s post. Till next time !!

Share this post

 inShare1

 Email


Like this:
Like
Managing recruitment and Posting Open jobs in
Enterprise portal in Dynamics AX 2012
Posted on May 22, 2013 • Posted in Blog posts • Tagged Enterprise portal, EP, HRM, Open Jobs, Recruitment • 1 Comment

Hello Everyone,

Managing recruitment processes, job applications and applicants is a key aspect of human resources
management in any organization. The HRM module of Microsoft Dynamics AX 2012 provides a very
efficient and effective way of managing open jobs in an organization and applications and applicants who
are applying for the open jobs.

In today’s post I will highlight,

 How to create open jobs and publish the Job ads to the enterprise portal.
 How candidates/applicants( Both External and Internal) can view and apply for Open jobs.
 How applicants/candidates can submit their resume to the organization for considerations to any
open jobs.
 How recruiters can view and manage all the incoming job applications at one central location and
process them further.

Create Jobs and Publish them on Organization portal:


1. Go to HRM > Common > Organizations > Jobs.
2. Create a new job. In this case let us say it is for a DAX Technical Consultant.
3. Create the required positions under the HRM > Organizations > Positions.

4. The next step is to create the recruitment project and create the job ads for that.

5. Go to HRM > Recruitment > Recruitment Projects and create a new recruitment project.
6. Create the Job ad for this recruitment project and enable this to be published on the enterprise portal.

With this, we are done creating the open jobs and publishing them to the portal.
Candidates viewing and applying for jobs on the portal:
AX allows both internal employees/existing employees and external applicants to apply for open job. The
site services feature can be used to integrate the external job portals and company websites to AX. External
candidates can apply directly from portals and company websites with this integration. (Note: These tasks
will need some technical works and some development as well and it is not fully functional out of the box.

1. When candidates log on to the portal of AX 2012, they get to see a direct link to all the open jobs
in the organization.

2. Notice that the job we just created is now appearing on the portal. Candidates can select the job and click
Apply to apply for the job.
3. Copy paste your resume and click Apply. Note: You can customize this to have a direct link for resume
attachment/uploading.

Note that, candidates can also apply and submit their resumes without any open job also. All of these
applications will be gathered against a Unsolicited recruitment project.
Recruiters viewing and processing received applications:
The Application Basket in AX is the central location for all the received applications both from enterprise
portal and external sites(job portals , company websites if integrated). The recruiters finds all the key
information about the applications such as candidate contact information , resume attachments, address etc.

1. Go to HRM > Periodic > Recruitment > Application Basket.

2. Notice that Sandeep Chaudhury, who applied for the DAX Technical consultant job is appearing in this
form now. The system also shows various other information about the applicant on this form required for
the recruiters.

3. Click Attachments button to view their resumes.


4. If everything looks okay about the candidate and the resume looks goof to be processed further, then
select it for Approval and Click Approve button. You will notice that the application record will disappear
from the application basket as it has been processed further now.
5. Now, when the recruiter goes to the recruitment project again, they get to see all the received
applications against the recruitment project and can process it further from there.

Refer to my earlier post on employee life cycle management in AX 2012 to know further about this.

The focus of this post was to highlight the job posting capabilities within AX and to show how it eases the
job of recruiters on a day to day basis. Please reach out to me in case of any questions on this.

Till next time!!

Sandeep

Share this post

 inShare1

 Email


Like this:
Like

Absence/Leave Management in Human Resources


Management–Microsoft Dynamics AX 2012
Posted on April 27, 2013 • Posted in Blog posts • Tagged Absence recording, AX 2012, HRM, Human Resources
Management, Leave request Management, R2 • 1 Comment

I have been contacted by many of the readers requesting a post regarding the absence management
functionality of AX 2012. In today’s post I will cover the key features and benefits of the absence
management functionality along with the setups and processes involved in it.

Workers are the key assets for every professionals services firms and gaining control over the workers
capacity cost and workers availability is always a key to success. Moreover managing employee
leaves/absences is always a key aspect of Human resources operations for every organization.
Organizations always looks for a flexible and effective leave management system, when they choose an
ERP to implement.

The Human Resources Management module of AX 2012 provides a very effective absence management
functionality which is simple to setup and use and also enables organizations to have their employees to use
enterprise portal to submit and approve leave/absence requests.

Key features and Benefits:


Below few points represents the key features and benefits of Absence management functionality of AX
2012.

 Simple to configure and easy to use.


 Easily group absences and associate absence codes with them.
 Register past absences.
 Request for future absences.
 Setup validation rules for absence types such as, employee’s cannot avail more than 3 casual
leaves consecutively.
 Option for absence administrators to register absence for multiple workers acting like a delegate.
 Option for workers to request absences and approvers to approve them in the Enterprise portal,
when away from office/work.

Configuration and Absence management Process:


This section of the post will explain the necessary setup required to enable absence recording in AX 2012.

1. Absence Groups: The first step is to create Absence Groups. The absence groups are used to
group various absence types such Holidays, Sickness, Jury duty etc. Absence groups are
mandatory information for setting up absence codes.

 Navigate to HRM > Setup > Absence > Absence Groups.


 Create new record and enter absence group id and a description.
 Additionally enable Registration to enable absence recording in Time and Attendance process.

2. Absence Codes: The absences codes represents the reasons for the employee absences. These are are the
codes against which employees will register absences. Additionally several validation rules can be setup on
the absence codes as per requirements. Example of absence codes are Sick, Injury, Jury, Vacation, Leave
etc.

 Navigate to HRM > Setup > Absence > Absence Codes.


 Create new absence codes such as Jury, Sick, Illness etc.
 You can also setup validation rules which will enable validation such as an employee can take
only 3 days Funeral leave in a series etc..
3. Absence Setup: It is required sometimes to have multiple absence administrators, multiple absence
period frequencies, multiple working times(Hours, Days) for different groups of workers. The absence
setup allows to accomplish this. The Person in charge is the Absence administrator who will review and
approve/reject/cancel the absences.

 Navigate to HRM > Setup > Absence > Absence Setup.


 Create new records and setup Person In charge, Period unit( Month, Week, Month-Fixed and
No Period), and Working time.
 Absence setups are attached to workers to enable them for absence registrations.

4. Absence Setup for Worker: The Absence related parameters needs to be setup in the Worker details
form as shown in screen below.
We are now done with all the setups necessary for absence registrations. Let us not take quick look at how
employees can register absences. In AX, employees can register absences both in rich client and Enterprise
portal.

Recording Absences In AX Rich Client:


 Before employees can register absences in a given absence period, the absence journals must be
created by the absence administrators for that period. Absence journals can also be setup to be
created in batch.
 Navigate to HRM > Periodic > Absences > Create absence Journals to create the absence journals
for workers.
 To register absences, go to Home > Absences > Register Absences.
 Create new records and enter dates and absence code for each day.
 You can also create a absence series such as Vacation for 5 days/10 days etc..
 The Notes section will contain the notes from the absence registrar and absence approver if any.

 After creating the absences, Click Transfer to transfer the absences for approval. This will transfer
the absence details to the approver for review and approval.
 The Approver can go to Home > Absences > Approve Absence Requests.
 Approver can click Approve/Reject button to approve or reject the absences.

Using the absence management function, employees can also can request for future absences, and one
absence admin can register absences for multiple workers as a delegate. I will not explain those all here in
this post.
Recording Absences In AX 2012 Enterprise Portal:
Below is a quick video which I have prepared for the employee absence management in the enterprise
portal of AX 2012.

That is it for this post. Please contact me in case you have any queries with regards to absences
management in Microsoft Dynamics AX 2012.

Regards

Sandeep

Share this post

 inShare1

 Email


Like this:
Like

Accrual of Revenues for timesheet transactions is


happening on the timesheet posting date instead of
the timesheet transaction date in CU3
Posted on April 24, 2013 • Posted in Blog posts • Tagged Accrued revenue - Sales value, CU3, Hotfix, KB, Project Accounting,
Revenue accrual, Timsheets • Leave a comment

Hi Everyone,

Here is a quick information about a hotfix in the Project accounting area.

If you are using the CU3 version of AX 2012, you will notice that when you post employee timesheets, the
revenue accrual transactions will get posted on the timesheet posting date in the General ledger.

The revenue should actually get posted on the timesheet transaction date/ timesheet line date.
This is a bug in AX 2012, CU3 version and a hot fix is available by MS for this. You can download the
hotfix at the link below.

Hotfix for Revenue accrual date issue.

Regards

Sandeep

Share this post

 inShare1

 Email


Like this:
Like

New enhancements in Cash and Bank


Management Module of Microsoft Dynamics AX
2012 R2
Posted on April 20, 2013 • Posted in Blog posts, Dynamics AX 2012 • Tagged Bank Module, Cash and Bank Management
enhancements, IAT, Microsoft Dynamics AX 2012, NACHA • Leave a comment

Hello,

Today, I wanted to discuss few of the enhancements which have been introduced in AX 2012 in the Cash
and Bank Management module. Most of us must be already aware of these, but I just want to discuss these
in this forum as I found these enhancements very useful.
Follow the points below which describes the major enhancements.

1. Additional validation on the Bank account number and routing number(USA and Canadian Bank
accounts):

 Earlier in AX 2009, there was no real-time validation on the bank account number and routing
number fields and users could enter any random values into those fields.
 In AX 2012, new validation have been introduced where only valid bank account numbers and
routing numbers are accepted.
 These validation are triggered based on the “Address” which you select for the bank account. If
the Country of the address is USA, then the bank account number and routing number
validation are thrown accordingly. If the Country of the address is CANADA, then the bank
account number and routing number validation are thrown as per Canadian bank validation.
 To verify this go to Cash and Bank Management > Common > Bank Accounts.
 Select USA OPER bank account.
 Verify that routing numbers and bank account number fields accept random values with no
validation.
 Now specify an address for the bank under the Address fast tab and System will throw the
necessary validation errors/warning for the bank account number and routing number fields
when you save the record(In Conjunction with routing number type).
2. Bank Credit Limit check during vendor payments with bank as the offset:

 We can now define credit limits and credit limit tolerance thresholds for a bank account in AX
2012. These credit limit check gets triggered during making a vendor payment(with bank as
offset).
 System will check for the available balance in the bank account and will throw required tolerance
message as per the credit limit specified for the bank.
 We can define Credit limit related parameters in the Cash and Bank Management parameters
form.
 Define the credit limit for a selected bank account under General fast tab.

 Note that the available balance in the USSI OPER bank(CONTOSO demo data) is $72771678.46.
We will now record a vendor payment journal with an amount $7277378.46(Bank balance +
Credit Limit) and validate the journal. System will successfully validate the journal and say It is Ok.
 So system now allows you pay an amount which is within the (Available balance+Credit limit)
range of for the bank. If we try to make a payment for an amount $727737946, this will exceed
the credit limit and system will stop us from validating and posting it.

3. Inactivate a Bank account:

 In AX 2009, there was no way to deactivate or close a bank account from the Bank sub ledger.
The only way possible was to close the GL account(Cash account) related to the bank account.
 Now in AX 2012, we can inactivate bank accounts from the bank sub ledger. The steps below
explains this change.
 Go to Cash and Bank Management and Select a bank account.
 Expand the General fast tab.
 You can provide a from and To dates for which the back account will be active.
 Additionally you can set bank account status to 3 different options such as
Active for all transactions – Bank account is active and transactions are allowed.

Inactivate for new transactions – Bank account is inactive and no new transactions are allowed.

Inactivate for all transactions – Bank account is inactive and no transactions are allowed

4. Bank Account Statement Import and advanced reconciliation

 A much-needed functionality. AX 2012 now allows importing electronic bank statements and
then performing advanced reconciliations.
 To be able to use the back statement import and reconciliation functionality, you will need a
series of one time configurations. Below are the high level steps to do all required configurations .
 The first step is to configure the setup required for the electronic bank statement import which
includes the parameters, bank statement format, transaction code mapping and bank
reconciliation matching rules etc.
 The next step is to set up the required AIF inbound ports(Services) and import formats etc.

 After all the setups are done, finally we can import the electronic bank statements(XML/XSLT)
formats and perform advanced reconciliation.
In my next post, I will explain in detail the step by step procedure for setting up bank accounts for
statement import and advanced reconciliation procedure.

Till next time !! keep exploring.

Regards

Sandeep

Share this post

 inShare1

 Email


Like this:
Like
Workflow Approvals via E-Mail in Microsoft
Dynamics AX 2012 R2
Posted on March 21, 2013 • Posted in Blog posts • Tagged AX 2012, AX 2012 R2, E-Mail Approval of workflow documents,
Workflows • 4 Comments

!! Microsoft Dynamics AX has only been getting Stronger!!


Thanks to Microsoft Dynamics AX 2012 R2 for its huge range of new exciting enhancements to the
functionalities and capabilities.

Most of us have always been looking for the Microsoft dynamics AX workflows to have direct integration
with the outlook email engine. I have come across many situations where customers wanted to have direct
approval or rejection options integrated within the emails which they receive from Dynamics AX workflow
engine regarding documents pending for their reviews in AX.

The R2 release of Microsoft Dynamics AX 2012 makes it possible now.

Read the the white paper at the Microsoft Download Center to get detailed steps and Procedure.

Regards

Sandeep

Share this post

 inShare5

 Email


Like this:
Like

Project Invoice Proposal Approvals in Microsoft


Dynamics AX 2012 R2
Posted on March 19, 2013 • Posted in Blog posts • Tagged AX 2012, Invoice proposal approval, Invoice proposals, Project
Invoicing, Project Management and Accounting, PSA, R2, Workflows • 4 Comments

Hello Everyone,

Here is a quick post on an update on the approval process of project invoice proposals in Microsoft
Dynamics AX 2012 R2 release.

In the AX 2012 feature pack release(Until Cumulative Update 4), the project invoice proposals were
always forced or required to go through the workflow for approval.

I came across many situations where customers did not want their invoice proposals to go through the
workflow approval process as it is not required as per their business policies and rather have them posted
directly. But in AX 2012 feature pack release, there was no way to have the invoice proposals not go
through workflow approval.

Microsoft has introduced a design change in AX 2012 R2 release, by which we can now have project
invoice proposals not routed through the review and approval process in workflow.

If you unmark the “Enable processing invoice proposals in workflow checkbox”, then you can directly
post the invoice proposals without having it to go through the workflow process.
Pretty good and much needed change !!

Regards

Sandeep

Share this post

 inShare2

 Email


Like this:
Like
Using Advanced Rules for Account structures in
Microsoft Dynamics AX 2012
Posted on March 9, 2013 • Posted in Blog posts • Tagged 10 segments, Account structures, Advanced rules, Financial
dimensions • Leave a comment

Hope everyone is doing well.

Using financial dimensions and controlling them appropriately in general ledger transactions is always one
of the key requirements of ERP implementations.

All of us must be aware that creating and managing many financial dimensions had restrictions and was not
as convenient as it is in AX 2012.AX 2012 now allows to create unlimited number of financial dimensions
in the GL > Setup > Financial dimensions form. But in the account structures, there is a limitation which
allows only “10 dimension segments” to be configured with the main account node.

In most scenarios, the requirement of having financial dimensions will not exceed 10, but there can be
cases where business may need to have more than 10 financial dimensions to be used. In such scenarios,we
can make use of the “Advanced rules” in the account structures.

Now let us take a look at the steps to configure the “Advanced rules” for an account structure and then
look at how it can enable the 11th dimension.

 For this post, I have configured the initial 10 dimension segments already in CONTOSO as shown
in screen above.
 With only this 10 dimension segments, system will allow to record only 10 dimensions in the
transactions as can be seen in screen below.
 Now let us configure advanced rules for this account structure. Prior to setting up advanced rules,
we need to create the advanced rule structures under GL > Setup > Chart of accounts > Advanced
rule structures.
 Go to GL > Setup > Chart of accounts > Advanced rule structures and click New and key in a name
and description.

 Let us say we will add the Worker as the 11th dimension in this case. Click Add segment and
Select worker.
 Note that you can also configure the advanced rules have several combinations just like the
segments in the main account structure. But in this case I will not configure it.

 In this case we will just activate the advanced rule structure. Click Activate button.
 Now, let us go back to the Configure account structure form and set up advanced rules for one
the account structures. Go to GL > Setup > COA > Configure account structres.
 Select the Account structure and click Advanced rule button.

 Click New and key in Rule ID and name and then click OK button.
 Note here that you can also configure the advanced rules only for specific values/conditions for
the existing 10 dimensions by adding necessary filters. I will not demonstrate the steps here in
this post.

 Click Add and select the advanced rule structure that we created in step above.
 And we are done. Not let us activate the account structure and see in the transactions that we
can have more than 10 dimension segments.
 Go to GL > Journals > General Journal and create a new journal.
Any questions on this..Most welcome. Till next time..
Financial Reporting – Even better with Microsoft Dynamics AX 2012, and
now available in 36 languages

AX PMG

AX PMG

4,032 Points 3 2 0
Recent Achievements
New Blog Commentator Blog Conversation Starter Blogger II
View Profile
22 Jul 2013 10:22 AM

 Comments 3

We’ve recently added several valuable new capabilities to Management Reporter, our
financial reporting solution, and have increased the translations to a total of 36 languages. If
you’re not familiar with Management Reporter, now would be a great time to check it out!

For those in the financial community that do reporting and performance management every
day, you’ll appreciate the updated financial reporting capabilities included in Microsoft
Dynamics AX 2012 – Management Reporter. In fact, with the latest release, we’ve added
Management Reporter to the General Ledger and Budget Planning menus in Microsoft
Dynamics AX 2012, making it easier for you to access financial reports created with
Management Reporter. (The financial statement options that you may have used in prior
versions are still available with a configuration option, if you need them.)

Management Reporter is used to create statutory and operational reports based upon your
general ledger data. It empowers your managers by providing real-time insights into
organizational results; they can take action and work to meet overall corporate goals.

Here are some of the ways Management Reporter can help solve your financial reporting
needs:
 No need to create a connection to Microsoft Dynamics AX 2012 General Ledger
(GL) – Management Reporter is directly integrated with your GL
 Build custom reports based on Microsoft Dynamics AX ledger accounts and
dimensions – with the ability to slice general ledger information into Rows, Columns,
or Hierarchies to get insight into actionable information. Robust formatting helps
highlight key areas on a report and create boardroom quality reports.

With Management Reporter, you can create financial reports based upon the following data
from Microsoft Dynamics AX 2012:

o Accounts o Budget Data

o Financial Dimensions o Cash Flow Forecasts

o Calendars/Fiscal Periods o Budget Reservations

o Posting Layers o Adjustments

o Account Categories o Currencies

o Organizational Hierarchies o Totaling Accounts

o Actual GL Data

 Financial data mart for optimized performance -- Management Reporter data mart
holds the necessary financial data needed for financial reporting. Data from Microsoft
Dynamics AX 2012 is continuously moved to the data mart. The data mart is
optimized for financial reporting and, with proper report design, helps increase
performance of financial report generation.
 Drill-down to transaction detail for quick audits -- Generate summary-level reports
with the capability to drill down to account-level and transaction-level details without
having to generate separate reports. Supports drill from account and budget balances
on a report to related information in Microsoft Dynamics AX if more information on a
specific transaction is needed.
 Consolidate the way you need to see it – Create consolidated financial reports across
companies or business units; interoperate with Microsoft Excel® to support importing
consolidation data from other sources, and translate into an unlimited number of
reporting currencies without having to run the consolidation process in Microsoft
Dynamics AX 2012. In fact, we have so much to share about consolidations with
Management Reporter, we wrote a 7-part series about it.
 Schedule delivery of new reports to those who need them - Improve
communication across the organization by distributing reports to multiple locations,
including Microsoft SharePoint® or any network location, and schedule reports for
generation on a periodic basis.
 Interactive, intuitive web-based report viewing -- Drive decisions from the report
data that’s delivered in an interactive web based report viewing experience.
Who can use Management Reporter?

Management Reporter 2012 CU6 is translated for all supported Microsoft Dynamics AX
countries. For details on product availability, please refer to the product availability,
translation and localization guide located here.

How do you get Management Reporter?

Depending upon which version of Microsoft Dynamics AX you’re using, you may already
have registration keys for Management Reporter.

 Microsoft Dynamics AX 2012 – Microsoft Dynamics AX 2012 includes registration


keys for Management Reporter. For details on how to license Microsoft Management
Reporter, refer to the Microsoft Dynamics AX 2012 pricing guide.
 Microsoft Dynamics AX 2009 – verify in CustomerSource if you have Management
Reporter registration keys. If you need to purchase Management Reporter registration
keys, please contact your Microsoft Dynamics AX partner.

Want to learn more?

If you want to learn more about Management Reporter, follow these links:

 Management Reporter feature videos – a list of short videos that showcase the power
of Management Reporter
 Management Reporter team blog – a blog dedicated to providing the most up-to-date
information on Management Reporter

We plan to release our next cumulative update for Management Reporter soon, and we’ll
share details of the new features once available, in another blog post.

Char Gust

Management Reporter Lead Program Manager


Top 10 New and Improved Features of Project
Accounting Module in Microsoft Dynamics AX
2012

Email | Print



 10
inShare



 10
inShare

With all the buzz and anticipation around the launch of Microsoft Dynamics AX 2012 later
on this year, it’s a good time to review the new functionality of the Project Accounting
module (to be called Project Management Accounting in AX 2012). Why focus on Project
Accounting module in particular? Project Accounting supports a wide range of functions
and empowers companies to meet the challenges of growth, while providing the
necessary business insight for success in the increasingly competitive global
environment.

Here are the top 10 new and improved features of the module:

1. Project timesheets – It seems that improving the user experience has been the focus
here. The timesheet comment functionality and the start/end dates are much more user-
friendly in AX 2012. Most importantly, users will be able to create and manage favorites
in Enterprise Portal allowing them to create timesheets in much quicker fashion,
improving both user experience and productivity.

2. Advanced funding – this one is an attention-grabber! As a much requested feature,


advanced funding in AX 2012 allows project funding to be shared amongst any number
of internal or external parties, aligning your ERP configuration even closer with your
actual processes. Users will be able to set up funding limits for one or more customers
per category, category group or transaction type.

3. Collaboration workspace – for all of the collaboration enthusiasts, the new version
brings even more excitement with the ability to create and add collaboration workspace
in projects, campaigns and opportunities where project team members can quickly
organize and share information within AX, making it the one-stop-shop for information
while increasing the team’s efficiency and organization levels. The new options can be
set up and default the collaboration work spaces for users.

4. Management of projects in Enterprise Portal – AX 2012 puts an end to the time


and expense only entries in EP, allowing Project Managers to create and manage the
entire projects in EP. Workers can enter daily working hours in a much improved manner
and project managers can approve it directly in EP, which significantly speeds up the
process and increases worker productivity.

5. Beginning balances – this is an improvement with a huge impact. In AX 2012, users


will be able to enter a beginning balance for a project which will help in transferring
projects to Microsoft Dynamics AX 2012 from legacy project management systems
without affecting the general ledger. Let’s say you have been tracking a project in an
outside application but managing costs and revenue in AX. You will now be able to
transfer the project to AX, specify a beginning balance and then track all the information
in one place.

6. Project revenue from free text invoice - AX 2012 makes it possible to track
revenues which are billed though free text invoicing. This was a significant requirement
missing in AX 2009.

7. Transaction adjustments - this feature will make correction of wrong project entries
easier, allowing adjustments even after invoicing. Adjustment dates can be used as
project dates for adjustment transactions (as opposed to transaction dates only). The
relationship between the original, reversed, and the replacing transaction can be well
traced now with information of what exactly the user adjusted.

8. Project budgeting – Microsoft has taken budgeting to a new level with major
enhancements in this area in the AX 2012 version. Project budgeting will be available at
the activity level. Project budget revisions can be created at various levels of the project
and can be submitted for review and approval, which once approved would trigger an
immediate change to the overall project budget. A complete history or audit trial of the
proposed, original, accepted (approved), and rejected budget is available for review at
any point of time. Original budget can be created to define a budget at various levels in
the project hierarchy and it can be submitted for approval. It can also be allocated over a
period of time. The project financial inquiry and the project financial status reports now
presents details of the project budget also. If you are working on a multi-year project, you
can carry forward project budget at the end of the year to the future year and make
necessary changes to the general ledger accounts associated with them

9. Item charges/costs in PO, SO and invoice lines will now be recognized in


projects. Any taxes for the item charges will now be going to an expense account and
item charges will now be recorded in project budgets and commitments. This is an
important functionality which was not available in Dynamics AX 2009.
10. Progress billing, estimates and revenue recognition – the introduction of these
features addresses the critical issue of ERP migration. When migrating from one ERP
system to another, data migration is a serious issue. Bringing in the existing data into the
new system is where all the hurdles arise. For example, ensuring that revenue continues
to be recognized for the fixed price projects that are already underway. Since revenue
recognition depends on the completion % of the project, the data must be migrated so
that both % of work completed (actual cost) and the remaining work (cost to complete)
are reflected in proper accounts.

AX 2012 also promises to give a significantly improved UI experience across the


modules with the introduction of new form controls such as action panes, fact boxes and
fast tabs, allowing users to access critical project data in a single form without having to
navigate to the related forms.

By Solugenix Corporation
Creating Fixed asset in Dynamics AX 2012 using
X++

Fixed assets are items of value, such as buildings, vehicles, land, and equipment, which are
owned by an individual or corporation. You can set up and enter acquisition information for
fixed asset records, and then manage fixed assets by depreciating them and setting a
capitalization threshold to determine depreciation. You can calculate adjustments to the fixed
assets, and also dispose of them.

This post contains code which creates Fixed Assets using X++.

protected AssetId createFixedAsset(str fixedAssetName)


{

AssetTable assetTable;
AssetBook assetBook;
AssetDepBook assetDepBook;
AssetGroup assetGroup;
AssetDepreciationProfile assetDepProfile;
NumberSeq assetIdNumberSeq;
NumberSequenceTable numberSequenceTable;
NumberSequenceReference numberSequenceReference;

assetGroup = AssetGroup::find(“VEHC”); // Asset group to which Asset will belong

// It is only possible create fixed assets when the number sequence is marked as
continuous
select Continuous from numberSequenceTable
join AutoNumberSequenceTable from assetGroup where
assetGroup.GroupId == “VEHC” &&
numberSequenceTable.RecId == assetGroup.AutoNumberSequenceTable;

if (numberSequenceTable.Continuous == NoYes::No)
{

if (assetGroup.AutoNumberSequenceTable)

throw error(“@SYS116327″);

else
{

if (AssetParameters::find().AutoNumber)
{
numberSequenceReference = AssetParameters::numRefAssetId();
select Continuous from numberSequenceTable where
numberSequenceTable.RecId == numberSequenceReference.NumberSequenceId;

if (numberSequenceTable.Continuous == NoYes::No)

throw error(“@SYS116327″);

}
else
{

throw error(“@SYS122736″);

ttsbegin; //Save asset record.

assetTable.selectForUpdate(true);
assetTable.clear();
assetTable.AssetGroup = assetGroup.GroupId; // Assign Asset Group Id

assetTable.AssetType = AssetType::Intangible; // Type of Asset Tangible, InTangible,


Financial, GoodWill etc

assetTable.Name = fixedAssetName; // Asset Name


assetTable.Quantity = 1; // Quantity of Asset
assetTable.PropertyType = AssetPropertyType::FixedAsset; // Asset property type
FixedAsset, ContinuingProperty etc

assetIdNumberSeq = assetTable.initAssetNumberSeq();

if (assetIdNumberSeq)
{

assetTable.AssetId = assetIdNumberSeq.num();
assetIdNumberSeq.used();

}
assetTable.insert(); // Create Fixed Asset

update_recordset assetBook setting Depreciation = NoYes::Yes


where assetBook.AssetId == assetTable.AssetId; // Marking as Depreciating asset

update_recordset assetDepBook setting Depreciation = NoYes::Yes


where assetDepBook.AssetId == assetTable.AssetId; // Marking as Depreciating asset
ttscommit;

return assetTable.AssetId;

public static void main(Args _args)


{

FixedAsset fixAsset;
fixAsset = new FixedAsset();
fixAsset.createFixedAsset(“BMW 525i”);

}
Invoicing in AX 2012 Project Accounting
By Merrie Cosby in Dynamics AX, Projects on Friday, October 14th, 2011

1) Project / Sub-Projects

Projects and associated sub-projects can be used from internal tracking of costs associated with sales
to a contract and tracking of incurred costs / actuals.

The following is an example of a project that includes multiple project types within the same parent
project.

-1: Internal project, not billable, used to track costs during the sales process.
-2: Fixed prices project: Billable based on invoice billing schedule OR using funding sources
/ rules or billing rules.
-2-2: Time & material project: Transaction lines (hours, material, expenses, or fees) billable
based on line property setup.

2) Progress Billing / Invoicing Setup / Example

a) Invoicing (Standard AX):

i) Simple Process Billing Example – On Account Billing Transactions


b) Managing On Account Transactions:

i) Managed Manually (See above example)

ii) Periodic > Search

iii) Periodic > Resulting Search On Account Transactions > Review and Update to Invoice Proposal
c) Invoice Proposals are revised (if required) and select > post invoices > customer invoices
generated.

3) Funding Sources
Funding sources allow for more than one party to share funding responsibilities. The funding sources
are identified against a project contract and funding rules applies to manage the criteria associated
with the rule(s). Funding limits and funding rules can also be created to assist in managing the
funding sources.

Note: Funding sources can be a customer, organization (internal), or a grant.

a) Funding Limits: Assists in managing the funding limits of the various funding sources
associated with the project / sub-project.

b) Funding Rules: Contain the criteria for how to allocate charges to different funding sources.

i) Each funding rule consists of a combination of one or more of the following values:

 Priority
 Project
 Activity
 Transaction Type
 Category Group
 Category
 Worker
 Item

ii) Note: Priority & transaction type required for a funding rule. All others, optional.

iii) Allocation functionality can be used to distribute the funding.


4) Project Accounting Add-In (Not Std AX)

a) Customer Advances

i) Handles customer advances as a specific amount or a percentage of the total revenue for the
project. Advance is deducted from invoices as the project progresses.

ii) Managed through invoice proposals.

b) Billing Rules
i) Billing Rule Lines Types:

Milestone: Create an invoice for the full amount of a milestone when a project milestone is
reached.

An assembly is scheduled with milestones identified for proof of principle study, engineering
completion, material purchases, and assembly completion. Rules are setup where at each activity
completion / milestone, an invoice proposal is generated.

Progress: Create an invoice when a predetermined percentage of work is completed.

Budgets are setup and categories are identified to track budget vs. actual and % of completion.
Based on the rules, the invoice is generated. This is different than standard AX. Standard AX allows
for progress billings to be entered based on prospective billing dates and management and invoicing
against these dates.

Time and material: Create an invoice for unbilled hours and materials as specified in the
contract.

Hours and material are charged as incurred and agreed to by the customer. These charges are then
invoiced as agreed upon with the customer, i.e. at the end of each month.

Fee: Create an invoice for administrative fees or other costs as specified in the contract.

An additional fee is charged for every hour posted / chargeable against a time and material project.
This fee is then invoiced as agreed upon.
Unit of delivery: Create an invoice when a unit of delivery is completed as specified in the
contract.

Quantities of ten (10) assemblies are ordered with staggered deliveries.

Percentage of Completion: Create an invoice based on percentage of completion.

(a) Agree to a $100,000 contract to be paid in 25% increments based on completion of a phase as
defined.

5) Monitor / Managing Invoice Control

a) Report:
About Merrie Cosby
Merrie joined I.B.I.S., Inc. in 2009 with an acquisition of another AX Partner. Merrie has over 12 years
of ERP system implementation experience. For the last 4 years she has worked solely with client
Microsoft Dynamics AX implementations. Previously, Merrie had over 25 years of experience in the
manufacturing industry with 10 of those years directly related to the role of Project Manager for two
ERP implementations. Following the implementations, she became the internal expert in support of all
departments and processes as well as supporting upper management needs. In addition to her project
management experience she became an expert in Dynamics AX’s Project Accounting module as well
as the functionality and options that IEM (Industrial Equipment Manufacturing) adds to a solution.
Invoicing in AX 2012 Project Accounting
By Merrie Cosby in Dynamics AX, Projects on Friday, October 14th, 2011

1) Project / Sub-Projects

Projects and associated sub-projects can be used from internal tracking of costs associated with sales
to a contract and tracking of incurred costs / actuals.

The following is an example of a project that includes multiple project types within the same parent
project.

-1: Internal project, not billable, used to track costs during the sales process.
-2: Fixed prices project: Billable based on invoice billing schedule OR using funding sources
/ rules or billing rules.
-2-2: Time & material project: Transaction lines (hours, material, expenses, or fees) billable
based on line property setup.

2) Progress Billing / Invoicing Setup / Example

a) Invoicing (Standard AX):

i) Simple Process Billing Example – On Account Billing Transactions


b) Managing On Account Transactions:

i) Managed Manually (See above example)

ii) Periodic > Search

iii) Periodic > Resulting Search On Account Transactions > Review and Update to Invoice Proposal
c) Invoice Proposals are revised (if required) and select > post invoices > customer invoices
generated.

3) Funding Sources
Funding sources allow for more than one party to share funding responsibilities. The funding sources
are identified against a project contract and funding rules applies to manage the criteria associated
with the rule(s). Funding limits and funding rules can also be created to assist in managing the
funding sources.

Note: Funding sources can be a customer, organization (internal), or a grant.

a) Funding Limits: Assists in managing the funding limits of the various funding sources
associated with the project / sub-project.

b) Funding Rules: Contain the criteria for how to allocate charges to different funding sources.

i) Each funding rule consists of a combination of one or more of the following values:

 Priority
 Project
 Activity
 Transaction Type
 Category Group
 Category
 Worker
 Item

ii) Note: Priority & transaction type required for a funding rule. All others, optional.

iii) Allocation functionality can be used to distribute the funding.


4) Project Accounting Add-In (Not Std AX)

a) Customer Advances

i) Handles customer advances as a specific amount or a percentage of the total revenue for the
project. Advance is deducted from invoices as the project progresses.

ii) Managed through invoice proposals.

b) Billing Rules
i) Billing Rule Lines Types:

Milestone: Create an invoice for the full amount of a milestone when a project milestone is
reached.

An assembly is scheduled with milestones identified for proof of principle study, engineering
completion, material purchases, and assembly completion. Rules are setup where at each activity
completion / milestone, an invoice proposal is generated.

Progress: Create an invoice when a predetermined percentage of work is completed.

Budgets are setup and categories are identified to track budget vs. actual and % of completion.
Based on the rules, the invoice is generated. This is different than standard AX. Standard AX allows
for progress billings to be entered based on prospective billing dates and management and invoicing
against these dates.

Time and material: Create an invoice for unbilled hours and materials as specified in the
contract.

Hours and material are charged as incurred and agreed to by the customer. These charges are then
invoiced as agreed upon with the customer, i.e. at the end of each month.

Fee: Create an invoice for administrative fees or other costs as specified in the contract.

An additional fee is charged for every hour posted / chargeable against a time and material project.
This fee is then invoiced as agreed upon.
Unit of delivery: Create an invoice when a unit of delivery is completed as specified in the
contract.

Quantities of ten (10) assemblies are ordered with staggered deliveries.

Percentage of Completion: Create an invoice based on percentage of completion.

(a) Agree to a $100,000 contract to be paid in 25% increments based on completion of a phase as
defined.

5) Monitor / Managing Invoice Control

a) Report:
About Merrie Cosby
Merrie joined I.B.I.S., Inc. in 2009 with an acquisition of another AX Partner. Merrie has over 12 years
of ERP system implementation experience. For the last 4 years she has worked solely with client
Microsoft Dynamics AX implementations. Previously, Merrie had over 25 years of experience in the
manufacturing industry with 10 of those years directly related to the role of Project Manager for two
ERP implementations. Following the implementations, she became the internal expert in support of all
departments and processes as well as supporting upper management needs. In addition to her project
management experience she became an expert in Dynamics AX’s Project Accounting module as well
as the functionality and options that IEM (Industrial Equipment Manufacturing) adds to a solution.
Getting Started with AX 2012: Edit, Reverse, Split a
Pick
By Vinh Pham in Dynamics AX, Getting Started with AX, Trade and Logistics on Tuesday, October
8th, 2013

Hello All. Last time I wrote an article about the Item Picking Registration of Serialized Inventory and
how it can be highly useful to a company and its customer satisfaction by keeping track of its products
through assigning batch and serial numbers for the products. Now I will demonstrate how to Edit,
Reverse, and Split a Pick. There are a few reasons why an employee of a company would need to
perform this task. An example of editing picks: There is a company that sells serial number controlled
items, an employee of that company makes a sales order and picks a product that will be shipped to
the customer. The employee mishandles the item and accidentally breaks it. He now has to pick
another item and inform the Warehouse Manager to update the system with the new serial number
that will be shipped instead. An example of splitting a pick is when items on a sales order line must be
picked from different warehouses. These amazingly quick and useful tasks in Microsoft Dynamics AX
2012 will easily update your system and help you continue to keep accurate track of your products and
which customers they are sold. In the steps below, I will show how to Edit, Reverse, and Split a Pick:
(Enjoy!)

Select the address CEU -> Sales and marketing from the Address bar by clicking the
navigation path arrows.
Click Area Page node: Sales and marketing -> Common -> Sales orders -> All sales orders.

Form name: Sales orders

Click the Sales order -> New -> Sales order button.

Form name: Create sales order


Change Customer account from ’2022′.
Click the OK button.

Form name: Sales order

Change Item number to ’1706′.


Change Product name to ‘High-Definition DVD Player – Batch Controlled’.
Change Name to ‘Players’.
Change Quantity to ’1.00′.
Change Unit to ‘ea’.
Change Site to ’2′.
Change Warehouse to ’21′.
Change Unit price to ’200.00′.
Change Net amount to ’200.00′.
Change Same batch selection to ‘No’.
Change Quantity from ’1.00′ to ’4.00′.
Change Net amount from ’200.00′ to ’800.00′.
Click the Update line -> Pick menu button.

Form name: Pick


Click the Add picking list update button.
Change Batch number to ’000481′.
Click the Register all button.
Change Batch number from ’000481′ to ‘ ‘.
Click the Close toolbar button.
Close the Pick form.
Click the Update line -> Pick menu button.

Form name: Pick

Click the Add picking list update button.


Click the Register all button.
Click the Add picking list update button.
Change Batch number to ’000485′.
Click the Register all button.
Change Batch number from ’000485′ to ‘ ‘.
Click the Close toolbar button.
Close the Pick form.
Click the Inventory -> Transactions menu button.

Form name: Inventory transactions


Click the Close toolbar button.
Close the Inventory transactions form.
Click the Update line -> Pick menu button.

Form name: Pick

Click the Add picking list update button.


Click the Register all button.
Click the Split button.

Form name: Split transaction


Change Split quantity from ‘-1.00′ to ‘-2.00′.
Click the OK button.
Make sure the selections are changed in table Inventory transactions to:

Form name: Batch selection

Click the Add picking list update button.


Make sure the selection is changed in table Registration/picking to:

Form name: Batch split selection

Change Batch number to ’000485′.


Click the Register all button.
Change Batch number from ’000485′ to ‘ ‘.
Click the Close toolbar button.
Close the Pick form.
Click the Inventory -> Transactions menu button.
Click the Close toolbar button.
Close the Inventory transactions form.
Click the Close toolbar button.
Close the Sales order form.
Close the Related information form.

Now you know how to Edit, Reverse, and Split a Pick. Hopefully this will help your company keep
accurate track of its products: where they came from and where they are sold.
Enhancements to Project Management & Accounting
in Dynamics AX 2012
By Merrie Cosby in Dynamics AX, Projects, Uncategorized on Thursday, April 5th, 2012

Project Management and Accounting has more functionality than just accounting! It is used for
managing a project (with or without costs) or scheduling resources (across companies if required).

So…what can new or enhanced functionality in AX 2012 Project Management and Accounting do for
you?

Plan & schedule resources easier


Integration with Project Server improved
Procure services without item creation
Apply indirect costs associated w/labor
Post timesheets across multiple projects / legal entities

Note: The following includes slide taken from the recent Convergence outlining changes to Project
Management and Accounting.

The following touches on some of these enhancements implemented in AX 2012.

Project Planning

WBS (Work breakdown structure) template

AX 2012 provides additional functionality through the use of Work Breakdown Structures which allows
for establishing activities, determining times / durations, and assigning resources as needed. The new
functionality in the resources and the ability to determine the best resource based on a skill,
competence, etc. enables the ability of the project manager to assign the correct resource for the
correct task. Additionally, the usage / availability of a resource can be easily determined to aid in the
management of the resources.

Identify tasks
Schedule
Activity requirements / resources
Forecast / budget
Apply WBS to Project using a standard WBS template
Search for available resource > assign to the WBS task
Can also look from the resource and schedule

Project budget
Setup for using budgeting within a project is done on the Budget and Forecast fast
tab. The following are required setup:
 Budget control ON
 What aspects are to be controlled?
 When actual exceeds budget, what do you want to do…stop / allow / warn?
 Create: 1) enter by hand , 2) forecast model, 3) project transactions (actuals)
 Future R2 release enhancements will keep forecasts and budgets in sync,
currently a manual process.
 Budget approval / workflow
 Project Server Integration (Whitepaper available for install / integration setup)
 Previously 2-way sync, now single master – decide whether to
manage in AX OR in the Project Server
 Improved resource assignment integration
 Support project hierarchy (project /subproject)
 Can select specific project to Project > Integration fast tab. Also
applies to selection against resources (HR > Workers > Project Mgt
tab > setup > Make worker…..)
 System admin > integration log

Project Execution

Time & Expense Management

Timesheet favorites can be created to reduce project selection and data entry.
Multi-week timesheets. If period reporting is more than 1 week, can enter in one timesheet –
based on period setup.
Cross-company timesheets & expense entry (previously separate timesheet / had to log into
company to enter timesheet).
Setup for cross-company is required:
 PM > setup > prices > transfer price….id borrowing legal entity
Enhancements
 When enter timesheet, if multi-company is setup, the user would then decide
the legal entity (the employees ‘home’ entity as well as the borrowing entity).
 The project list will only show those projects where the resource is assigned,
within the entity.
 Categories are also pre-filtered based on legal entity.
 Line property is entity specific.
 Ledger posting setup > additional option for intercompany costs added

Expense requisitions have also be added for approvals.


Project Distributions enables the ability to easily disperse costs, as required, across multiple
projects / activities as required.
Procurement – in 2009 had to be previously decided and either a service type item utilized or
an item created.
Categories used, specific item not required.
Procurement category selection includes quantity, unit, and price.
Future R2 enhancement will allow for the budget to be affected without have to wait
for an invoice posting.
Analytics

Access externally from AX thru OLAP cubes


Interface to Excel continues to improve and provide additional options for data analysis
From analysis services > Data connect wizard aids in integration with Excel
Select cube
 Can reset cube automatically, if required
Pick up actual costs > by project > + by category
Can go across legal entities
The following is an

example:

About Merrie Cosby


Estimate Projects and Eliminations in Dynamics AX
2009
By Merrie Cosby in Dynamics AX, Projects on Wednesday, March 17th, 2010

Revenue recognition against an AX project is accomplished through the setup of an estimate project
associated with the project. Sub-projects can also have separate estimate projects created and
associated with them to allow for the estimation and elimination at various levels of a project.
Standard revenue recognition methods (completed contract or percentage of completion) still applies
to the estimate project regardless of the level within the project.

When using project templates in the creation of a new project, if the template is setup with estimate
projects (set at applicable levels), the new project will also be created with estimate projects setup on
the same levels as the originating template. Adjustments can be made on the new project once
created.
Applying Indirect / Burden Costs to Project AX 2012
Labor Actuals
By Merrie Cosby in Dynamics AX, Projects on Thursday, September 29th, 2011

Functionality is now available in Dynamics AX 2012 Project Accounting to calculate and posts indirect
costs to a project. This allows for indirect costs such as rent, office supplies, telephone charges,
computer supplies, etc. to be allocated across multiple projects. It also provides the ability to post
indirect costs / burden rate, against labor incurred on a project.

This document is providing an overview of the setup required to allow the process of posting indirect
costs against incurred labor on a project.

Category(s) Setup

Create a unique Category Group.


Create the category ID in the Shared Categories.

i. ‘Can be used in Project’ should be checked ON.

Create a unique project category(s) as required.

i. Check ON ‘Indirect cost component’.


Note: Complete the category setup as normal. If the Category ID does not exist in the Shared
Categories, an error will occur.

Indirect Cost Component Setup (Accounting Add-In Required)

Setup the indirect cost component(s)

Indirect Cost Component

Indirect cost component: Enter identifier


Name: Enter name / description
Category: Select Project Category

Indirect Cost Component Group

Indirect cost component group: Enter identifier


Indirect component group name: Enter name / description
Select Assign indirect cost com….
Create a new record. The following setup will post indirect costs to labor.
 Calculate method = Percent. Note: Compounding rules ONLY available if set
to Percent.
 Cost rate: Applying indirect costs of 10% to identified labor transactions. The
specific labor transaction(s) is identified in the Indirect Cost Component
Groups.
 Select Compounding Rules > Cost > Move the Base amount as a selected
indirect cost component

Indirect Cost Component Groups

Complete the form with the applicable information.

Viewing costs on a project:

Locate the project > Control > Cost Control > Select options > Calculate
Click Transactions > Hour > select transaction to view > click the General tabC 9
About Merrie Cosby
Project Item Requirements for Purchase Orders in
Dynamics AX2009
By Merrie Cosby in Dynamics AX, Projects on Tuesday, March 2nd, 2010

Identifying the requirement for items against a project or sub-project can be accomplished in more
than one way directly on the level(s) required. Creation of these item requirements is critical in
identifying demand and easily create purchase orders to provide the supply. In addition to the ability
to add individual items, as required, a bill of material or a parts list can also be exploded to a project /
sub-project’s item requirements. When these items are identified on the line(s), a sales order is
created behind the scenes. If you look at the sales order form, these appear as type ‘item
requirement’.

AX functionality then allows the creation of purchase orders directly from these item requirements.
The items listed, available to release on a purchase order, is dependent on how the item requirements
were created. If the items were created from a quotation, only one sales order was created. All items
on the same ‘sales order’ are then listed for selection of creating a purchase order. However, if lines
are created manually on the item requirements, a new sales order will be created, for each line
entered) and these items will appear on a separate purchase order for selection.

The way around this is to manually add the item(s) to the item requirement ‘sales order’ which will in
turn make the selection for the creation of a purchase order visually on the same list.

Keys to remember:

1) Projects created a sales order (type item requirement) against the item requirement(s) of the
project. This sales order creates the demand.

2) At the point of creating a purchase order against the item requirements, AX is actually creating
purchase orders against the sales order.)

Project Item Requirements for Purchase Orders in


Dynamics AX2009
By Merrie Cosby in Dynamics AX, Projects on Tuesday, March 2nd, 2010

Identifying the requirement for items against a project or sub-project can be accomplished in more
than one way directly on the level(s) required. Creation of these item requirements is critical in
identifying demand and easily create purchase orders to provide the supply. In addition to the ability
to add individual items, as required, a bill of material or a parts list can also be exploded to a project /
sub-project’s item requirements. When these items are identified on the line(s), a sales order is
created behind the scenes. If you look at the sales order form, these appear as type ‘item
requirement’.

AX functionality then allows the creation of purchase orders directly from these item requirements.
The items listed, available to release on a purchase order, is dependent on how the item requirements
were created. If the items were created from a quotation, only one sales order was created. All items
on the same ‘sales order’ are then listed for selection of creating a purchase order. However, if lines
are created manually on the item requirements, a new sales order will be created, for each line
entered) and these items will appear on a separate purchase order for selection.

The way around this is to manually add the item(s) to the item requirement ‘sales order’ which will in
turn make the selection for the creation of a purchase order visually on the same list.

Keys to remember:

1) Projects created a sales order (type item requirement) against the item requirement(s) of the
project. This sales order creates the demand.

2) At the point of creating a purchase order against the item requirements, AX is actually creating
purchase orders against the sales order.)
AX2012 – New Features to Settlements in Accounts
Receivable
By Barry Brown in Dynamics AX, Financial on Friday, November 11th, 2011

As promised in the first entry on AR improvements posted on November 1 (Unbearably Exciting New
Features Accounts Receivable AX2012), the excitement continues here. If you came back for this,
thank you. I hope it is not for soporific purposes.

AX2012 adds two new parameters allowing calculation of cash discounts on partial payments and
credit notes.

Follow the path – Accounts Receivable>Setup>Accounts Receivable Parameters>Settlement

Okay, you got me! This isn’t really new as AX2009 benefited with this 2012 improvement in rollup 5. If
you have installed the rollup in AX2009, your settlement tab might look something like this

Calculate cash discounts for partial payments

Select this check box to allow discounts to be automatically calculated for partial payments.

If this check box is selected and a user changes the value in the Amount to settle field in the
Open transaction editing form, the discount is automatically calculated and is displayed as
the default entry in the Discount amount to take field.
If this check box is not selected and a user changes the value in the Amount to settle field in
the Open transaction editing form, the default entry in the Discount amount to take field is 0
(zero).

The user selection in this check box is used with the Normal option in the Use cash discount field in
the Open transaction editing form. If this check box is selected, the discount is taken when the Normal
option is used. If Always in the Use cash discount field is selected, the cash discount is always taken
regardless of whether the Calculate cash discounts for partial payments check box are selected. If
Never in the Use cash discount field is the selection, the cash discount is never taken regardless of
whether the Calculate cash discounts for partial payments check box are selected
Calculate cash discounts for credit notes

A credit note is a transaction with a negative value in the Amount field in the Free text invoice form,
or a return transaction in the Sales order form. Select the Calculate cash discounts for credit notes
check box to allow discounts to be automatically calculated for credit notes.

If this check box is selected and a credit note is entered in the Open transaction editing form, the
discount is automatically calculated and is displayed as the default entry in the Discount amount .

If this check box is not selected and a credit note is entered in the Open transaction editing
form, the default entry in the Discount amount to take field is 0, zero.
If this check box is selected and a user opens the Open transaction editing form, the discount
is taken when the Normal option is selected in the Use cash discount field.

If Always in the Use cash discount field is selected, the cash discount will be taken and override the
selection of Calculate cash discounts for credit notes check box. If Never in the Use cash discount
field is the selection, the cash discount is never taken regardless of the Calculate cash discounts for
credit notes check box selection.

Open Transaction Editing Form New Fields

If a customer has open transactions that will be settled against one another and the user is allowing
partial discounts, there are some new fields in Microsoft Dynamics AX2012 that are applicable. When
going to a customer record, choose the Collect tab and then click Settle Open Transactions to see
the customer’s open transactions.

The Open Transaction Editing form displays all of open transactions. Users will mark payments to
invoices to settle them. In the form’s header locate the Date to use for calculating discounts field .

The options are:

Transaction Date
Selected Date

By choosing Transaction date, Microsoft Dynamics AX2012 will use the date of the invoice transaction
to determine the discount period and the date of the payment transaction to determine if this invoice is
being settled within the discount period.

By choosing the Selected date, users are able to manually enter a date that Microsoft Dynamics
AX2012 will use to determine if the invoice and payment are being settled within the discount period.

At the bottom of the form, there are additional cash discount fields. The Discount amount field
displays the total discount available for the invoice. The Discount amount to take field will show what
is actually being taken in the current settlement that is being done.
If the parameter Calculate cash discounts for partial payments is marked, a partial discount will be
calculated on the payment depending on the date to use selection.

To settle the payment to the invoice, the user will click Update at the top of the form. This will settle
the transactions and move them to Closed Transaction Editing.

If you read this to learn about frontier settlements in the mid19th century, these are not the settlements
to which we refer. If on the other hand you are into partial cash settlements then-

Happy Cash Applications in AX2012.

I’m moving through this life and I’m thinking about the next

And hoping when I get there, I’ll be better dressed. Driver


Making your Chart of Accounts Dynamic by
leveraging Organizational Hierarchies Dynamics AX
2012
By Dani Richardson in Dynamics AX, Financial on Friday, March 30th, 2012

Just last week was Microsoft’s Annual Conference, Convergence, held in Houston, Texas. I
hope many of ya’ll were able to attend and go to the sessions. I was in the expo for the
conference and was amazed at the amount of people in attendance. I believe I heard them
say many times that more than 10,000 people were there this year. I think that’s great
because there is such a big opportunity to learn more about the products and where
Microsoft is focusing its future on. So, being inspired from Convergence, my blog post will go
into detail on one of the sessions at convergence, Organizational Modeling in Dynamics AX
2012. Keep reading to find out more.

The organizational modeling session was a good one to attend. There was a lot of useful
information on how to structure your organizational hierarchy, what the differences are in a
legal entity and an operating unit, and when to use what. What I found to be the most useful
though was integrating your chart of accounts to your organizational hierarchy. With
companies acquiring and restructuring so much these days, having a dynamic chart of
accounts can really save a lot of time. So to begin, I’ll give a brief overview of restructuring
an organizational hierarchy.

In AX 2012, Navigate to Organizational Administration > Common > Organization >


Organization Hierarchy. Select your Organization’s chart or whichever one you need to make
changes to. For this example, I’m going to select my department’s org chart by clicking the
view button on the ribbon. Once the hierarchy designer screen opens, select edit. There is a
gallery at the end of the post with all of the pictures. (see Picture 1)

To move things around, click the node the move. It will change to orange. Select the cut
button or use ‘Ctrl+X’. Now, select the node to move it to and click the paste button, or
‘Ctrl+P’. (See picture 2)
You can do this as many times as necessary, until all the changes are made. Then be sure to
click Publish and close, and give an effective date.

Now, let’s link it to the Chart of Accounts. Navigate to the General Ledger Module > Setup >
Chart of Accounts > Chart of accounts. (See picture 3)

Now you can either edit an existing account structure or add a new one. I’ll edit one by
selecting it and clicking ‘Configure account structure’ button. So you’ll see on this screen you
can give some detail on the kind of segmentation you want. For example, I want this account
structure to be active for all accounts between 5000 and 5999 and for department and cost
center to be used. To add those segments, I click the ‘add segment’ button and choose from
the drop down. (See picture 4)

Now, for the next step, you need to add the relationship to the organization chart. This is
what makes the COA dynamic. Select the ‘Relationships’ button. Select the org chart from
the list and combination of segments in the order you like. I chose “Department” and then
Department, Cost center, and Expense Purpose. That is how this will be represented in
entering a journal. (see picture 5)

Make sure you validate and Activate the changes after you added the relationship. Typically
this process should be done during the implementation of your ERP system. However, if you
make a change, once you activate, existing records will be updated so it can take some time
to do that.

Now, let enter a general journal to see this take effect. Navigate to General ledger > Journals
> General Journal. Create New and click ‘Lines’ button. Enter in a 5* account, and you’ll see
what else needs to be selected. (See picture 6)

Now if you were to relocate a department or get rid of one in the organizational hierarchy
then it would no longer be a selection when entering information on the GL. This takes away
a lot of manual data upkeep and can really save a lot of time when entering journals. Also if
a department gets relocated to another area of the business, the COA will follow that
reorganization.
Getting Started with Dynamics AX: Tips for the Chart
of Accounts from a Rookie
By Daniel Caudle in AX Training, Dynamics AX, Financial, Getting Started with AX on Friday, July
20th, 2012

The first two weeks of Microsoft Fast TrAX training in Fargo, ND have been like trying to drink water
out of a fire hose. My class has been thrown head first into AX and somehow, even with the multitudes
of knowledge, I am beginning to understand how AX works and how to use it. Our class has finished
Financials 1 and 2 and I thought I would share some information on a topic I initially had a difficult time
getting a hold of. So I’d like to present some tips and tricks for setting up the Chart of Accounts and
some high level (think Will Smith at the end of Independence Day and all the corresponding themes
involved) reasons why it is so important to the Financial portion of AX.

The most emphasized aspect of the Chart of Accounts in AX has been how customizable it is. Any
organization can set up their COA (Chart of Accounts) however they’d like so that the can mold it to
their ideal settings. However, they need to plan out the setup before jumping into AX. An organization
could easily start creating main accounts on top of main accounts, but this strategy will lead to a
cluttered and unorganized COA where controlling settings and tracking transactions could become a
headache. The key to a healthy COA is to use the dimensions to sort the accounts under fewer main
accounts. For instance, an organization could have 10 accounts with the same bank, or they could
have one main account with one bank, and then create 10 dimensions under that bank. This way, their
dimensions fall under a main account where they can set common settings that carry down to the
similar dimensions and track transactions with ease.

Optimizing the COA will also come in handy when an organization has many transactions occurring
simultaneously. The organization can set the COA to update transactions as they are being edited
through the general ledger or the COA structure. So a controller can enter a transaction and can see
the updated balance in the trial balance as they are posting. Additionally they can create settings to
establish who can and cannot post to certain accounts. Obviously, every organization has a hierarchy
within their staff, and certain roles can be given access to accounts they need for their role, while
being restricted or blocked from other accounts.

I can’t emphasize enough how important it is to plan out the design of the COA before implementation.
When a main account is created, AX saves it and it cannot be deleted. The COA can become
complicated quickly, and if planned well it can be incredibly simple. An organization shouldn’t hesitate
to create their own dimensions instead of using the default dimensions included in the software. This
can become vital to AX customization, especially in the public sector. The COA is a powerful tool in AX
but can easily become a burden if it is not designed properly.
About Daniel Caudle
Getting Started with Microsoft Dynamics AX:
Terminology – Account Structures
By Candice McClung in Dynamics AX, Financial, Getting Started with AX on Friday, July 20th, 2012

According to the American Institute of Certified Public Accountants, Accountancy is defined as, “the art
of recording, classifying, and summarizing in a significant manner and in terms of money, transactions
and events which are, in part at least, of financial character, and interpreting the results thereof,” or, in
layman’s terms, extreme organization of how monies come and go. Most Certified Public Accountants
(CPA), bookkeepers, and the like will confirm that this is no easy task, especially when considering the
large number of accounts and account names involved. Yes, terminology is a huge part of
understanding accounting and accounting systems, and variations could make for a more complicated
process. Unfortunately, for a recent Accounting grad – turned Associate AX Consultant, accounting
terms learned in business school and AX language used in practice are quite different. While CPAs
and high level professionals probably have a deeper understanding of the practice than an AX rookie
and would have little trouble deciphering the terms, it might be nice to be warned up front. Luckily for
everyone involved, once the code is broken, AX actually makes the accounting process much easier,
despite the unfamiliar nomenclature. Now, isn’t that nice?

A small, but significant example of this discrepancy can be found on the Chart of Accounts (COA). In
AX, the COA is made up of a series of Main Accounts that are defined by financial dimensions.
Financial Dimensions make it easy to slice data and create reports that reflect exactly what
information any given manager or employee needs to see. Additionally, Financial Dimension sets are
created to group certain dimensions together, again, making reporting both flexible and easy. A
range of main accounts combined with the segments of dimensions make up what is known as the
account structure. Just like any other accounting system, the COA in AX contains the list of accounts
that will be on the General Ledger (GL) and reported on the Trial Balance (TB). Reporting on a GL
with too many accounts, perhaps one for every minute transaction, would be messy, hard to read, and
ultimately ineffective. Thus, Financial Dimensions are in place to allow managers to drill in to the
specifics of transactions posted to the GL, without having them individually show up on the TB.

I don’t know about you, but I did not learn about main accounts, financial dimensions, segments or
account structure in business school, at least not in this context. So, when learning the application, I
found it helpful to think of these concepts in terms of what I did learn. I think it’s pretty clear at this
point that a Main Account is the equivalent of a Control Account, but, as for Financial Dimensions,
translation is a little foggy. The best way I can think of it is as a sub-account. So, if control accounts
are posted to the GL, sub-accounts show up on a sub-ledger. Likewise, main accounts are posted to
the GL, while financial dimensions can be seen as a sub-ledger. Again, AX enables the user to sort
data by a chosen dimension and relays information in, essentially, a sub-ledger format.
Not only are account structures nice for reporting purposes, they also help prevent entry errors. By
associating a range of Main Accounts with a particular range of departments, cost centers, etc., entry
clerks or bookkeepers are less likely to choose an inappropriate journal when recording a transaction.
And, of course, organization is key in any accounting system or methodology, and with the use of
Financial Dimensions in AX, it is achieved without much effort.
Getting Started with Dynamics AX: Advanced
Account Rules
By Kyle Webster in AX Training, Dynamics AX, Financial, Getting Started with AX on Friday, July 27th,
2012

Dynamics AX 2012 is all about having options and the power to do what you want. One of the
great examples of this is the Advanced Account Rules feature in the Chart of Accounts. This feature
lets you get more details on where money is going or coming from. When inputting data into a journal
you are always prompted to select an account from which to withdraw or deposit money. The
Advanced Account Rule Strucutres lets you require more informaiton than just which main account to
move money to/from such as which department or cost center the funds are going to or from. To learn
how to do this click the jump.

Configure Account Structures Form

You can set up the advanced account structures and rules in the Setup section of the General Ledger
under Chart of Accounts. If you click the arrow to expand the field you will see two links that are
important: Configure account strucutres and Advanced rule structures. Configure account structures
allows you to either create a new account structure or edit an existing one. Advanced Rule Structures
allows you to create or edit a rule that can be used in a journal or other area.

Advanced Rule Structures Form

Either way once you get into either the Configure account structures form or the Advanced rule
strucutres form you can do the same things. Clicking the add segment button next to the green plus
sign allows you to add a segment such as department or cost center. Clicking the small filter icon in
the text entry field brings up another form. In this form you can set rules for the data that will be
entered in this field. For example if you select department and for certain main accounts you only want
the user to be able to pick from department numbers greater than 300 you can do that. Another
exmaple would be that you can require that any department is picked or you can or you can choose to
allow blanks or no values to be entered in the fields. Note that the system will always require there be
a value for main account and for the other segments will default to requiring a value be entered. To
override those segments from having a value just click the checkbox next to the “Allow blanks
label”. An example of a custom rule and allowing blanks is below.

This form appears after clicking the filter icon

I hope this helps you when you are setting up your chart of accounts and should help users provide
accurate information when entering journal entries and other forms.

About Kyle Webster


Getting Started with Microsoft Dynamics AX:
Terminology – Depreciation Methods
By Candice McClung in Dynamics AX, Financial, Getting Started with AX on Friday, July 27th, 2012

In continuing my search for inconsistencies between AX language and accounting terms, I came
across Fixed Assets, particularly methods of depreciation. While sitting in the FastTrAX training here
in Fargo and listening to the instructor talk about setting up depreciation profiles, groups, etc., I
realized that I only recognized one of the methods available in AX. After a morbid flashback to
college when I first learned depreciation methods, how to calculate the expense, how to journalize the
accumulated depreciation, why it’s called a contra-account, and why it is all completely opposite for tax
purposes versus financial reporting purposes, I got dizzy. “There’s no way I wasted time retaining all
of that knowledge,” I thought. I was right; there was no way. In fact, all I had to do was a little
translation.

My good friend, Straight Line Depreciation, was the one term I did recognize, but other methods like
Reducing Balance, Manual, Factor, and Round-off were a little less familiar. I knew AX would not be
very appealing to companies without an accelerated depreciation method for tax purposes, so I began
to compare, and here is what I found.

Immediately it is easy to see, just by its similar name, that Reducing Balance could be compared to
Double Declining Balance. In fact, there are several different options for the Reducing Balance
methods, offering different percentages, such as 125%, 150%, 175% and 200%. Yes, that’s the one.
200% Reducing Balance in AX has the same methodology for calculating depreciation expense as the
all-too-familiar Double Declining Balance method used by accountants. Both methods calculate the
rate of depreciation by finding the straight-line rate for the asset and doubling it, and calculate the
expense based on the asset’s useful (service) life, rather than it’s salvage value.

Another common method of accelerated depreciation is know as Sum-of-the-years-digits (SYD).


There is absolutely no method presented in AX that even remotely resembles this name, so, my trial
and error began. I stumbled upon the Manual method and began to dig around. In short, under SYD,
the depreciation expense is calculated based on a rate assigned to each period in which the asset is
depreciable. To find this rate, the sum of the useful life’s digits must be determined (this is where
accountants decided to get creative). For example, if the useful life of the asset is 5 years, its digits
are 1, 2, 3, 4 & 5, and the sum of those digits is 15. The formula, (n^2 + n)/2 where n is the number of
years in the useful life, also works. Next, the rate for each individual period can be calculated by
dividing its number of useful years by the sum (15). So, based on the example, the depreciable rate
for year 1 would be 5/15, year 2 would be 4/15 and so forth. The depreciable base for each period is
consistent (thankfully), and is determined by subtracting the salvage value of the asset from the
acquisition cost. So, if the acquisition cost of an asset is $1000 and the salvage value is $100, the
depreciable base would be $900 for every period. The depreciable base is multiplied by the year’s
corresponding rate to find the period’s depreciation expense. OKAY, now I can tell you how this works
in AX. Using the Manual method, the user can set up a different rate for each depreciation period of
an asset. So, although the system doesn’t actually calculate the rate for you (that I know of ), once
you determine it using the formula above, just plug those amounts into the Manual Schedules form
with the corresponding periods. This was the closest I came to finding a method in AX that is
comparable to SYD.

Finally, the Consumption method and consumption units form in AX allows users to depreciate an
asset like production machinery based on the activity it performs or its output, rather than time, similar
to the standard accounting methodology, Units of Production.

About Candice McClung


Getting Started with Microsoft Dynamics AX:
Depreciating Fixed Assets
By Will Steele in Dynamics AX, Financial on Wednesday, September 12th, 2012

As much as we wish that Fixed Assets would retain their value, especially as I drive the value out of
my car every day in Atlanta traffic, most will have some amount of depreciation over their lifetime of
use. No ERP system would be complete without taking this fact into account, and AX is no exception.

For those of us new in the ERP world, we would try to approach this task logically. First step: create
the newly purchased Fixed Asset in the system by whatever means have been established in the
parameters of the system for Fixed Asset Acquisition. Once we have created the Fixed Asset, we are
ready to enter the depreciation profile that is associated with the Asset. We just have to find the
field…except there isn’t one. That’s when we remember back to our AX training that before we create
any Fixed Asset, we must create a Fixed Asset group for it to be connected with.

Problem solved. So I pop back out to the Fixed Asset Groups under Setup. I create my new group,
give it a name, and find the fixed asset depreciation field to assign my values…except I can’t find one.
Then I remember somethings about “remember Value models for Fixed Asset Groups.”

My journey then continues to the Value Models either under setup or by clicking Value Models under
the Fixed Asset Group, adding a new one, and then viewing the details. We have finally arrived at the
destination that will allow me to decide what kind of depreciation profile I would like for my Fixed Asset
to have. After filling in all of the relevant information I can now relate my Value group to my Fixed
Asset group and then assign my new Fixed Asset to its corresponding group.

If you have hung on and read my blog up to this point, it’s reasonably certain you understand the point
I am getting at. AX doesn’t have a straight forward way to simply assign depreciation values/models to
fixed assets. However, if you understand the way AX uses groups to associate like items together and
then connect these groups with other dimensions of AX, then the assigning of depreciation models
makes sense.
Inventory Reconciliation for Beginners in AX 2012
By Candice McClung in Dynamics AX, Financial on Monday, May 13th, 2013

Reconciling inventory at month-end can be a daunting task as it is, even more so in an unfamiliar
system with no way to know where discrepancies come from. AX 2012 makes the process easier with
the use of canned reports that are geared for reconciliations and identifying missing transaction, and
as long as you know what you’re looking at, this can make life much easier. Two major components
are part of this process: 1) Report on Inventory value and 2) Investigate misstatements. Once that has
been completed, you can make appropriate adjustments to close the books.

The first task to complete is reporting on the value of inventory. This is done using the Inventory Value
report. A second report, Potential Conflicts: Inventory and G/L, is used pinpoint what likely caused
misstatements.

Navigate to inventory and warehouse management>setup> costing> inventory value reports to create
a report ID that strictly values the inventory. The picture below displays the necessary setup.
Although this will vary by company, it is imperative that you make the selection to show totals for
resource group (Item group) so that you can verify those totals with GL accounts.

Run inventory and warehouse management>reports> inventory value with the following parameters
(using the report ID created in the previous step):
Since the InvVal report ID is set to total resource group (item group), you can then verify each of the
item group totals with their respective GL account totals

To see GL account totals, navigate to General Ledger>common>Trial Balance. Make sure that the
parameters of the Trial balance are set to the correct date range for the reconciliation.

If the Inventory Value report identifies a difference between GL and inventory values, run Inventory
and warehouse management> reports>inventory value>potential conflicts report to identify what
caused the imbalance. The report was designed to check for the most common issues that cause
discrepancies between GL and Inventory values.

Set the parameters of the report to run for the main account in question. You can also filter by item
number, voucher or posting type using the select statements

This report will narrow down the imbalances so that the investigation of the accounts is less time-
consuming

Once both reports are generated, you can use them to determine what General Ledger accounts
need to be investigated further.

Steps to investigate a suspected misstated account in AX 2012:

Add posting type field to the grid display on the Main Accounts’ Posted Transaction form

Note: you will only have to perform this step once


a. Navigate to General Ledger> Common> Main Accounts

b. Search for the main account you would like to look at

c. Click the Posted button, located in the Journal Entries area on the main accounts tab.

d. Anywhere inside the grid, right click with your mouse and choose Personalize from the menu
that appears

e. In the Layout area of the Personalization form, make sure the Overview and Identification menu
items are maximized. You should also make sure that the General and Type menu items are
maximized.

f. Drag and drop the field labeled Posting Type from the Type menu item to the Identification menu
item.

g. Once you’ve dropped the Posting Type field in the Identification menu, you can use the Up and
Down buttons to move the field to the position you would like it to show up on the grid.

Note: I positioned the field after Date and before Type


You may choose to Save the form personalization, but it is not required. At this point, you can just
close out of the Personalization form.

Note: you may have to close out of the Posted Transactions form and come back in to see the
updated form

Now that you’ve added the Posting Type field to the grid view, you will be able to sort and filter the
posted transactions appropriately

Start by clicking the grey box labeled “Posting Type” at the top of the grid. Click it once more to make
sure the Posting Types are grouped together. You will know you have sorted correctly if a small black
triangle appears in the Posting Type box

Now use the CTRL+G keyboard shortcut to insert the filter in Grid

In the Date search box, use the range syntax (..) to filter for a specified range of dates. For example, if
you want to filter for all transactions posted in January of 2013, you should type 1/1/13..1/31/13 into
the box, and press Enter on your keyboard

Now the grid will display only January 2013 posted transactions, and they are sorted in order of their
Posting Type

Click anywhere inside the Grid, and use the hotkey CTRL+T to export the list to Excel
Once the list has been exported to excel, you can perform an analysis of the transactions based on
the Potential conflicts and inventory value report.

About Candice McClung


» Getting Started with Dynamics AX 2012: Automating Exchange Rates

Getting Started with Dynamics AX 2012: Automating


Exchange Rates
By Matt Alford in Dynamics AX, Financial, Getting Started with AX on Thursday, August 8th, 2013

As someone who has only recently been introduced to Dynamics AX, I was intrigued by the idea of
automating the capture of currency exchange rates. Shortly after having my curiosity piqued, I learned
that only a precious few individuals seemed to understand how this feat could be accomplished. That
discovery has led me to document the process here in hopes of sharing this knowledge with the
Dynamics world.

To begin, navigate to General Ledger / Setup / Currency / Configure Exchange Rate Providers.
Select your preferred provider from the list and click OK.

The URL’s for that service provider will be displayed, then click CLOSE.
Once done, you will need to select which exchange rate you will be using in the General Ledger /
Periodic / Import Currency Exchange Rates screen.

That’s it! Now you can view the rates by navigating to General Ledger / Setup / Currency / Currency
Exchange Rates.

This potentially powerful feature is a breeze to set up, and it can be integrated into various other
activities within AX 2012. This makes it well worth your time.

About Matt Alford


Getting Started with Dynamics AX 2012:
Intercompany Accounting
By Kyle Andrich in AX Training, Dynamics AX, Financial, Getting Started with AX on Thursday, August
15th, 2013

When using the intercompany accounting daily journal in AX, transactions posted in one company
cause the related transactions to post automatically in the other company. How convenient! The key,
though, is in the set up, and that’s what I’m going to cover today. For this process, I’ll be working in
two different companies, so it’s important to know which company I am currently working in.
Otherwise, mistakes can easily be made, and I’ll create a lot of extra work for myself. The easiest way
to see the company I am currently in is by looking in the status bar in the bottom right hand corner.

First, I need to create intercompany main accounts in the general ledger for money received from and
due to the company I am working with. Think of it like AP and AR accounts, so I’ll
have an account called “Due to – CEE” and “Receive from – CEE.” For consistency and ease, I
suggest the account numbers you assign line-up with the AP and AR numbers already in your
system. The last aspect to setup in the main account form is selecting Balance sheet for the Main
account type. This is the only way intercompany accounting will work properly. Second,
intercompany journals need to be created in each company. I recommend naming the journal, IntJrn.

Finally, I need to tie the previous two steps together and create a posting relationship between the two
companies. Go to General ledger–> Setup–> Posting–> Intercompany accounting–> New. In the
company accounts field, click the arrow to select the company with which the active company will
have intercompany transactions. The credit account, debit account, and journal should be the
information for the company you are currently in, not the company you will be working with.
That’s it for setup in the first company, but make sure to do the same setup in the other company.
Regardless of the direction of posting between company accounts, both companies must have
intercompany accounts set up for the other company accounts. Any errors in the setup will cause
errors when trying to validate and post journals. To verify the transactions in each company, navigate
to General ledger–> Inquiries–> Audit trail. Select the journal where the intercompany transactions
were posted and click the Voucher transactions button. The next screen will show the journal
voucher with the previously setup accounts and the transaction amount in the proper debit or credit
column, depending on which company you are in.

About Kyle Andrich


Getting Started with Dynamics AX 2012: Recurring
Budget Register Entries
By Matt Alford in Dynamics AX, Financial, Getting Started with AX on Tuesday, August 13th, 2013

There are a lot of catch phrases out there, but the one that has best served me throughout my
professional career is “work smarter, not harder.” At the end of the day, that is essentially what your
ERP system should provide for your company. Faster, simpler and more concise processes. Here is
one small example I have seen in my early days as an AX consultant.

For those of you out there utilizing the Budgeting module in Dynamics AX 2012, you can automate
some budget register entries by following these steps:

Navigate to Budgeting > Common > All budget register entries. Then select the New Budget Register
Entry button.

Once you have setup your new entry and added the line detail, select the Enter recurrence button.

Fill out the required parameters for your recurrence. You can setup an entry to recur every 10 days,
every 1 month or however you see fit. Then click CREATE.
At this point you will see your recurring entries listed on the screen.

There are many other similar examples where Dynamics AX can help simplify your day to day
processes and make your life a little easier. I would suggest you look into any that you feel may be of
use to you. In fact, if you have questions about this or any other recurring processes, leave me a
comment below.

About Matt Alford


Dynamics AX2012: Create Custom Service using X++
January 24, 2012Santosh.R3 comments

Case Study: In this demo scenario, we create a custom service to find the inventory onhand physical
item quantity from AX2012.

To expose any Custom Service, method should be ‘public’ Access Specifiers & should be defined by
an attribute named ‘[SysEntryPointAttribute(true)]‘.

For this project, I have a created a sample InventoryOnHand service which basically returns the
number of qty for a given Item.
class InventOnhandService

[SysEntryPointAttribute(true)]

public InventQty itemOnHandPhysical(ItemId _itemId = '')

SalesLine salesLine;

InventOnhand inventOnHand;

InventMovement movement;

InventQty qty = 0;

select firstOnly salesLine


where salesLine.ItemId == _itemId;

if (salesLine)

movement = InventMovement::construct(salesLine);

inventOnhand = InventOnhand::newPhysicalUpdate(movement,

movement.inventdim());

qty = inventOnHand.availPhysical();

return qty;

Next step is to create a ‘Service’ & map the custom class with newly created service. By which you
could exposed all public methods which are in the scope of current class. Please proceed further by
Creating a New Service Group & Add it to Service Node Reference. Please mark the ‘Auto Deploy’
property to ‘Yes’ on the Service group (properties).

Right click on the created Service group and click ‘Deploy Service Group’. This would deploy all the
relavent artifacts to the Inbound port under System Administration module.
In order to test your custom Service application, simply start VS Command prompt (or) traverse
through Start -> AllPrograms -> Microsoft Visual Studio 2010 -> Visual Studio Tools -> Visual Studio
Command Prompt

Enter wcftestclient, space and then paste the WSDL URI (which you can find on the deployed
Inbound port)

When the WCF test client starts double click on your method ‘itemOnHandPhysical’(in my case) and
specify the value under request by passing the _itemId (i.e. 1290 in my case) the invoke function
will return the appropriate response of the available physical quantity of an item from the AX2012.
Download Link: InventoryOnHandService happy servicing AX2012

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs Tags: inbound port, new service group, visual studio tools

My Blog Review in 2011


January 1, 2012Santosh.RLeave a comment

The WordPress.com stats helper monkeys prepared a 2011 annual report for this blog.
Here’s an excerpt:

The concert hall at the Syndey Opera House holds 2,700 people. This blog was viewed about
14,000 times in 2011. If it were a concert at Sydney Opera House, it would take about 5 sold-
out performances for that many people to see it.

Click here to see the complete report.

Share this:

 Share

Like this:

Like Loading...

Categories: Uncategorized

Dynamics AX2012: Table Full Text Indexes


September 26, 2011Santosh.RLeave a comment
Microsoft Dynamics AX 2012 provides full-text functionality that enables Microsoft Dynamics AX to
search business data over a large volume of text data or documents.

Please refer the following link which explains on the same.


http://dynamicsaxgyan.wordpress.com/2011/08/09/

full-text-index-in-dynamics-ax-2012-x/#comment-203/

Thanks Sreenath for the awesome article.

Also refer ‘AX Wonders’ blog which explains on setting up ‘Full Text Index’ Setup in SQL
Server 2008 R2

http://axwonders.blogspot.com/2011/03/

sql-2008r2-full-text-index-search-setup.html/"

Example:

/*

Two important rules for creating Full Text Indexes

[Technet]

TableGroup property.

A table can have a full text index only if the TableGroup property

is set to Main or Group on the table.


A full text index can only be created on a table with RecId index.

So make sure 'CreateRecIdIndex' property flag on table is set to Yes

*/

static void FullTextIndexesDemo()

Query query = new Query();

QueryBuildDataSource queryBuildDatasource;

QueryRun queryRun;

QueryBuildRange queryRange;

FullTextIndexesDemo fullTextIndexes;

queryBuildDatasource = query.addDataSource(tableNum(FullTextIndexesDemo));

queryRange =
queryBuildDatasource.addRange(fieldNum(FullTextIndexesDemo,

AxVersion));

queryRange.rangeType(QueryRangeType::FullText);

/*

[Technet] Space characters are treated as implicit Boolean OR


operators.

There is a space character in the string parameter in call

queryBRange4.value("dynamics 0");.

*/

queryRange.value('dynamics 0');
queryRun = new QueryRun(query);

while (queryRun.next())

fullTextIndexes = queryRun.get(tableNum(FullTextIndexesDemo));

Debug::printTab(DebugPrintTab::ActiveX, fullTextIndexes.AxVersion);

Happy Full indexing in 2012

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

How to write UtcDateTime value along with Timezone


in AX2012
September 25, 2011Santosh.R2 comments

In AX2O12, we can manage record relationship that are valid for a specific date range, by setting
the ValidTimeStateFieldType property to UtcdateTime.

Let’s draw a scenario where you need to parse an XML which was built on lower version (S.O) and
push data into AX2012 system using AIF. In scenario as above, we might end-up having relation w.r.t
LogisticsPostalAddress which has ValidFrom as an attribute and the framework XMLWriter would
validate the data only if the parsed UtcDateTime is correct as shown format.

The sample code shown below will explain how the dateTime is parsed an converted into
UtcDateTime format which could be accepted by the AIF when they are surrogate Key relationship
on ‘ValidFrom’ on the master table.

The below image displays the virtual table which was created at run-time to show the ValidFrom
entry made against the user timezone.

Based on the created record the dateTime is converted into UtcDateTime and displayed to the
users.
Example illustrated above is attached in the following link, named as
SharedProject_Conversion_DateTimeToTimeZone.
https://skydrive.live.com/?sc=documents&cid=264a0056cbcbb1d3#cid=264A0056CBCBB1D3&
id=264A0056CBCBB1D3%21630&sc=documents

Welcome AX2012

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Multiple XPO Import Version – 3


June 20, 2011Santosh.R1 comment

Hey Guys,

I have added a small Add-in feature to the existing tool which will create a Project for all the
imported elements. Each import will have a following namespace (ImportProject) followed by
underscore and a random number appended to the namespace. The Time stamp is also added in
html log to know at what time the elements were imported.
The Project name can be modified based on your requirement. To achieve the following please
mofidy the code in the below part
public void createProject(TreeNodePath _path,

identifiername _projectName

= strfmt("%1%2_%3", "@SYS105127", "@SYS36368", new Random().nextInt()),

ProjectSharedPrivate _type

= ProjectSharedPrivate::ProjShared)

Please let me know your suggestion if any so that i can/modify more to this XPO import tool

Download Link: http://cid-


264a0056cbcbb1d3.office.live.com/embedicon.aspx/.Public/SharedProject_MultipleXPOImp
ort_WorkingStill_v3.xpo

Share this:

 Share

Like this:
Like Loading...

Categories: X++ stuffs

We are AX Bloggers :)
June 5, 2011Santosh.R1 comment

Nice video Thanks Mahesh for sharing this AX search for users who can refer our blogs

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

AX2012 Hands on Labs


May 19, 2011Santosh.RLeave a comment

Friends,
There are hands on lab session on AX2012 available on Partner Source. For more information please
refer the following link here
Topics covered in the hands-on lab are as follows:

1. Workflow Implementation

2. Accounts Payable

3. Accounts Receivable Enhancements

4. Expense Management

5. Migrating Reports to SSRS

6. Employee Procurement

7. Client Forms
8. Export Extend and Refresh

9. Edit Budgets in Excel

10. Sales Quotations in Word

11. Import Data Using Excel

12. Project Accounting

Thanks Fee for sharing us the information.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Newer Entries Older Entries

Publish Selected Fields using AIF without


Send Framework
November 9, 2010Santosh.R1 comment

Sample example is written for publishing selected field based on AIF setup made in Data-policies
form without using AxdSend framework class.
/// <summary>

/// The <c>LedgerTableRead</c> job will published the xML to the folder

/// mentioned in channel path.

/// Note: Once the job is executed sucessfully please run the AIF job

/// to push the xML outside.

/// </summary>

public void LedgerTableRead()

{
AifEntityKey entityKey = new AifEntityKey();

AifConstraint aifConstraint = new AifConstraint() ;

AifSendMode aifSendMode = AifSendMode::Async;

AifEntityKeyList entityKeyList = new AifEntityKeyList();

AifConstraintList aifConstraintList = new AifConstraintList();

LedgerTable ledgerTable;

select firstonly ledgerTable

where !(ledgerTable.AccountPlType like LedgerAccountType::sum);

entityKeyList.addEntityKey(entityKey);

entityKey.parmTableId(ledgerTable.TableId);

entityKey.parmRecId(ledgerTable.RecId);

entityKey.parmKeyDataMap(SysDictTable::getKeyData(LedgerTable));

aifConstraint.parmType(AifConstraintType::Customer);

aifConstraint.parmId(LedgerTable.AccountNum);

aifConstraintList.addConstraint(aifConstraint);
/* This will populate the xML based on the AIF setting for COA */

AifSendService::submitDefault(classnum(LedgerChartOfAccountsService),

entityKey,

aifConstraintList,

aifSendMode);

Once the above job is executed, the record with get inserted into Queue Manager. Please execute
the following AIF job to push the data outside.
public void Run_AIF_Job()

new AifOutboundProcessingService().run();

new AifGatewaySendService().run();

hAppies DAX

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Multiple XPO Import Tool for Dynamics AX


October 29, 2010Santosh.R1 comment
I have developed a tool for importing multiple XPO’s using single instance as there is a limitation for
now in AX since it allows only single object importing.The sneak peak of the tool which I have
developed:

I have attached documentation, on how to use this tool. Like any tool this has its own
limitation which will be explained in the document.

Advantages

• It can import multiple XPO’s from multiple sub-folders


• Rich HTML output log which will provide the objects which are successfully imported.
• Provides email facility to send the imported log.
• It can import objects from n number of folders.

Example: In the below example I have XPO’s for tables, maps, views, classes, references and
few jobs.

All XPO’s except jobs (These are stored in parent folder AX_XPO) are stored in their
respective folder structures (as shown).

When using the Multiple XPO Import tool if the parent folder is specified then the tool
imports all the XPO into AX based on wildcard operation made on XPO and all objects will
be imported accordingly.

Limitation:

• Once imported please make sure you compile the imported objects.

Alternatively you can download the XPO from the following location

Documentation Location
http://cid-
264a0056cbcbb1d3.office.live.com/self.aspx/.Public/Multiple%20XPO%20Import%20Tool%20Documen
tation.doc

XPO Location
http://cid-
264a0056cbcbb1d3.office.live.com/self.aspx/.Public/SharedProject%5E_MultipleXPOImport.xpo

Note: Please use at your own risk when trying on Production environment

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Welcome to Dynamics AX @ WordPress :)


October 12, 2010Santosh.RLeave a comment

Hello Friends My blog will be redirected to Word press site as i upgraded the Windows Space blog
to the following address Dynamics AX. Hope you all continue, reading my articles

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Dynamics AOS 5.0 service terminated with Error Code 80


September 15, 2010Santosh.RLeave a comment

In Win2008 Server when I replaced the application files (axusr.aod) for upgrading my project I faced

enormous trouble in restarting my AOS Service (AX2009).

To fix the above issue I had refer the following blog


http://danielkuettel.spaces.live.com/blog/cns!A35B8075741714C3!172.entry#comment

Even after making the necessary settings as mentioned in the above blog, still AX Object
Server service was terminated with same error code 80. As a additional workaround to this error we
need to modify the following
Under %ProgramFiles%\Microsoft Dynamics AX\50\Application\Appl\ [Application] the files where
marked as Read-Only. Please make sure you uncheck and apply changes to this folder, sub-folders
and files.

Note: Similar solution works even when the Error code is 90.

Share this:
 Share

Like this:

Like Loading...

Categories: X++ stuffs

AIF Error: External action ‘xxxService.create’ does not


contain namespace
August 6, 2010Santosh.R1 comment

When performing inbound operation we usually get this error message in Queue Manager
stating "The external action ‘LedgerChartofAccounts.create’ does not contain namespace,
service and operation information."

The issue is because the namespace is defined incorrectly.


<Action>ENTITY TAG for the inbound xml should have the service name as its external namespace
and not the service name.
Example: Incorrect way of using the namespace in the Header
<Action>http://schemas.microsoft.com/dynamics/2008/01/services/LedgerChartofAccountsService/re
ad</Action>

Correct way of using the namespace:


<Action>http://schemas.microsoft.com/dynamics/2008/01/services/ChartOfAccountsService/read</Ac
tion>

Share this:

 Share

Like this:
Like Loading...

Categories: X++ stuffs

Microsoft Dynamics AX Roll-up 5 Released


July 6, 2010Santosh.RLeave a comment

Microsoft has recently released Roll-up 5 for RTM & SP1.Here is the released news from Dynamics AX
Sustained Engineering

http://blogs.technet.com/b/dynamicsaxse/archive/2010/06/30/dynamics-ax-2009-rollup-5-has-
been-released-to-partner-source-and-customer-source.aspx

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Workflow Error “No .NET Business Connector Session


could be found” in Dynamics AX2009
June 28, 2010Santosh.R5 comments

Have you ever encountered such type of error in Workflow? Well I did…

I tried to submit a Workflow Purchase requisition and I ended up getting the following error
constantly in my event Viewer. However there was no error in the AX client when submitting the
workflow.
I performed the basic trouble-shooting as below.

1) Checked the Business Connector Proxy in the System Service Account.


2) Checked the Business connector setting of the AX rich client.

Performing these steps didn’t work for me.

The actual issue was: “The logon password was changed for the local system”. Due to which there
was a Host runtime error.

In order to fix the issue please perform the following steps.

 Go Internet Information Service Manager


I.e. Start  Run  Type in inetmgr
 Expand the Application Pools and select the configured Workflow
I.e. In my case it’s MicrosoftDynamicsAXWorkflow50

 Go to MicrosoftDynamicsAXWorkflow50 properties.
 Under Identity tab in the “Application pool identity please change the password to the local
system password which was changed recently”.
 Stop IIS
 Start IIS.

Now try to resubmit the workflow and you’ll find that it has executed successfully.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Usage of “Match” Keyword in Dynamics AX


May 31, 2010Santosh.R1 comment

I was trying to match a word based on a wild card expression in AX and found an interesting
keyword

Syntax:
int match (str pattern, str text)

Match Searches for a string or expression within another string. It compares the fixed expression
specified by pattern with the text string specified by text.
Note: The system does not differentiate between lower and upper case. The following special
characters can be used to create the pattern in the fixed expression.

Here is the sample example illustrated.


static void matchFunction()
{
//An expression followed by an asterisk requires a match for none, one, or more occurrences of
the preceding expression.
#define.matchKeyword(‘g*’)
SysDictClass sysDictClass;
Set setList;
SetEnumerator setEnum;
str methodName;
TextBuffer text;
;

// Object Initialization
sysDictClass = new SysDictClass(classnum(Info));
setList = new Set(Types::String);
text = new TextBuffer();

setList = sysDictClass.objectMethodSet(true);
setEnum = setList.getEnumerator();

while (setEnum.moveNext())
{
if(match(#matchKeyword, setEnum.current()))
{
methodName = strrem(setEnum.current(), ‘["]‘);
text.appendText(methodName + ‘\n’);
}
}

text.toFile(@’C:\MethodNames.xls’, FileEncoding::UTF8);
}

To know more about the usage of match keyword please refer


http://msdn.microsoft.com/en-us/library/aa886279.aspx

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs


Finding Dimension Array name in Dynamics AX
using X++
May 4, 2010Santosh.R3 comments

Dimension in AX/SQL are stored as arrays as shown below in SysTableBrowser window.

In SysTableBrowser all the fields apart from SalesId are pointing to “Dimension”. This might be quite
confusing at times to people who look AX for the first time. In fact the field names are different
when stored in SQLDictionary table.

But to determine what exactly each of these financial dimension[_array] points too is illustrated
using a sample job

static void FindDimensionArrayName()


{
SysDictField sysDictField;
int _array;
;

sysDictField = new sysDictField(tablenum(SalesTable), fieldnum(SalesTable, Dimension));

for (_array = 1; _array <= sysDictField.arraySize(); _array++)


{
info(strfmt("Dimension value is %2: %1", sysDictField.label(_array),
sysDictField.name(DbBackend::Sql,
_array,
FieldNameGenerationMode::FieldList,
tablestr(SalesTable))));
}
}
DbBackend::Sql

DbBackend::Native

Download Link of Job: http://cid-


264a0056cbcbb1d3.skydrive.live.com/self.aspx/.Public/Job%5E_FindDimensionArrayName.xpo

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Debugging form controls in Dynamics Ax


April 21, 2010Santosh.RLeave a comment

I often had pain of debugging form controls especially the clicked method in the form data source.
As any other developer the only alternate I knew was typing breakpoint
My colleague has illustrated HOW TO DEBUG THE FORM CONTROL in an efficient manner.

It’s worth reading this article: http://kamalblogs.wordpress.com/2010/04/15/debugging-form-


controls-in-dynamics-ax/

Welcome back Kamal  An awesome article to kick of blogging.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Info: AifResourceLock Table


April 19, 2010Santosh.R4 comments

When debugging X++ code the developer tends to press (Shift+F5) to stop the execution of program.
This symbolizes that either the issue is figured out (or) may be he needs more data to understand
the issue which is going on.

This type of debugging usually has a side effect on AIF.

Reason:

 While processing inbound message, the AifGatewayReceiveService locks the channel to ensure
that only one process can access a message at any given time. These locks also ensure that
the messages are processed in FIFO or parallel order on the basis of the channel and
endpoint. As a result when the execution is terminated after the following stack
\Classes\AifGatewayReceiveService\processInboundMessages – Line 19

So during inbound operation a record gets inserted into the Resource Lock table based on
the following cluster index
 Channel Id
 AifResourceType – Channel, Conversation, Endpoint or Message
 AifResourceLockType – Gateway or Document Service

This doesn’t allow to process any further Xml until record in AifResourceLock table is deleted. Only
if the message is cleared/deleted the adapter will start processing it successfully.

Share this:

 Share

Like this:
Like Loading...

Categories: X++ stuffs

AIF Find/Read Service Class in Dynamics AX


February 16, 2010Santosh.R12 comments

In continuance to my existing article about AIF Service classes in Dynamics AX. Here is the sample
class by which we can read/find the data from a table and publish it using AIF Service.

static void ExpenseReadOutbound()


{
AifEntityKey entityKey = new AifEntityKey();
AifEntityKeyList entityKeyList = new AifEntityKeyList();
TrvExpTable trvExpTable;
TrvExpenseService expenseService;
AifDocumentXml documentXml;
XmlDocument xmlDoc;
Random objRandom = new Random();
;

expenseService = TrvExpenseService::construct();

//Record Selected to pass to entityKey which is ‘Not Like’ in X++ SQL statement.
while select trvExpTable
where !(trvExpTable.PostStatus like TrvPostStatus::Transferred)
{
entityKey.parmKeyDataMap(SysDictTable::getKeyData(TrvExpTable));
entityKeyList.addEntityKey(entityKey);

try
{
documentXml = expenseService.read(entityKeyList).serialize();

//Initialize xMLDocument only after the entity key list of the entities reads.
xmlDoc = new XmlDocument();
xmlDoc.loadXml(documentXml);
xmlDoc.save(@"C:\Expense" + int2str(objRandom.nextInt()) + ".xml");
}
catch
{
exceptionTextFallThrough();
}
}
}
static void ExpenseFindOutbound()
{
TrvExpenseService expenseService;
AifDocumentXml documentXml;
XmlDocument xmlDoc;
AifQueryCriteria queryCriteria;
Random objRandom = new Random();
AifCriteriaElement criteriaElement;
;
expenseService = TrvExpenseService::construct();
queryCriteria = AifQueryCriteria::construct();

criteriaElement = AifCriteriaElement::newCriteriaElement(tablestr(TrvExpTable),
fieldstr(TrvExpTable, ExpNumber),
AifCriteriaOperator::Greater,
‘TRV-000005′);

queryCriteria.addCriteriaElement(criteriaElement);

try
{
documentXml = expenseService.find(queryCriteria).serialize();

//Initialize xMLDocument only after the find entities matching a criteria.


xmlDoc = new XmlDocument();
xmlDoc.loadXml(documentXml);
xmlDoc.save(@"C:\Expense" + int2str(objRandom.nextInt()) + ".xml");
}
catch
{
exceptionTextFallThrough();
}
}
Yahooooooo…..I just love aX iNTegraTion fRameWoRk

Alternatively you can also download the sample code from the below link
http://cid-
264a0056cbcbb1d3.skydrive.live.com/self.aspx/.Public/Job%5E_ExpenseFindOutbound.xpo
http://cid-
264a0056cbcbb1d3.skydrive.live.com/self.aspx/.Public/Job%5E_ExpenseReadOutbound.xpo

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Run-Time Cache Error in AIF


February 15, 2010Santosh.R1 comment

When importing xML’s into Dynamics AX, I came across a strange error “Cannot create a record. The
record already exists in AIF run time cache”.
When I browsed the table, I found a record with the Axd Class name as Key value and a value
mapped to it.

I was baffled when I encountered the error and was wondering how actually this table is getting
updated when importing the xML. Though the record is deleted from the table, the same error
occurs when the import happens and thus the table is updated again.

Then found out the cause for this updation

Under Basic -> Setup-> AIF -> Global Setting -> Uncheck “Enable Runtime Caching”. When this is
unchecked, the data is not updated in “AIFRuntime Cache” Table.

Response cache lifetime Enter the time in hours that message responses are cached.
(hours) The default value is 24 hours. Message responses are only cached
for service operations that have idempotency enabled.
So if the service operations which has EnabledIdempotence set to "Yes" & Caching is enabled on AIF
Global setting then the runtime cache error would be observed in AIF.

To know more about Idempotence(Configure idempotency) please refer the following link:

http://help.sap.com/saphelp_nwce72/helpdata/en/c0/f59f6163bd4164814602b8465d4d40/content.
htm

Now you cache this data in your mind and not in AX…………………..
Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Certified Professional!!!
February 11, 2010Santosh.R1 comment

I have successfully completed my Development Certification In Dynamics AX 2009 .

Next in line……………. AX2009 MORPHX DEVELOPMENT .

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

System Classes in Dynamics AX


February 11, 2010Santosh.R1 comment

I have provided few sample examples of System Class function which are really useful in
development of X++.
RandomGenerate Class:

This class generates random numbers.


static void RandomGenerateEg(Args _args)
{
RandomGenerate objRG = new RandomGenerate();
Random objRandom = new Random();
;
//This generates random numbers specified within the given range
info(int2Str(objRG.randomInt(10,55)));

//This generates random numbers


info(int2Str(objRandom.nextInt()));
}
Executing this job generates random numbers. But it doesn’t guarantee that the numbers will not
be repeated. So if the user needs unique number, he has to provide explicit check for that

Sequence Class:

Contrary to above class is Sequence class which generates the numbers in order.

static void SequenceEg(Args _args)


{
Sequence objSeq = new Sequence("Test Sequence",8,10,250,1);
print objSeq.currval(); // Displays the current value of the object
while(1)
{
print objSeq.nextval(10);
pause;
}
}
Sequence class takes the following parameters: SequenceName which can be a string of your choice,
Identification No for the sequence, Initial Value, Maximum value
and a flag which indicates whether the cycle has to be repeated if maximum value is reached.

The method “nextVal” takes the value to be incremented for next number as parameter.

LastAOTSelection Class:

This class prints the last accessed AOT object by the user.

static void LastAOTSelectionEg(Args _args)


{
LastAOTSelection LS = new LastAOTSelection();
;
print LS.first().toString();
pause;
}
Keywords Class:

Class to list the available functions and keywords in Axapta.

static void KeywordsFunction(Args _args)


{
Keywords objKG = new Keywords();
str strOutput;
;
print Keywords::isValidIdentifier(‘dddd34′); // This method checks if the identifier is valid or nor
print Keywords::isValidIdentifier(‘*4532′);
pause;

strOutput = objKG.firstFunction();
while(objKG.nextFunction()!= ”)
{
strOutput = objKG.nextFunction();
info(stroutput);
}
}

static void KeywordsSymbol(Args _args)


{
Keywords objKG = new Keywords();
str strOutput;
;
strOutput = objKG.firstSymbol();
while (objKG.nextSymbol ()!=”)
{
strOutput = objKG.nextSymbol();
info(stroutput);
}
}

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

How Maintenance Plans needs to be created for a DB


in SQL
January 29, 2010Santosh.R1 comment
For testing any ERP system (i.e. AX, SAP) functionality/performance we require data. Since
dataset plays a vital role in the production environment it would be a good idea if we have a regular
backup of the data. So SQL Server provides one such scheduling known as “Database backup”

Using SQL Server Management- Maintenance Plans we can do Database backup Scheduling. Please
find the attached document which shows “How Maintenance Plans needs to be created for a given
DB”. Maintenance plans through wizard is an easiest option which is available.

Downloading Link: http://cid-


264a0056cbcbb1d3.skydrive.live.com/self.aspx/.Public/ScheduleBackup.doc

Happy AX2010

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Microsoft Dynamics AX 2009 EP Development Cookbook


January 7, 2010Santosh.RLeave a comment

Hi All,

A consolidate EP Development Cook on EP is released.


Folks the AX 2009 EP Cookbook: http://blogs.msdn.com/epblog/attachment/9944064.ashx.
The cookbook talks more about EP development…

Thanks Mey for taking the pain in consolidating EP Development book.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Creating, Processing Cube in Ax2009


December 30, 2009Santosh.R2 comments

Hi all,

The document explains in detail about cube processing and deployment using Ax2009 and BI.

Attached the XPO of PERSPECTIVE for creating cubes.

This document is based on the Ax2009 Help.


It gives an overview of cubes and their roles in business systems.

The document shall be revised in future as additional features to the cubes (as follows) are yet to
be explored:
1. Define Calculations
2. Key Performance Indicators (KPIs)
3. Actions in Cube Designers
4. Create roles to grant access to the cube data

OLAP: http://cid-264a0056cbcbb1d3.skydrive.live.com/self.aspx/.Public/OLAPinAx2009.doc
Perpective: http://cid-
264a0056cbcbb1d3.skydrive.live.com/self.aspx/.Public/Perspective%5E_SalesAnalysisCube.xpo

HaPpy Dax-Cubingggg

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Microsoft Dynamics AX 2009 Development Cookbook


December 24, 2009Santosh.R1 comment

Hi,

Dynamics AX Cook book is a AX2009 Guide.

This book focuses on commonly used custom modifications in major Dynamics AX modules. This book
contains commonly used bits of code which were real-world tested in at least one successful
Dynamics AX implementation. The book should help developers who already know the basics of
Dynamics AX programming to step up to the next level.
What you will learn from this book (As per the publisher of the book)

* Explore data manipulation concepts in Dynamics AX – build data queries and modify the
existing data
* Build scripts to assist data migration processes
* Organize data in Dynamics AX forms
* Enhance your application by using advanced form controls
* Create custom lookups using AOT forms and dynamically generate them from the X++
code
* Create and post Dynamics AX journals from code
* Create and manage purchase and sales orders from code
* Create a custom electronic payment format and process a vendor payment using it
* Integrate your application with Microsoft Office Suite
* Create various MS Office documents that can be used for exporting/importing business data
for further distribution or analysis

Downloading Link

http://www.allbooksfree.net/development-programming-it-software-related-f25/microsoft-
dynamics-ax-2009-development-cookbook-1847199429-t7126.htm.

The above link is obslete now. So uploading the DEV Cookbook into skyDrive for users Reference:

http://cid-264a0056cbcbb1d3.skydrive.live.com/self.aspx/.Public/MicrDynamicAX2009.pdf

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

How to Copy Args Object Data


December 11, 2009Santosh.R1 comment

I was trying to play around with the Args class. I found a class “SysArgs” which can actually be used
to create multiple Args object from a given Args object.

Method “copyArgs” is used for copying an args object data into another args object. Here is the
example which I have tried out.

server static void CopyingArgs(Args _args)


{
FormRun _fr;
SysArgs sysArgs;
;
_args = new Args("CustTable");
sysArgs = SysArgs::createFromArgs(_args);
_fr = classFactory.formRunClass(sysArgs);
_fr.init();
_fr.run();
_fr.wait();
}
Isn’t it a easy of copying an object

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

My Blog – Microsoft Dynamics Related Community Site :)


:) :)
November 25, 2009Santosh.R6 comments

Today I received a mail from MS approving my AX Blog as a Microsoft Dynamics Related Community
site. It gives me immense pleasure to announce you that my blog is a Microsoft Dynamics Related
Community site.

My Microsoft Dynamics Related Community site can be viewed from the following link
https://community.dynamics.com/content/axblogs.aspx?groupid=21

Also a blog post is written introducing me to the MS community:


https://community.dynamics.com/blogs/axnews/archive/2009/11/23/introducing-our-newest-ax-
blogger.aspx

Thank you to one and all for your constant support.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Create/Delete Customer using AIF Service Class in


Dynamics AX
November 16, 2009Santosh.R4 comments

The Application Integration Framework allows us to create/update/delete or read data. Now in


AX2009 we have a facility of creating/deleting records using AIF Service classes. There is "NO
ADDITIONAL AIF SETUP"(Like Enabling Endpoints etc.) required to execute the code via service class.
The services can be used to read/write data in AX.

X++ service class job is illustrated below.

static void Services_CustTable_Create(Args _args)


{
// Customer Service class
CustCustomerService custService;
CustCustomer customer;

// Data object of Service class


CustCustomer_CustTable custTable;
AifEntityKeyList entityKeyList;
AccountNum accountNum;
;

//Service instance
custService = CustCustomerService::construct();

customer = new CustCustomer();


customer.createCustTable();
custTable = customer.parmCustTable().addNew();

custTable.parmName("Cust_Service");
custTable.parmCustGroup("20");
custTable.parmCurrency("EUR");
custTable.parmPartyType(DirPartyType::Organization);
// Create Customer
entityKeyList = custService.create(customer);

if(entityKeyList)
accountNum = entityKeyList.getEntityKey(1).parmKeyDataMap().lookup(fieldnum(CustTable,
AccountNum));
infolog.messageWin().addLine(accountNum);
}

static void Services_CustTable_Delete(Args _args)


{
AifEntityKeyList entityKeyList;
AifEntityKey aifEntityKey;

// Data object of Service class


CustCustomerService custService;
CustTable custTable;
;

aifEntityKey = new AifEntityKey();


entityKeyList = new AifEntityKeyList();
custService = CustCustomerService::construct();

select firstonly custTable


where custTable.Name == "Cust_Service";

aifEntityKey.parmKeyDataMap(SysDictTable::getKeyData(custTable));
entityKeyList.addEntityKey(aifEntityKey);

try
{
// Delete Customer
custService.delete(entityKeyList);
info ("CustTable record was successfully deleted.");
}
catch(Exception::Error)
{
exceptionTextFallThrough();
}
}
SO Creation:

static void Services_SO_Create(Args _args)


{
// Sales Order Service class
SalesSalesOrderService salesService;
SalesSalesOrder salesOrder;

// Data object of Service class


SalesSalesOrder_SalesTable salesTable;
SalesSalesOrder_SalesLine salesLine;
AifEntityKeyList entityKeyList;

SalesId salesId;
;

//Service instance
salesService = SalesSalesOrderService::construct();
salesOrder = new SalesSalesOrder();
salesOrder.createSalesTable();
salesTable = salesOrder.parmSalesTable().addNew();
salesLine = salesTable.createSalesLine().addNew();

// Mandatory data filled for SalesTable


salesTable.parmCustAccount("4000");
salesTable.parmDeliveryDate(today());
salesTable.parmPurchOrderFormNum(‘Test’);

// Mandatory data filled


salesLine.parmItemId(‘B-R14′);
salesLine.parmSalesQty(1);
salesLine.parmSalesUnit(‘Pcs’);

// Create Sales Order


entityKeyList = salesService.create(salesOrder);
if(entityKeyList)
salesId = entityKeyList.getEntityKey(1).parmKeyDataMap().lookup(fieldnum(SalesTable,
SalesId));
infolog.messageWin().addLine(salesId);
}

So services could be used directly to invoke any AIF operation. hAPPy Dax-Bingggggg

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Documentation resources for Microsoft Dynamics


AX 2009
November 14, 2009Santosh.R2 comments

The Technical white paper "Documentation resources for Microsoft Dynamics AX 2009" has been
published. This white paper provides information about the documentation that is available for
users, IT administrators, and developers.

Download Center: http://www.microsoft.com/downloads/details.aspx?FamilyID=f4471844-dc4b-4e19-


b2c9-c19442ab2991
Customer Source:
https://mbs.microsoft.com/customersource/documentation/whitepapers/ax2009_docresources.htm
Partner Source:
https://mbs.microsoft.com/partnersource/deployment/documentation/whitepapers/ax2009_docresour
ces.htm

Technical white paper document provides the links on all of the following in a single click .

 Documentation resource for users.


 Documentation resource for IT Administrator.
 Documentation resource for developers.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

AX Spell Checker Suggestion


November 11, 2009Santosh.R4 comments

“SysSpellChecker” as the name suggest checks the spelling mistake and provides you with the list of
spellings that may be useful or applicable.

Sample job is illustrated using SysSpellChecker class. AX spell checker class is integrated with Word
where methods like below are provided by COM classes.

 activeSpellingDictionary
 Checkspelling
 getSpellingSuggestions
static void SysSpellChecker_AX(Args _args)
{
SysSpellChecker sysSpellChecker;
container spellings;
ListEnumerator listEnumerator;
List spellingsSuggestions;
int i;
;

spellings = ['Tble', 'Comput', 'Mcrosft', 'Rlease'];

// Get AX –> Current Language id


// Construct the sysSpellChecker object.
sysSpellChecker = SysSpellChecker::newCurrentDocumentationLanguage();
startLengthyOperation();

for(i=1; i<= conlen(spellings); i++)


{
if(! sysSpellChecker.checkSpelling(conpeek(spellings, i)))
{
spellingsSuggestions = sysSpellChecker.getSpellingSuggestions(conpeek(spellings, i));
listEnumerator = spellingsSuggestions.getEnumerator();

while(listEnumerator.moveNext())
{
print "Suggested Spellings are:" + listEnumerator.current();
pause;
}
}
}
sysSpellChecker.finalize();

print "Your done with Spell check.";


pause;

endLengthyOperation();
}

Above example is shown using AX class. But using COM class we can still get the suggested spellings
if it’s incorrect.
static void SpellChecker_COM_Word(Args _args)
{
System.Globalization.CultureInfo cultureInfo;

COM wordDocs;
COM languages, language;
COM dictionaries;
COM word;
COM languageDictionary;
COM customDictionary;
COM suggestionsObj;
COM suggestion;

List suggestions = new List(Types::String);


ListEnumerator listEnumerator;

int lines = infolog.line();


int languageId;
int i;

Session session = new Session(sessionid()) ;

void initDictionary(LanguageId _language)


{
Set dictionary;
;

dictionary = new Set(Types::String);

dictionary.add(‘Axapta’);
dictionary.add(‘MorphX’);
dictionary.add(‘Microsoft Dynamics AX’);
dictionary.add(‘Damgaard’);
dictionary.add(‘nbsp’); //HTML nonbreakable space

if (_language == ‘En-Us’)
{
//Often used words added to speed up checking
dictionary.add(‘is’);
dictionary.add(‘isn’);
dictionary.add(‘has’);
dictionary.add(‘hasn’);
dictionary.add(‘was’);
dictionary.add(‘wasn’);
dictionary.add(‘then’);
dictionary.add(‘a’);
dictionary.add(‘in’);
dictionary.add(‘the’);
dictionary.add(‘this’);
dictionary.add(‘not’);
dictionary.add(‘can’);
}
}

cultureInfo = new System.Globalization.CultureInfo(session.interfaceLanguage());


languageId = cultureInfo.get_LCID();

if (!word)
{
try
{
word = new COM(‘Word.Application’);
}
catch (Exception::Internal)
{
infolog.clear(lines);
throw error("@SYS74320");
}
}

//Need to add a document or else Word97 will fail


//the calls to Application.GetSpellingSuggestions
wordDocs = word.documents();
wordDocs.add();
word.windowState(0);
initDictionary(session.interfaceLanguage());

try
{
languages = word.languages();
language = languages.item(languageId);
languageDictionary = language.activeSpellingDictionary();
dictionaries = word.customDictionaries();
customDictionary = dictionaries.activeCustomDictionary();

suggestionsObj = word.getSpellingSuggestions(‘Speling’,
customDictionary,
languageDictionary);
for (i=1; i<=suggestionsObj.count(); i++)
{
word.checkspelling(‘Speling’, customDictionary, true, languageDictionary);
suggestion = suggestionsObj.item(i);
suggestions.addEnd(suggestion.name());
}

listEnumerator = suggestions.getEnumerator();
while(listEnumerator.moveNext())
{
print "Suggested Spellings are:" + listEnumerator.current();
pause;
}

word.quit();
}
catch (Exception::Internal)
{
infolog.clear(lines);
throw error(strfmt("@SYS84011", session.interfaceLanguage()));
}
}
Download Link:http://cid-
264a0056cbcbb1d3.skydrive.live.com/self.aspx/.Public/Job%5E_SpellChecker.zip

Happy Spell check dAXing.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

What is the “Message Limit Of INFOLOG” in


Dynamics AX?
November 2, 2009Santosh.R4 comments

AX Developers just play around with infolog framework provided by Microsoft. But did we ever know
what the maximum limit which an infolog can hold? Well… The answer is quite simple.

Quick Lab:

Run the following job and it would result in the following warning: “The number of messages
exceeds the limit of the Infolog (10000.)”

So maximum “MESSAGE LIMIT OF THE INFOLOG” in AX is 10000(By Default). But wait!!!!!!


you can still increase this limit of an infolog??? By increasing the local constant available inside
the info-class in the method viewBuild (first line). (i.e. #define.MaxErrors(10000))

These messages is generated during the build of the tree, the rest of the Infolog-messages will be
skipped, but are available in the temptable sysinfolog. There is another limit, errorsPerBatch, an
info-method too, this limit will be checked every time you add a message to the Infolog AND during
the build of the tree.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs


Difference b/w SELECT AND FIELDSELECT in
Dynamics AX
October 28, 2009Santosh.R2 comments

Hi,

X++ contains special language feature (i.e. embedded SQL).So we use select query in X++ directly to
fetch/retrieve data.

SELECT in Dynamics AX can be distinguished into two types.


 normal Select
 field Select

There is a difference between a normal select statement and a field select statement:

field select statement normal select statement


This operates directly on a This operates on a table buffer variable. So table buffer should be
table. So table buffer instantiated.
need not be instantiated.
Only the particular field is Whereas in normal select, entire table fields are selected.
selected from the table.
SQL statement: SQL statement:
(CustTable) SELECT (CustTable) SELECT TOP 1
A.ACCOUNTNUM, A.RECID A.ACCOUNTNUM,A.NAME,A.ADDRESS,A.PHONE,A.TELEFAX,A.INVOICEAC
FROM CUSTTABLE A COUNT,
WHERE (DATAAREAID=?) A.CUSTGROUP,A.LINEDISC,A.PAYMTERMID,A.CASHDISC,A.CURRENCY,
ORDER BY A.INTERCOMPANYAUTOCREATEORDERS,A.SALESGROUP,
A.DATAAREAID,A.ACCOUN A.BLOCKED,A.ONETIMECUSTOMER,A.ACCOUNTSTATEMENT,
TNUM [ID=11910, A.CREDITMAX,A.MANDATORYCREDITLIMIT,
Reused=Yes] A.DIMENSION,A.DIMENSION2_,A.DIMENSION3_,A.VENDACCOUNT,
A.TELEX,A.PRICEGROUP,A.MULTILINEDISC,A.ENDDISC,
A.VATNUM,A.COUNTRYREGIONID,A.INVENTLOCATION,
A.DLVTERM,A.DLVMODE,A.MARKUPGROUP,A.CLEARINGPERIOD,
A.ZIPCODE,A.STATE,A.COUNTY,A.URL,A.EMAIL,A.CELLULARPHONE,
A.PHONELOCAL,A.FREIGHTZONE,A.CREDITRATING,A.TAXGROUP,
A.STATISTICSGROUP,A.PAYMMODE,A.COMMISSIONGROUP,
A.BANKACCOUNT,A.PAYMSCHED,A.NAMEALIAS,A.CONTACTPERSONID,
A.INVOICEADDRESS,A.OURACCOUNTNUM,A.SALESPOOLID,A.INCLTAX,
A.CUSTITEMGROUPID,A.NUMBERSEQUENCEGROUP,A.LANGUAGEID,
A.PAYMDAYID,A.LINEOFBUSINESSID,A.DESTINATIONCODEID,
A.GIROTYPE,A.SUPPITEMGROUPID,A.GIROTYPEINTERESTNOTE,
A.TAXLICENSENUM,A.WEBSALESORDERDISPLAY,A.PAYMSPEC,
A.BANKCENTRALBANKPURPOSETEXT,A.BANKCENTRALBANKPURPOSECOD
E,
A.CITY,A.STREET,A.PAGER,A.SMS,A.INTERCOMPANYALLOWINDIRECTCRE
80,
A.PACKMATERIALFEELICENSENUM,A.TAXBORDERNUMBER_FI,
A.EINVOICEEANNUM,A.FISCALCODE,A.DLVREASON,
A.FORECASTDMPINCLUDE,A.GIROTYPECOLLECTIONLETTER,
A.SALESCALENDARID,A.CUSTCLASSIFICATIONID,A.INTERCOMPANYDIRECT
DELIVERY,
A.ENTERPRISENUMBER,A.SHIPCARRIERACCOUNT,A.GIROTYPEPROJINVOI
CE,
A.INVENTSITEID,A.ORDERENTRYDEADLINEGROUPID,A.SHIPCARRIERID,
A.SHIPCARRIERFUELSURCHARGE,A.SHIPCARRIERBLINDSHIPMENT,
A.PARTYTYPE,A.PARTYID,A.SHIPCARRIERACCOUNTCODE,A.PROJPRICEG
ROUP,
A.GIROTYPEFREETEXTINVOICE,A.SYNCENTITYID,A.SYNCVERSION,A.SALE
SDISTRICTID,
A.SEGMENTID,A.SUBSEGMENTID,A.RFIDITEMTAGGING,A.RFIDCASETAGGI
NG,
A.RFIDPALLETTAGGING,A.COMPANYCHAINID,A.MAINCONTACTID,A.COM
PANYIDSIRET,
A.COMPANYIDNAF,A.IDENTIFICATIONNUMBER,A.PARTYCOUNTRY,A.PART
YSTATE,
A.ORGID,A.PAYMIDTYPE,A.FACTORINGACCOUNT,A.PBACUSTGROUPID,
A.MODIFIEDDATETIME,A.CREATEDDATETIME,A.RECVERSION,
A.RECID, A.MEMO FROM CUSTTABLE A WHERE ((DATAAREAID=?)
AND (ACCOUNTNUM LIKE? ESCAPE ‘\’ )) [ID=11873, Reused=Yes]

Example:

Sample job is illustrated above. Have a hAppYyYyYyYyYy dAxzinggggggggg

Share this:
 Share

Like this:

Like Loading...

Categories: X++ stuffs

Get File Encoding in Dynamics AX using X++


October 16, 2009Santosh.R2 comments

Hi All,

Recently there was an interesting query from one of the technical forum.

Publisher: http://objectmix.com/axapta/789064-get-file-encoding.html

Question: How to get encoding file format from xml in Dynamics AX?

Answer: I have created a small class which would retrieve the encoding format of an Xml.

Approach Followed:

 Class receives input file as string.

 Based on the input file, the XmlReader is initialized.

 Xml is read using read () method from XmlReader

 When xmlReader.name () is equal to the XmlEncodingAttribute then encoding format is


returned.

Path: http://cid-
264a0056cbcbb1d3.skydrive.live.com/self.aspx/.Public/Class%5E_RetriveXMLEncodingFormat.xpo

Second part of question is possible convert it to ANSI before reading?

Instead of trying to convert a file in ANSI it would be better we use Binary class to read and write
data in the binary format even though if there is special character in the file. Since reading with
ASCIIIO will only support NON ASCI character so binary is the better option.

Here is the sample example using BinData kernel class:


Happy Daxinggggggggg

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Conduit – Customize Your Own Toolbar


October 1, 2009Santosh.RLeave a comment

Note: Please feel free to use them for your own use with discretion.

Hi All

I have become a user in Conduit!

Well what is Conduit?


It’s a free website which allows creating/customizing your own Toolbar. So we can create our own
free custom toolbar and stay connected to users even if they are surfing other website.

I have created my own toolbar for Dynamics AX which has my blog link as AX icon at the
extreme left corner of the toolbar. Here is the sneak-peak of the toolbar which I have designed

You can also download my Toolbar for your IE or any other browser from the following link
http://dynamicsax.ourtoolbar.com/

Having your own toolbar is always a joy J Why can’t we have it one? Happy
dAXinG…………………………….

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

How to Display Table,Query field value in Xml.


September 29, 2009Santosh.RLeave a comment

Hi Everyone,
In table, query, view we have a system method as xml () which is used to display field value
in Xml. The structure of table/query is created as Xml. This method gives you the feasibility
of populating the fields directly in xML without actually using the xML Classes available in
AX.

Please find the following examples below:

Using Table:

static void TableFieldsAsxML(Args _args)


{
#define.CustAccountNum(’4000′)
#AOT
#define.xmlFileName(‘.xml’)

CustTable custTable;
XmlDocument xmlDocument;
str _xml;
;

xmlDocument = new XmlDocument();

select firstonly custTable


where custTable.AccountNum == #CustAccountNum;

_xml = custTable.xml(1);
xmlDocument.loadXml(_xml);
xmlDocument.save(WinApi::getTempPath() +
#AOTDelimiter +
strins(strrem(xmlDocument.name(), ‘#’), #xmlFileName,
strlen(xmlDocument.name()) + 1));
}
Using Query:

static void QueryAsxML(Args _args)


{
#AOT
#define.xmlFileName(‘.xml’)
#define.CustAccountNum(’4000′)

Query q;
QueryRun qr;
QueryBuildDataSource qbd;
QueryBuildRange qbr;
XmlDocument xmlDocument;
str _xml;
;

q = new Query();
qbd = q.addDataSource(tableNum(CustTable));
qbr = qbd.addRange(fieldNum(CustTable, AccountNum));
qbr.value(#CustAccountNum);
qbd.addSortField(fieldNum(CustTable, Name));
qr = new QueryRun(q);
xmlDocument = new XmlDocument();
_xml = q.xml(1);
xmlDocument.loadXml(_xml);
xmlDocument.save(WinApi::getTempPath() +
#AOTDelimiter +
strins(strrem(xmlDocument.name(), ‘#’), #xmlFileName,
strlen(xmlDocument.name()) + 1));
}

This way you can use the system xml() function view a given file in xml.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

AX Add-ins
September 18, 2009Santosh.RLeave a comment

Coming Soon…………………………….
Add-ins which are useful to Developer

1) Listing Mandatory Fields in tables without actually traversing to AOT.

2) AOT Browser – Without Manual UI Interaction.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Error occurred executing stored procedure when creating


session for the AOS
September 9, 2009Santosh.RLeave a comment

Please Note: All this code snippets are a result of some development that came up from
time to time. Please feel free to use them for your own use with discretion.

In AX2009 I tried manually creating DB and pointing Dynamics server to the created DB.
When trying to start the AX services I ended up facing following errors.

On viewing the event viewer under Application you will clearly see there is a login failure
issue
So you need to manually change the log on password under Dynamics AX service properties. Again
when AX service was restarted there was another error.

In the event viewer you’ll see the following error

What is the error all about?


When AX is installed through setup.exe, stored procedures are internally created for
the Database. The two stored procedures that gets created are
 CREATESERVERSESSIONS
 CREATEUSERSESSIONS  This creates the User Session
So when DB is created manually in SQL, the stored procedure is not available because
of which AX service is not started successfully.

Solution:
For the DB which are created manually make sure you create the stored procedure
successfully in order to point to AX server.

STORED PROCEDURE FOR CREATESERVERSESSIONS


http://cid-
264a0056cbcbb1d3.skydrive.live.com/self.aspx/.Public/CREATESERVERSESSIONS.sql

STORED PROCEDURE FOR CREATEUSERSESSIONS


http://cid-264a0056cbcbb1d3.skydrive.live.com/self.aspx/.Public/CREATEUSERSESSIONS.sql

Run the stored procedure SCRIPTS and then try to restart AX service. You’ll successfully be
able to point to the newly created Database.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

AIF Outbound Setup in AX2009


July 15, 2009Santosh.RLeave a comment

Usage of AIF in AX is increasing day by day. I have taken the pain of explaining the outbound
setup process in AIF using File System Adapter.
Path to Download the Setup:

http://cid-264a0056cbcbb1d3.skydrive.live.com/self.aspx/.Public/AIF%7C_Ax2009.docx

This document explains in depth process involved for configuring AIF. AIF in comparsion to
AX2009 with AX40 has improved features.

 Actions which were used in AX40 is now scrapped in AX2009 and is completely dealt
with web service
 Create; read, update, and delete (CRUD) operations are now supported.
 The programming model for AIF supports document services that encapsulate
business logic and are the interface to external systems.
 AIF provides functionality for consuming external Web services from within X++.
 Performance improvements include the ability to scale up and handle more
messages through parallel message processing and the addition of multiple AOSs.
 New document services for additional commonly-used documents.

The AIF architecture showing the transport layers above and the business logic layers
below.
Consuming Web Services in Microsoft Dynamics AX 2009 White Paper (By Sanjay Jain)

http://www.microsoft.com/downloads/details.aspx?FamilyID=ef3a50d2-61c8-4ffc-bce8-
2caf038f98cd&displaylang=en

Microsoft Dynamics AX 2009 Server and Database Administration Guide

http://www.microsoft.com/downloads/details.aspx?FamilyId=E7BFB7A8-EB99-4171-B75A-
D9A37067BC19&displaylang=en#filelist
The above link explains the BATCH CONFIGURATION FOR AIF.

In future I would also be adding the process involved for Configuring and Processing Inbound
through AIF

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Enable/Disable keys using Task Macro in Dynamics AX


July 9, 2009Santosh.RLeave a comment

Hi,
Back again with one more small trick . How to restrict access for users perform any task
on AX forms? I tried implementing this using Task macro. Here is the detailed procedure for
it.

In AOT Task Macro (\Macros\Task)

 Define Task-ID values, to be used with form Control’s

Note: To know any task id in AX. Put the debugger in the \Classes\SysSetupFormRun\task
and observe the watch window for the value of _p1 (task id)
 Now place the following code in \Classes\SysSetupFormRun\task before super() call

//Disable Hide/Setup/Go to Main Table Task


if (_p1 == #taskFilterHide || _p1 == #taskFilterSetup || _p1 == #taskMainTable)
{
Box::info ("@SYS81158", strfmt ("@SYS72189"));

if (DialogButton::Ok)
return 0;
}

Now if any of above action is performed then user will end up seeing no access rights .

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs


Error: Cannot execute a data definition language
command on ().
July 1, 2009Santosh.RLeave a comment

Hi All,
I would like to share a job which i found in a technical forum. Most of us would
have ran into issue "SQL database error" when data is loaded in Dynamics AX. In order to fix
it please run through the job found in the attached link.

http://axforum.info/forums/showthread.php?t=16251&highlight=execute+data+definition+language
+command.

Happy dAxInG…………….

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Configuration Key Status Using X++ Code


June 18, 2009Santosh.RLeave a comment

As we are aware, Configuration key controls access to specific feature. To know about the
status of a configuration key, the user has to traverse Administration->Setup->System->
Configuration.
Instead with the following job, a user can know the status of all the configuration keys that is
being used in the system.

//Configuration key names and their enable state.


static void ConfigurationKey(Args _args)
{
ConfigurationKeySet configKeySet;
DictConfigurationKey dictConfigKey;
Object formRun ;
Map mapConfigKey;
str strOutput;
int i;
;

mapConfigKey = new Map(Types::Integer, Types::String);


configKeySet = new ConfigurationKeySet();
configKeySet.loadSystemSetup();

for (i=1; i <= configKeySet.cnt(); i++)


{
dictConfigKey = new DictConfigurationKey(configKeySet.cnt2Id(i));
strOutput = dictConfigKey.enabled() ? "enabled:" : "disabled:";
strOutput += " " + " " + dictConfigKey.name();
mapConfigKey.insert(i, stroutput);
}

_args = new Args(formstr(SysPick));


_args.parmObject(mapConfigKey);

formRun = classfactory.formRunClass(_args);
formRun.init();
formRun.run();

formRun.setCaption(‘ConfigurationKey Status’);
formRun.wait();
}

On executing this job, the output will be displayed in a SysPick form

Share this:
 Share

Like this:

Like Loading...

Categories: X++ stuffs

Validating TabPage Fields Dynamically


June 15, 2009Santosh.RLeave a comment

This article is to my lovable sweetheart AnithaSantosh.

I would like to share a small piece of information on validation stuff at form level. The
requirement is something like doing basic validation. All fields at the form level needs to be
filled in; else it needs to update the user that the specific fields’ information is missing.

All the field validation is basically done at the table validate Field method. If the form design
is changed time to time then the code also needs to be updated which isn’t a good practice.

I took a small example to showcase how we can achieve the requirement.

I have custTable form which maintains customer details and payment is important
information which is required when we make any sales order. If the basic payment
information is not filled in while creating customer details then system has to update the
user that all details under payment tab needs to mandatorily filled in.

1) Set Auto declaration to ‘Yes’ for payment Tab under custTable form design
2) Under validateWrite of the custTable datasource add the following logic.

for (i=1; i<= payment.controlCount (); i++)


{
if (payment.controlNum (i).valueStr () == ”)
{
warning (strfmt ("%1, %2, %3", i, strdel (payment.controlNum (i).name (), 0, 8),
‘Mandatory to be filled in.’));
}
}
So basically before the Cust details are saved it checks whether all fields under payment Tab
is filled else it will throw warning will the furnished details.
Note: No. indicates fieldNum

This is just a basic information which i felt would be useful tip Happy Daxingggg

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Inside Microsoft Dynamics AX 2009 – Released


May 25, 2009Santosh.RLeave a comment
A big Thanks to MFP and Arjit for their contribution on the release of latest edition on "Inside

Microsoft Dynamics AX 2009".

To Download Code Samples:


http://www.microsoft.com/learning/en/us/book.aspx?ID=13345&locale=en-us#tab2
Happy DAx Learning……………………………

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

SalesTaxGroup Defaulting Issue in AIF 2009


May 22, 2009Santosh.RLeave a comment
I have seen a strange behaviour in AX 2009. While processing vendor records via AIF the
corresponding sales tax group doesn’t default in the vendor master. VendGroup master table has
default tax group setup done as shown

When “Vend Group” is passed via Xml accordingly the related fields needs to get defaulted.
Screenshot on the same is shown.

Reason: There is no defaulting logic implemented in the setTaxGroup () method in the AxVendTable
class.

Solution: The setTaxGroup () method needs to implemented with the following logic after
isMethodExecuted called.

The setTaxGroup () method needs to implemented with the following logic after isMethodExecuted
called.

//Checks if VendGroup is provided in Xml.


//If no VendGroup then it throws error stating mandatory field missing.
this.setVendGroupFields ();

//Checks if <VendGroup> field is set in the Xml


//And check if the vendor group master has TaxGroupId defined for it.
If (this.isFieldSet (fieldnum (VendTable, VendGroup)) &&
this.vendGroupRecord ().TaxGroupId)
{
this.parmTaxGroup (this.vendGroupRecord ().TaxGroupId);
}

With the following piece of code the sales tax group will be defaulted in the vendor master details.
Even Customer master has similar issue and i assume Microsoft would either release a hot fix for
AX2009/resolve the bug in vNext

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Editor Scripts – New Addins


May 18, 2009Santosh.R1 comment

I have developed few interesting add-ins for Dynamics AX as a part of my project


requirement. This tool would be useful especially for AX Developers.

The tool is basically an extension in the Editor scripts class.


ShowSysFuntions: It is used to show details of sysFunction in Microsoft Dynamics AX. In
order to know significance of a particular function the developer needs to traverse through
SysDocumentation\Functions each time. Functions help is displayed in a help browser just
like the in-built functions in Dynamics AX.

SysFunction Sneak Peak Video:

The second Editor Script is using the SysDictClass methods


a) Extend
b) Extended By

Extend: Provides the ID for the class that a specified ExtendedBy: Provides a List Class object for the
class extends. that extend a specified class.
Example: Take SalesFormLetter_Invoice class. It gives Example: Take the same SalesFormLetter_Invoic
list which gets inherited from these classes. It would provide details of the child class which
extending this class.

The project can be in the following link

http://cid-
264a0056cbcbb1d3.skydrive.live.com/self.aspx/.Public/PrivateProject%5E_ShowSystemFunc
tions.xpo

Happy AX Scripting

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Microsoft Dynamics AX 2009 Enterprise


Portal Deployment
May 12, 2009Santosh.RLeave a comment

Thanks to Mey for providing an opportunity to join an administrator oriented Deployment and Setup
discussion on Enterprise Portal for Microsoft Dynamics AX 2009.

In his own words


"This session provides deep insight into the EP deployment process, what goes behind the scene for
EP Setup program and some key "how-to" points on deploying and setting up EP, understanding the
infrastructure, etc."

Screencast is posted on

Webinar: http://channel9.msdn.com/posts/meysun/Microsoft-Dynamics-AX-2009-Enterprise-Portal-
Deployment/

Presentation[PPT]: http://blogs.msdn.com/solutions/attachment/9584167.ashx

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Generating XML for Excel import – via Definition Group


May 11, 2009Santosh.RLeave a comment

As a business partner you may require different ways of sending records as xML outside AX. Here is
one such customization, which was done in the Excel Definition group to outbound an xML when
record is inserted into the table.

We have used the existing logic present in AIF to publish the records when Excel records are
imported through Definition group. Please find the detailed procedure on the same.

1) Create new Definition group <<Eg. COA>> of type “Excel”


2) Specify the Default file name from where the excel records needs to be imported.
3) Click on Table setup and specify the name of table for which it needs to import.
<<Here i have choosen "LedgerTable" to import records.>>
4) Set the "Import Status" to "Import"
5) Specify the path from the where the excel need to pick the file.
Link: http://cid-264a0056cbcbb1d3.skydrive.live.com/self.aspx/.Public/Tst.xls
Here you can find the sample Excel file which i have created for my customization.
6) Under Import criteria of the Table setup form.
Logic which was implement in Ledger Table in order to support outbound operation when excel
import is performed is shown below.

Before Excel import is perform make sure that basic AIF setup is done for DynamicsAX 2009. Later
you’ll observe a record in the queue Manager. Just run the AIF Inbound job and record will be sent
out.

Hurray a new means of data exchange using definition group.


Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Create and Post Free Text Invoice in AX


May 7, 2009Santosh.RLeave a comment

Here is a sample class which is called via Dialog framework to create & post free text invoice using
X++ code.

Job:
public void xtest()
{
Dialog dialog;
DialogField dlgCustAcc;
DialogGroup dialogPeriodLengthGroup, dialogPeriodLengthGroup1;
DialogField dlgLedgerAcc;
;
dialog = new Dialog("Free-Text Invoice");
dialogPeriodLengthGroup1 = dialog.addGroup(‘Cust Table’);
dlgCustAcc = dialog.addField(typeid(CustAccount));
dialogPeriodLengthGroup = dialog.addGroup(‘Ledger Table’);
dlgLedgerAcc = dialog.addField(typeid(LedgerAccount));

if(dialog.run())
{
if(dlgCustAcc.value() && dlgLedgerAcc.value() != ”)
FreeTxtInvoiceCreatePost::main(dlgCustAcc.value(), dlgLedgerAcc.value());
else
throw error(strfmt("Either CustAccount or LedgerAccount info is missing."));
}
}

/// <summary>
/// The <c>Job_FreeTxtInvoice</c> class is implemented to create/post <c>Free Text
Invoice</c>.
/// </summary>
class FreeTxtInvoiceCreatePost
{
}

static void main(CustAccount _custAccount, LedgerAccount _ledgerAccount)


{
CustInvoiceTable custInvoiceTable;
CustInvoiceLine custInvoiceLine;
CustTable custTable;
LedgerTable ledgerTable;
CustPostInvoice custPostInvoice;
LineNum lineNum;
int i;
;

/// <summary>
/// The <c>CustInvoiceTable</c> logic is implemented to create single <c>Header</c>.
/// </summary>
ttsbegin;
custTable = CustTable::find(_custAccount);
custInvoiceTable.initFromCustTable(custTable);
custInvoiceTable.insert();
ttscommit;

/// <summary>
/// The <c>CustInvoiceLine</c> logic is implemented to create multiple <c>Invoice
Lines</c>.
/// </summary>
for(i=1; i<=100; i++)
{
ttsbegin;
ledgerTable = LedgerTable::find(_ledgerAccount);
custInvoiceLine.clear();
custInvoiceLine.initValue();
custInvoiceLine.LedgerAccount = ledgerTable.AccountNum;
custInvoiceLine.initFromCustInvoiceTable(custInvoiceTable);
custInvoiceLine.AmountCur = 10.00;
custInvoiceLine.Description = ‘FreeTxIv’ + int2str(i);
custInvoiceLine.TaxItemGroup = ‘full’;
custInvoiceLine.ParentRecId = custInvoiceTable.RecId;

//LINE NUM LOGIC.


if(!lineNum)
{
lineNum = CustInvoiceLine::lastLineNum(custInvoiceLine.ParentRecId);
}

lineNum += 1;
custInvoiceLine.LineNum = lineNum;
custInvoiceLine.insert();
ttscommit;
}

/// <summary>
/// The <c>custPostInvoice</c> class is called for posting <c>Free-TextInvoice.</c>
records.
/// </summary>
custPostInvoice = new CustPostInvoice(custInvoiceTable);
custPostInvoice.run();
}

You can even just play around with RunBase framework to invoke the dialog and
pack/unpack the values. Try to check the example ‘LedgerPeriodCreateFiscalYear’ class.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Posting Issue in FreeText Invoice with same Item sales tax


group on AX2009.
May 2, 2009Santosh.RLeave a comment

When free text invoice is created via AIF with the same “Item sales tax group” and later try
to post the free text invoice the following error message is encountered….

Sample xML:

<? xml version="1.0" encoding="utf-8"?>


<CustInvoice xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/CustInvoice"&gt;
<CustInvoiceTable class="entity">
<CurrencyCode>USD</CurrencyCode>
<InvoiceAccount>4000</InvoiceAccount>
<InvoiceDate>2009-02-16</InvoiceDate>
<OrderAccount>4000</OrderAccount>
<CustInvoiceLine class="entity">
<AmountCur>100</AmountCur>
<Description>Line 1</Description>
<LedgerAccount>11005</LedgerAccount>
<TaxItemGroup>full</TaxItemGroup>
</CustInvoiceLine>
<CustInvoiceLine class="entity">
<AmountCur>200</AmountCur>
<Description>Line 2</Description>
<LedgerAccount>11010</LedgerAccount>
<TaxItemGroup>full</TaxItemGroup>
</CustInvoiceLine>
</CustInvoiceTable>
</CustInvoice>

These error is observed because the Line num is never incremented and is always zero for all
invoice lines.

Screenshot showing the LineNum  0


The solution provided to fix the issue is similar to the logic implemented in AxSalesLine
class , SalesLine table.

Changes which needs to be incorporated are….

\Data Dictionary\Tables\CustInvoiceLine:
Create new method:
static LineNum lastLineNum (CustInvoiceTableRefRecId custInvoiceTableRefRecId)
{
return (select maxof (LineNum) from CustInvoiceLine
index hint ParentRecIdIdx
where CustInvoiceLine.ParentRecId == custInvoiceTableRefRecId).LineNum;
}

Classes\ AxCustInvoiceLine
ClassDeclaration: Initialize the EDT LineNum

SetlineNum: Add the following logic


this.setParentRecId ();
if (this.isFieldSet(fieldnum(CustInvoiceLine, ParentRecId)))
{
if(!lineNum)
{
lineNum = CustInvoiceLine::lastLineNum (this.parmParentRecId());
}
lineNum += 1;
this.parmLineNum (lineNum);
Over-ride the end method () in the AxCustInvoiceLine. After super () call initialize the
lineNum = 0. Now try posting the free text invoice which was created via AIF. With the follwing code
the LineNum is incremented as a result the free text invoice is posted successfully.

Hope this article is useful

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Migrax – Tool to do Code Upgrade


April 22, 2009Santosh.RLeave a comment

Recently at Convergence-2009 held in New Orleans an interesting external application was


launched – Migrax.

What is migrax?

Migrax assist in migrating AX solutions from version 3 and version 4 to AX2009. Its tool for
code migrations of Microsoft Dynamics AX. A systematic approach is followed to do code
upgrade. Please visit MFP Blog http://blogs.msdn.com/mfp/archive/2009/03/06/migrax-tm-
a-new-way-to-do-code-upgrade.aspx

Check-out Migrax site: http://www.migrax2009.com/


Migrax Virtual Tour: http://www.migrax2009.com/index.php/take-the-virtual-tour.html

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

AX Application Launcher
March 31, 2009Santosh.RLeave a comment

Hi Friends,

I would like to share an interesting tool which was released recently by Arjit Basu.
[Purpose]: How to efficiently maintain multiple AX Configuration?

Here is the answer to it……….


Maintaining multiple AX instances Configuration in any implementation like Development,
Test and Production environment is quite confusing and often becomes difficult to manage.
Arjit has introduced “AX Launcher Tool” which can be installed on each user machine from
where we can launch any required configuration.

Here is sneak peak of the AX Application Launcher tool.


Please visit http://daxguy.blogspot.com/2009/02/ax-application-launcher.html to know
more about AX Launcher.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Significance of “Conversation Id” entity tag in the XML


January 29, 2009Santosh.RLeave a comment
The conversation ID is used for parallel processing. This is an option flag as defined in
Message schema (XSD).

Option flag can be found from


<Drive>:\Program Files\Microsoft Dynamics AX\50\Application\Share\Include
<xsd: element name="ConversationId" type="ConversationIdType" minOccurs="0"/>
Messages having different conversation ID’s will be processed in parallel. Messages having
the same Conversation ID are processed sequentially in the order they are received. For
example if you submitted the following messages in the specified order

Message ID Conversation ID

1 5

2 5

3 6

4 7

5 8

6 *

7 *

8 *

So Messages 1,3,4,5,6 all have unique conversation IDs and would be processed in parallel
(at the same time). Messages 1,2 have the same ID, as do messages 6,7,8 (* is the default
conversation ID that will be inserted automatically on files that come in through a non-
parallel channel). The messages with the same ID’s have to wait until previous messages
with that ID are processed. So once message 1 is processed, message 2 will be processed (1
and 2 are in the same parallel conversation), and likewise when message 6 is done, then 7
and then 8 after that.

Advantage:
 Enable the processing of messages in parallel to improve performance.
For more on parallel processing/Conversation ID refer: Parallel Processing and Conversation
ID

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs


Filter By Grid – AX2009 Addins
January 29, 2009Santosh.RLeave a comment

Filtering records in AX:

Every developer working for AX will know using (Ctrl + G) keystroke is a


simple way to filter records & this has been the approach for quite some years or @least till AX40.
Now AX2009 offers a built in feature, enabling "Filter By Grid On By Default" would display the cue
on the form on every grid.

Here is the how we do the same.

Go to Tools >> Options >> General Tab >> Check "Filter By Grid On By Default” under Grid.

Advantages:

1) Design to mainly reduce the time.

No need to manually press the Ctrl + G option to filter multiple records or we need to forcibly write
logic in the form data source to filter grid records.

2) User Friendly and so on.

Forms viewed in AX will have a slight change in the design pattern with the grid option readily
available for the end users.
Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Suppressing Infolog message in Dynamics AX2009


December 30, 2008Santosh.R1 comment

This article is posted based on the requirement, we had an issue of executing AX report
which would always result in an infolog stating as "The Report is scaled 88% to fit to page."
When going through certain articles in the google, the generic way given to supress an infolog was by
calling this.printJobSettings().suppressScalingMessage(true) at init method of report after super() call
in SysReportRun/runReport class. But to my requirement it actually didn’t work in AX009. So i tried in
a different manner.

Here is the ways by which we can force the client report to suppress the infolog after report is
executed

1) In the init method of the <<Report>> after super call use the following code

element.printJobSettings().clientPrintJobSettings().suppressScalingMessage(true);

2) Setting the ReportDesign properties "FitToPage" to "No".

By the above option there is no need of any addition code in the init() nethod of the report.

I’m not sure why element.printJobSettings().suppressScalingMessage(true) doesn’t work in the first


place when call through init method of the <<Report>> after super. Any how i hope to do further
research and will find the exact reason behind this issue.

………………………………….. (will be continued)

Share this:
 Share

Like this:

Like Loading...

Categories: X++ stuffs

Classes “RunOn: Server” in Dynamics AX


December 10, 2008Santosh.R1 comment

Here is the sample job which gives the details list of classes called on "Server".

static void Classes_CalledOnServer(Args _args)

#AOT

TreeNode treeNode;

str property = ‘RunOn‘; [Property Name in Property Sheet]

str propertyValue = ‘Server‘; [Property Value]

treeNode = TreeNode::findNode(#ClassesPath).AOTfirstChild();

while (treeNode != null)

if (treeNode.AOTgetProperty(property)== propertyValue)

// Displays the output into Message Window.

//Debug::printTab(DebugPrintTab::ActiveX, treeNode.AOTname()); This is unable to list all


classes. So replace with below
info(treeNode.AOTName());

treeNode = treeNode.AOTnextSibling();

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Dynamics AX2009 Convergence 2008 – Copenhagen


November 16, 2008Santosh.RLeave a comment

Convergence will take


place in Copenhagen, Denmark on 19-20 November 2008.

Convergence Overview – [Microsoft in their own words....]

Convergence is the premier Microsoft Dynamics event, bringing customers, partners, team members
and industry experts together in an environment created for you to discuss solutions, address
business needs and establish a true community that can be leveraged throughout the year.

Convergence 2008 Agenda


Please find the "Agenda of the Convergence 2008" meet for Microsoft Dynamics2009

http://www.microsoft.com/Dynamics/convergence/copenhagen/2008/agenda.aspx

Session Catalog

In Convergence 2008 Copenhagen session catalog, you’ll find a comprehensive listing of


all Interactive Discussion sessions for you to preview and plan for prior to attending.

Few of the Dynamics AX2009 session is as follows:

 New Supply Chain Management Features in Microsoft Dynamics AX 2009

Wednesday, 19 November 15:00 – 16:00

Speaker(s): Frank Dahl, Per Lynnerup

 New Supply Chain Management Features in Microsoft Dynamics AX 2009

Thursday, 20 November 12:00 – 13:00

Speaker(s): Frank Dahl, Per Lynnerup

 Multisite Supply Chain Management using Microsoft Dynamics AX 2009

Thursday, 20 November 09:00 – 10:00

Speaker(s): Soren Andersen, Johan Hoffman, Thomas Vest

 Streamlining the Procurement Process using Purchase Requisitions and Requests For Quote
(RFQ) in Microsoft Dynamics AX 2009

Wednesday, 19 November 16:30 – 17:30

Speaker(s): Anthony Bernard

 Streamlining the Procurement Process using Purchase Requisitions and Requests For Quote
(RFQ) in Microsoft Dynamics AX 2009

Thursday, 20 November 12:00 – 13:00


Speaker(s): Anthony Bernard

 New Costing Methods in Microsoft Dynamics AX 2009

Thursday, 20 November 14:00 – 15:00

Speaker(s): Anders Even Girke

 Building Business Integrations with Microsoft Dynamics AX 2009

Thursday, 20 November 09:00 – 10:00

Speaker(s): Michael Merz, Chandramouli Venkatesh

 Introduction to Expense Management, with the Latest in Project Accounting for Microsoft
Dynamics AX 2009

Thursday, 20 November 15:30 – 16:30

Speaker(s): Dan Schuster, Scott Tucker

 Managing Compliance and Environmental Sustainability Using Microsoft Dynamics AX

Thursday, 20 November 14:00 – 15:00

Speaker(s): David Probst, Evelyn Simmers, S Sridhar

 Performance Management and Reporting for Microsoft Dynamics AX Financials

Thursday, 20 November 15:30 – 16:30

Speaker(s): Ryan Sandness

 Data Management: Intelligent Data Management, Purge and Archive Capabilities

Thursday, 20 November 12:00 – 13:00

Speaker(s): Sri Srinivasan

 Microsoft Dynamics AX 2009 Enterprise Portal and Role Centers

Thursday, 20 November 14:00 – 15:00

Speaker(s): Thomas Ejby, Mey Meenakshisundaram

 Microsoft Dynamics AX 2009 Overview


Wednesday, 19 November 13:30 – 14:30 Thursday,
Thursday, 20 November 10:30 – 11:30
Speaker(s): Raphael Bres, Lachlan Cash, David Probst
 Financials in Microsoft Dynamics AX 2009

Thursday, 20 November 10:30 – 11:30

Speaker(s): Michael Falkner, Ingeborg Heinrich, Jill Inman

More details on the sessions can be found in


https://emea.msconvergence.com/Public/_Sessions.aspx

Official Sponsorship and Exhibitor – Convergence 2008 Copenhagen

http://www.microsoft.com/Dynamics/convergence/copenhagen/2008/exhibitors_sponsors.aspx

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Customize your Own sysPickListForm


October 2, 2008Santosh.RLeave a comment

Here is a small job which will explain how to add a map object to the sysPickList form. After executing
the job you’ll observe something like this
static void SysPickList_Map(Args _args)

Map s = new Map(Types::Integer, Types::String);

Object formRun;

//Add values to the set

s.insert(1, ‘Santosh.R’);

s.insert(2, ‘Chaitanya G.S.S’);

s.insert(3, ‘Sampath.B’);

s.insert(4, ‘Madan.T’);

s.insert(5, ‘Chaitanya.P’);

s.insert(6, ‘Veeresh.J’);

s.insert(7, ‘Naveen’);

_args = new Args(formstr(SysPick));

_args.parmObject(s);

formRun = classfactory.formRunClass(_args);

formRun.init();

formRun.run();

// Returns the sysPick Caption.

formRun.setCaption(‘Set PickList’);

formRun.wait();

}
For any further reference try to research the Global class & function in AX which explains how can
the sysPick be used.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Talking about Adding extra elements to XML string


in AIF
September 18, 2008Santosh.RLeave a comment

Hi, I recently found a very good article from Sumit Loya’s Blog on AxD "How extra elements
can be added to the XML string in AIF".
Thanks a lot Sumit for this wonderful article .

Quote

Adding extra elements to XML string in AIF

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

How to perform Inbound & Outbound without AIF setup


September 11, 2008Santosh.R2 comments
Hi……For sending/receiving any XML the Dynamics AIF Framework is used. There is an alternate
way of doing the same operation without AIF setup. Please find the below examples for all the actions.

Example: Read
static void VendorOutbound(Args _args)
{
AxdVendTable axdVendTable;
AifEntityKey entityKey = new AifEntityKey();
AifPropertyBag aifPropertyBag;
VendTable vendTable;
XmlDocument xmlDocument = new XmlDocument();
;
select firstonly vendTable;
entityKey.parmKeyDataMap(SysDictTable::getKeyData(vendTable));
axdVendTable = AxdBase::newClassId(classnum(AxdVendTable));
xmlDocument.loadXml(axdVendTable.read(entityKey, null, new AifEndpointActionPolicyInfo(), new
AifConstraintList(), aifPropertyBag));
xmlDocument.save(‘c:\\AxdServiceOrder_Out1.xml’);
}

Example: Create
static void createInboundProjectHourJournal(Args _args)
{
AxdProjectHourJournal axdProjetcHourJournal;
XmlDocument xmlDocument;
AifEndPointActionPolicyInfo endPointAction = new AifEndPointActionPolicyInfo();
AifConstraintList aifConstraint = new AifConstraintList();
AifDocumentXml xmlDoc;
;

xmlDocument = new xmlDocument();


xmlDocument.load("c:\\ProjectHourCreate.xml");
axdProjetcHourJournal = AxdBase::newClassId(ClassNum(AxdProjectHourJournal));
xmlDoc = xmlDocument.toString();
axdProjetcHourJournal.create(xmlDoc, endPointAction, aifConstraint);
}

Example: CreateList
static void createListInboundServiceOrder_Item(Args _args)
{
AxdServiceOrder axdServiceOrder;
XmlDocument xmlDocument;
AifEndPointActionPolicyInfo endPointAction = new AifEndPointActionPolicyInfo();
AifConstraintListCollection aifConstraint = new AifConstraintListCollection();
AifDocumentXml xmlDoc;
;

xmlDocument = new xmlDocument();


xmlDocument.load("c:\\AxdServiceOrderCreate.xml");
axdServiceOrder = AxdBase::newClassId(ClassNum(AxdServiceOrder));
xmlDoc = xmlDocument.toString();
axdServiceOrder.createlist(xmlDoc, endPointAction, aifConstraint);
}

Example: Update
static void updateInboundServiceOrder_Item(Args _args)
{
AxdServiceOrder axdServiceOrder;
XmlDocument xmlDocument;
AifEndPointActionPolicyInfo endPointAction = new AifEndPointActionPolicyInfo();
AifConstraintListCollection aifConstraintC = new AifConstraintListCollection();
AifConstraintList aifConstraint = new AifConstraintList();
AifDocumentXml xmlDoc;
AifEntityKey entityKey;
;

xmlDocument = new xmlDocument();


xmlDocument.load("c:\\axdServiceOrderInventDim.xml");
axdServiceOrder = AxdBase::newClassId(ClassNum(AxdServiceOrder));
xmlDoc = xmlDocument.toString();
axdServiceOrder.update(entityKey, xmlDoc, endPointAction, aifConstraint);
}

Example: Delete
static void deleteServiceOrder(Args _args)
{
AxdServiceOrder axdServiceOrder;
AifEntityKey entityKey = new AifEntityKey();
AifEntityKeyList entityKeyList = new AifEntityKeyList();
AifPropertyBag aifPropertyBag;
SMAServiceOrderTable sMAServiceOrderTable;
XmlDocument xmlDocument = new XmlDocument();
;

select firstonly sMAServiceOrderTable where sMAServiceOrderTable.ServiceOrderId ==


’0000083_SO’;
entityKey.parmKeyDataMap(SysDictTable::getKeyData(sMAServiceOrderTable));
axdServiceOrder = AxdBase::newClassId(classnum(axdServiceOrder));
entityKeyList.addEntityKey(entityKey);
axdServiceOrder.deleteList(entityKeyList , new AifEndpointActionPolicyInfo(), new
AifConstraintListCollection());
}

Hope this piece of information was useful…

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

AIF Error: The parameter schema could not be found


for EndpointId
September 5, 2008Santosh.R2 comments
The above error message will be observed in Queue Manager whenever an outbound action is
performed. [Pre-requisites: AIF is configured properly for a File System Adapter]

The above error message is because is “Data policies is not configure for the specified action/service
in the Endpoint Action Policies form. So once Action policy is configure for an outbound service make
sure that at least once you click Data policies so that particular ClassName, Document Name & Action
gets updated in “AifEndpointActionParameterSchema” form(As shown below) .

Now try performing an outbound action and this time you will not observed the error   

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

AIF Tit bits


September 2, 2008Santosh.RLeave a comment

Most of us would have used “Send Electronically” to send data as XML across
Company (or) external systems. The common Actions/Services which are used to
perform an Outbound action with Application Integration Framework are

 findEntityKeyList

 findList

 read

 readList
But do we know what is the Significance of read & findList action
“readChartOfAccounts” : If send electronically is triggered on ChartOfAccounts
with the specified action/service you’ll observe the following error

This is because the “read” action is called on special cases like sending invoice,
pickingList data. Sending electronic information as “SendXMLOriginal” or as
“SendXMLDuplicate”.

If Send Electronically is:

Button type always use the “find” action.


MenuButton(MenuSendXML)type always use the “read” action.

For a given AxD if AxdSend class is implemented then “find” action is used.
Similarly if DefaultSendAction is used then use "read" action. This scenario is
implemented in case of Table.

Hope this piece of information share was useful.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Hide Navigation Pane using X++ code in Dynamics AX


August 6, 2008Santosh.RLeave a comment

Does someone know how to Hide Navigation pane using any security settings (or) using X++ code. Here is the
simple example on the same.

Hide Navigation Pane can be performed in three ways

 Using xInfo
 Using xNave (Both of these classes can be found in SystemDocumentation)
 Infolog

You may try something like this

static void HideNavPane(Args _args)

{
xInfo info;
;

info = new xInfo();


info.navPane().navPaneVisible(false);

(or)

infolog.navPane().navPaneVisible(false)
}

You may also try calling directly using


xNavPane.favPaneVisible(false) to disable "Favourite Menu"

Similiar things can be performed for "Context Menu" and "Area Pages".

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Configure Language using Dynamics AX


Configuration utility
August 2, 2008Santosh.R2 comments

Demand for a user friendly ERP is increasing day by day. Since the usage of any ERP product
is worldwide it has become a necessity that it should support multiple languages. Dynamics
AX is one such ERP, which is more user friendly and flexible. The product is available in
different languages and to name a few are German, Arabic, Chinese etc.

Microsoft is targeting to support AX in local languages like Hindi, Telugu,


Tamil etc. In AX2009 you can find all the supported language in the Language Macro.

Setup:

Create a new config file from the Microsoft Dynamics AX Configuration utility (axclicfg) as
languages.axc Set the “Configuration command to run at kernel startup:” to -language =
<language> Example: -language = DE
Now start you AX Client and you’ll find AX in German language. The following line also
enables to view AX client with different language without any setting in config file.
Infolog.language(‘DE’)

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Microsoft Dynamics AX 2009 White Paper: Team


Foundation Server Version Control Setup
July 28, 2008Santosh.RLeave a comment

This document explains version control system for Microsoft Dynamics AX 2009 using Microsoft Visual Studio
Team Foundation Server.

Overview:
Installation and configuration of version control for Microsoft Dynamics AX 2009 using
Microsoft Visual Studio Team Foundation Server.

Topics Covered :

 Setup Version control parameters.


 Configuring Global Version Control system Settings (SQL/Oracle)
 How to create a Reprository

References: Team Foundation Server Version Control Setup White paper for Microsoft Dynamics AX
2009

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs


Dynamics AX – How to Upgrade an Item in Picking List
Registration form
July 26, 2008Santosh.RLeave a comment

Business Scenario:
In the “Picking List Registration” form, why the Update  Update All group is disable. I
finished the picking list previously and found in the picking list registration form the handling status value is
“Complete”

How to let my update all item to be enabled?

You might think why do we need to update the Item for which the picking List is already done.

Well, the answer is to change & update the quantity of an Item in the Picking List Registration form.

Solution:
Functionally Dynamics AX does not allow you update the quantity for an Item if the handling status
value is “Complete” in “Picking List Registration” form.

Setup:
Here is the simple setup that needs to made in the AR parameters to upgrade an Item in Picking List
Registration form.

Accounts receivable  Parameters  Update (Picking route status) from “Completed” to “Activated”

Try creating a Sales order and perform Picking List. Now check if you can change & update the quantity of an
Item in “Picking List Registration” form. Once the quantity is updated reset the AR parameter to “Activated.”

Share this:

 Share

Like this:
Like Loading...

Categories: X++ stuffs

Sending Quick Email From Dynamics Ax


July 17, 2008Santosh.RLeave a comment

I would like to share a simple concept which most of us would have come across at least once when
working on Dynamics Ax
These days we use mail to communicate with our business partner. To be more user
friendly ERP, AX has already implemented two such classes by which Email can be sent
directly without using Office Application.

Classes that are used for Sending Email in AX are:

 SysInetMail
 ccSysInetMail

Where ccSysInetMail extends the parent Class “SysInetMail”. By using the below example
mail is sent via Outlook to the destination.
Note: Outlook needs to be configured properly so as to send/receive any mails.

Sending Quick Email


static void Quick_Mail(Args _args)
{
ccSysInetMail ccSysInetMail;
;
ccSysInetMail = new ccSysInetMail ();
//Parameters

//public void sendMail(str name, str subject, str text, boolean


dialog)

ccSysInetMail.sendMail(‘xyz@microsoft.com’, ‘Hi’, ‘Ax Mail’, true);


}

Sending Mail Attachments


static void Quick_MailAttachements(Args _args)
{
ccSysInetMail ccSysInetMail;
;
ccSysInetMail = new ccSysInetMail ();
//Parameters

//public void sendMailAttach (str _toName, str _ccName, str


_subject, str _text,
boolean _dialog, str _attachPath,[str _attachName])

ccSysInetMail.sendMailAttach (‘xyz@microsoft.com’, ‘abc@hotmail.com’, ‘Test Project’,


‘Please find the attached XPO’, true, ‘C:\AIF\TstPrj’);
}

Happy Mailing from AX

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Microsoft Dynamics AX 2009 White Paper – Posting to


the Ledger
July 17, 2008Santosh.RLeave a comment

White Paper on Posting to the Ledger has been released .

This white paper covers the Ledger Voucher classes and functionality and how to use them to post to
the ledger.The information lists the classes that are involved in the process and examples for their
use.
Reference
PostToLedger.pdf
PostToLedger.xps

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Microsoft Dynamics AX 2009 User Experience Guidelines


July 13, 2008Santosh.RLeave a comment

The new User Experience (UX) will be known as "Role-Tailored" user interfaces.
AX2009 supports:

i. SDI (Single Document Interface): This translates into a new page loading into the same space in
which the old one was loaded, instead of opening into a new window.

ii. MDI (Multiple Document Interface): Enables users to work with multiple documents at the
same time. Each document is in a separate space with its own controls for scrolling. The user can see
and work with different documents such as a spreadsheet, a text document, or a drawing space by
simply moving the cursor from one space to another.

What’s New:

New page type that have been added to Microsoft Dynamics AX2009

i. Role Center

ii. List Pages

iii. Area Pages

iv. Directory Views.

To know more about

 How User experience guidelines are designed?

 Guidelines to follow before designing new/existing features in AX2009.

Reference:

Microsoft Dynamics AX 2009 User Experience Guidelines

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Microsoft Dynamics AX 2009 Press Overview


July 13, 2008Santosh.RLeave a comment

Hello.

I found a video that exclusively demonstrates the purpose of Enterprise Portal Role Centers in

Dynamics AX 2009

http://wm.microsoft.com/ms/business/dynamics/ax/AX2009_PressOverview.WMV

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

G S in Dynamics AX
July 10, 2008Santosh.RLeave a comment

I would like to thank my friend Bhasker Singh for his valuable inputs on Data crawler in AX.

Are you wondering what does G S refer to…?


Is it Google Search (or) Global Search in Dynamics AX?
Well name, as you like because the first thing that comes to your mind when you read “GOOGLE” is?
Everyone would have guessed it correctly. Yes it’s Searching.
Dynamics AX has one such feature integrated onto it. Any required information can be search quickly.

Introduction:
The Dynamics AX Data Crawler indexes business data stored in the Dynamics AX database. The
common name given to it is Global Search. The data crawler is a simple indexing engine completely
implemented in X++ for the purpose of creating a searchable index of selected tables in the
Application. Dynamics Ax Global Search is a feature added to the task pane in Dynamics Ax 4.0. It
enables users to search for information without specifying the table and field as opposed to
conventional search. The Global Search Task Pane could be brought up by pressing the shortcut key
Ctrl + F.

Configuration:
The Data crawler is configured and executed from the Dynamics AX client by clicking
Basic  Setup  Data Crawler
The two components relevant to this feature are as follows:
 Table Setup
 Data Crawler Setup

1. Table Setup
This form is found at the main menu Basic > Setup > Data Crawler > Table Setup. This is where you
specify the table, which you would like to search within Dynamics Ax.
The following figures show the Table Setup form.

The Incremental checkbox you find on Overview tab indicates that indexing would be done for newly
modified record only. This is only applicable for tables with modified date field. It is automatically
checked if the table has the field. You are not given an option to check or uncheck this field.

2. Data Crawler Setup

The Data crawler is configured and executed from the Dynamics AX client in Basic > Setup > Data
Crawler > Data Crawler. The following figure shows the Data Crawler Setup form.
Message ”The search indexing engine is not started” is displayed until crawler is not started. If crawler
is not started then searching of records in Dynamics AX isn’t possible.

Run in Background:
If this option is not checked then it will lock the client and we must have to start another client in order
to check the status or to stop the crawler. It is possible to start the crawler in a separate thread on the
AOS, so the crawler will index in the background and the Axapta client will be able to continue with
other tasks.
By setting the data crawler to "run in the background" it will allocate a
thread to look for the table changes needed and not lock the client.

Start Crawler Automatically:


Setting the "Start Crawler Automatically" will allow the search index creation to happen on a user log
in without manually clicking the "Start Search" button achieving the required business impact
statement of "records inserted should be searched by other users.” It is recommended always to set the
"Start Crawler Automatically" setting and monitor the system.

Crawler Speed:
By reading the name itself you can understand at what speed the crawler need to index the
existing/newly created records on the server.
Note: A higher speed means a greater load on the server, which can affect performance.

Issues:
One of the concerns in Data crawler is, if crawler tab shows “Inactive” then any newly inserted/deleted
records is not indexed thereby the records are not searchable.
Reason:
“Inactive” state in crawler tab is because if any record inserted/deleted the DaemonClockInTime needs
to be updated to timenow (). If the thread stops processing any new record then the difference b/w
(timenow () – this. DaemonClockInTime > 600)). Due to which the status turns “Inactive.” Thereby it
cannot search any records that are newly created/deleted in Dynamics AX.
WorkAround:
1. Check the option "Start Crawler Automatically” This will ensure that the Crawler never turns to
"Inactive.”

2. However even with option (1) handled, if AOS is restarted, Data Crawler will turn “Inactive” after
600 secs.
Hence whenever AOS is restarted, make sure that "Data crawler" is stopped and
restarted so that any new records inserted/deleted will be indexed and would be searchable.

Indexing is Dynamics AX is so faster that even 1000 records can be searched in less than 1 min.
Shown below is the indexed records.

Happy Global searching in Dynamics AX




Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

How to reverse a packing slip updated Sales


order/Purchase order in Dynamics Ax?
June 29, 2008Santosh.RLeave a comment

Last week we had to work on AP module in order to solve a bug in Dynamics. So we had to
do Packing slip on a created Purchase order, every time we had to create a new Purchase order & then
do packing slip on it. Suddenly we realized why couldn’t we do a reverse Packing slip and use the
same purchase order instead of creating one. When searching we got one such link which
explains, "How reverse Packing slip can be done"

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

AIF Update in Dynamics Ax


June 22, 2008Santosh.RLeave a comment

Hi all,
Yesterday night I was going through the site "Discussion in Axapta Programming.” There was a
question regarding AIF (Application Integration Framework).

The possibility to do updates of documents using AIF was introduced in SP2 (AX 4.0).
Let me explain you in detail
Suppose I want to use the AxdSalesOrder document to create new Sales Table entries and also to
update existing sales Order, then ‘update’ action is used.

How to perform update operation on AxD:

 Make sure that Axd<Table name> supports ‘update’ functionality.


 Configure AIF to update <AxD> in the system. [Refer Configuring AIF]
 Send (or) Create a valid transformed XML, so that the same could be used to ‘update’.
Update any field value in the XML (i.e. <CustAccount>).

<?xml version="1.0" encoding="utf-8" ?>

- <Envelope
xmlns="http://schemas.microsoft.com/dynamics/2006/02/documents/Messa
ge">

- <Header>

<MessageId>{FFF3E75E-A75C-4228-ABF0-8E3EA2483EE6}</MessageId>

<SourceEndpointUser>Domain\UserName</SourceEndpointUser>

<SourceEndpoint>EPDMO</SourceEndpoint>

<DestinationEndpoint>LEDMO</DestinationEndpoint>

<Action>createSalesOrder</Action>

</Header>

- <Body>

- <SalesOrder
xmlns="http://schemas.microsoft.com/dynamics/2006/02/documents/Sales
Order">

<DocPurpose>Original</DocPurpose>

<SenderId>dmo</SenderId>

- <SalesTable class="entity">

<CurrencyCode>USD</CurrencyCode>

- <!– Update Field –>

<CustAccount>4004</CustAccount>

<CustGroup>20</CustGroup>

<DeliveryDate>2008-06-28</DeliveryDate>

<InvoiceAccount>4014</InvoiceAccount>

<LanguageId>en-us</LanguageId>

<PurchOrderFormNum>Client PO Identifier</PurchOrderFormNum>

<SalesID>00018_036</SalesID>

<ShippingDateRequested>2008-05-01</ShippingDateRequested>
- <SalesLine class="entity">

<ItemId>B-R14</ItemId>

<SalesQty>151</SalesQty>

<SalesUnit>Pcs</SalesUnit>

</SalesLine>

</SalesTable>

</SalesOrder>

</Body>

</Envelope>

 Now make sure you override "allowUpdateUsingCreate" method to return ‘true’ on the AxD Class.

protected boolean allowUpdateUsingCreate()


{
return true;
}

 Set ‘update’ to ‘Yes’ in our Axd<Table name> Query as shown below.

Note : Update should be set to ‘Yes’ for all the child datasource which are used in Axd query.
Run the Inbound job and records will be updated as required.
static void InboundProcessing(Args _args)
{
;
new AifGatewayReceiveService().run();
new AifInboundProcessingService().run();
}

Now ‘updating’ any records in AX is easier

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

SysContextMenu
June 20, 2008Santosh.RLeave a comment

Hii……I’m back again with a new thing which I would like to share with you.
Did any of you Guys tried customizing your own SysContextMenu in Dynamics Ax??? …… Well I
did one!!!..
I was thinking as to how I can do some customizing work on SysContextMenu.So I came with an idea
calling the Disk Cleanup from Ax using sysContextMenu. Please find the screenshot shown below.

Simple Procedure as how to go about creating your own "SysContextMenu"

 Traverse AOT and find Menu


 Under Menu you find a submenu as SysContextMenu
 Right click on the same and create a Menu item
 Before you follow above steps, make a class/form and implement the code for the Add-in
which you are going to provide in SysContextMenu.
 Drag the class/Form into Menu Item(Action/Display).
 Now link the created menu Item in SysContextMenu with MenuItemType & MenuItemName.
Yupppy you got our own SysContextMenu I think you guys will feel pretty kewllllllll about
this

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

How to insert a codeSnippet during runTime.


June 19, 2008Santosh.RLeave a comment

Adding a piece of code of at runtime is now easier in AX and this could be achieved by using a Tree
Node.
Please refer the below example as to how a code can be inserted @ the runtime.

static void InsertionofCodeSnippet(Args _args)


{
TreeNode treeNode;
int i;
str actualCode;
//Code that needs to be inserted.
actualCode = @"int active()
{
int ret;
;
ret = super();
element.setBOMRouteEnabled();
element.setRFIDEnabled();
element.setItemDimEnabled();
element.pbAsetEnabled();
element.setFiscalLIFOEnabled();
info(strfmt(inventTable.caption()));
return ret;
}"
;
#AOT
//Find the destination as to where it needs to be added
treeNode = infolog.findNode(‘\\Forms\\InventTable\\Data Sources\\InventTable\\Methods\\active’);
//Set the source.
treeNode.AOTsetSource(actualCode, false);
treeNode = infolog.findNode(‘\\Forms\\InventTable’);
//Load it in the AOT
treeNode.AOTload();
treeNode.AOTsave();
treeNode.AOTrefresh();
}

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

When is my Label file updated in AX?


June 19, 2008Santosh.RLeave a comment

Please refer the below link.


Dick Wenning has clearly explained how the label file is updated in AX
Really interesting one to follow
http://axstart.spaces.live.com/blog/cns!E82F2C8CB173C0A0!269.entry
Happy Learning.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs


X++ Compiler – Dynamics Ax
June 19, 2008Santosh.RLeave a comment

Hi Guyzzzzzz

I’m back. Sorry for not updating my blog from the last 3 months…. I was very busy with AX2009
development work.
Anyways today i am going to explain how can we compile an object in AX with using the option from
the SysContextMenu.

i.e. User doesn’t need to select the class and externally do a compile Forward on it.
Various classes, which are available in AX for compiling objects, are as follows:
SysCompilerOutput
SysCompileForward
SysCompileAll and so on…………………………………..

Let me explain you with a simple Job in AX


static void CompileForward (Args _args)
{
// Any class, which is compileForward in AX, this class is responsible
// SysCompilerOutput extends the xCompileOutput (Which is the system class)
SysCompilerOutput sysCompilerOutput;
;
// The return type of the sysCompilerOutput is the classId;

// "Class1” is the name of the class, which needs to be compiledForward


sysCompilerOutput::compileForward(className2Id(identifierstr(class1)));
}
Similarly if you want any object to "compile" in AX. Try using the method "compile" from
"SysCompileAll" class.

Happy Learning…………
Your next doubts in AX is my new entry in X++ stuffs
So keep doubtinggggg

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Mapping
September 30, 2007Santosh.RLeave a comment
How to know if one table belong a map table?

static void Table_Map (Args _args)


{
UtilElements UtilElements;
;

while select utilElements


where utilElements.recordType == UtilElementType::TableMap &&
utilElements.name == tableStr(CustTable)
{
info(TableId2Name(UtilElements.parentId));
}
}
When above job is executed the UtilElements will display all the maps which is linked to CustTable.

Share this:

 Share

Like this:

Like Loading...

Categories: X++ stuffs

Calling a Form using Args Class


September 27, 2007Santosh.RLeave a comment

Has anyone tried calling a Form through an Args class?


The Args caller method return the Object value

static void Elearn_Args(Args _args)


{
FormRun formRun;
;
_args = new Args(formstr(CustTable));
formRun = ClassFactory::formRunClassOnClient(_args);

if(formRun)
{
formRun.init();
formRun.run();
sleep(2000); // Allows the form to display for this many seconds.
}
else
throw error(‘Form not found in AOT.’);}

Share this:
 Share

Like this:

Like Loading...

Categories: X++ stuffs

Dynamics X++ Job


September 25, 2007Santosh.RLeave a comment

Hi All,

Blogging is my passion. So i have decided to write my own blog for the upcoming ERP product -
Dynamics AX. Blog is intended to provide code snippets, information on AX. Here is my first
sample job

Calling a X++ job from another job

static void Jobs_ExecutingJob(Args _args)


{
Args args;
;

args = new Args();


args.name(identifierStr(Jobs_MyJob));

// Create a MenuitemAction as Jobs_MyJob & Object Type should be set to Job


new menuFunction(menuItemActionStr(Jobs_MyJob), MenuItemType::Action).run(args);
}

static void Jobs_MyJob()


{
;
info("Infolog demo.");
}

For User Friendly Infolog refer http://blogs.msdn.com/mfp/pages/the-user-friendly-infolog.aspx


Dynamics AX 2012 Timesheet Features
Microsoft Dynamics AX 2012 features new timesheet functionality that integrates with the Project
Management and Accounting Module, Human Resources, Service Management and the
Employee Services website (Enterprise Portal). Workers can convienently enter and submit
timesheets via the Employee Services website. Managers can approve timesheets via the EP
website. Once a timesheet is approved we can use the timesheets to generate customer
invoices to customers and/or review costs to our projects in AX. AX does a nice job of integrating
all of this functionality to help simplify time entry and billing for your entire organization.

In this post I am going to cover the timesheets, approval and reporting in AX 2012. Check out my
related post on Dynamics AX 2012 Timesheet Configuration to see how to configure timesheets
in AX 2012.

Here is what I am going to cover in this post:

 Create/approve timesheets.
 Review missing timesheet report.

Create a new timesheet


Timesheets can be quickly created by workers using the Employee Services website. There are
several features that make AX really nice such as default Favorite activities for frequently used
tasks, validations and checks to prevent bogus entrry, internal and external comments and
filtered lists to help minimize time and effort spent on timesheet entry.

 Open the Employee Services website as a worker.


 Click on the Timesheets link. See figure 1.
 Click on Create from favorites. This will create a new timesheet using the Favorites that have
been setup by the worker/admin/manager.
 Once the timesheet is created you will see your favorite activities added to your timesheet.
See figure 2 below.
o You can change the Customer, Project, Activity and Category for each line. All of the
information shown here comes from AX and is company dependent. The list of available
records will be filtered based on configuration to prevent workers from entering bad
information.
o For each activity you can enter hours for each day in the period.
o You can specify whether an activity line is billable/non-billable. This is used in the Project
accounting module when hour journals are created on approval.
o Comments can be specified for each day per activity both internally and externally.
o Once the timesheet has been entered it is submitted for management approval.

Figure 1: Employee Services Timesheet

Figure 2: Employee Services Timesheet Entry

Approve a timesheet
Once a worker has created and submitted a timesheet a manager can review, reject and/or
approve the timesheet. Once the timesheet has been approved records will be created against
the actual projects in AX. Hour journals will be created on the appropriate project, which can
then be billed to a customer if necessary or applied to project costs.

 Open the Employee Services website as a manager.


 Click on the Timesheets link. See Figure 1 above.
 Click on the timesheet you want to review. See figure 3 below.
 Once the timesheet is open, you can review the hours submitted, details and comments.
There is an Actions button that is now available that will allow the timesheet to be recalled
(by the worker) or approved/returned (by the manager). If everything looks good the
timesheet can be approved and the appropriate records will be created in AX for billing and
project management purposes. See figure 4 below.
Figure 3: Employee Services Timesheet Review

Figure 4: Employee Services Timesheet Approve

Missing Timesheets Report


A common report that your organziation may need it a report of employees with a missing
timesheet. The report built into AX can be run manually of configured to run in a batch at a
specified interval. For example, you can set up the report to run every Tuesday at noon and it
can send an email to workers that have not yet submitted their timesheets.

 The Missing Timesheets report can be found at Project management and accounting ->
Reports -> Hours -> Missing timesheets.
 This brings up a dialog screen where you can specify the period type and start date. See
figure 5 below.
 Once you click OK a report is generated to screen or is emailed, depending on your
selections. See figure 6 below.
Figure 5: Missing Timesheets

Figure 6: Missing Timesheets Report

Posted in Dynamics AX 2012 Project Accounting and tagged AX 2012, Project Accounting,
Timesheets | Leave a Comment

10 FEB 2012

Dynamics AX 2012 Timesheet Configuration


Microsoft Dynamics AX 2012 features new timesheet functionality that integrates with the Project
Management and Accounting Module, Human Resources, Service Management and the
Employee Services website (Enterprise Portal). Workers can convienently enter and submit
timesheets via the Employee Services website. Managers can approve timesheets via the EP
website. Once a timesheet is approved we can use the timesheets to generate customer
invoices to customers and/or review costs to our projects in AX. AX does a nice job of integrating
all of this functionality to help simplify time entry and billing for your entire organization.

In this post I would like to cover timesheet configuration in AX 2012. The majority of what I will
cover is available in the training manuals for Dynamics AX 2012 Project Accounting available
from Microsoft. Check out my related post on AX 2012 Timesheet Features to see how
timesheets with AX work once they are configured. The configuration of timesheets in AX is
flexible and can be tailored to fit your needs, my examples below will give you a base
understanding of how the configuration works and some of the options. As I mentioned before
the documentation provided by Microsoft in their training manuals, MSDN and AX help gives full
details of all configuration options.

Here is what I am going to cover in this post:

 Define timesheet periods.


 Generate timesheet periods.
 Define worker timesheet validations.
 Configure timesheet parameters.
 Define timesheet Favorites.

Defining Timesheet Periods Types

The first step to configuring timesheets is to define our timesheet periods. This will define how
frequently we want our workers to enter timesheets.

 Open the Timesheet period types form from the Project Management and Accounting ->
Setup -> Timesheets -> Timesheet period types menu. See figure 1 below.
 Click New.
 Select the Period Frequency. This tells us how often timesheets will be entered. For this
example I am using Weekly.
 Select the starting day of week. For this example I am using Monday.
Figure 1: Timesheet Period Types

Generate Timesheet Periods

Once we have our timesheet periods defined, we need to actually create the timesheet periods.
This will generate the timesheet period records in AX.

 Once you have defined your timesheet period type click on the Generate Periods button from
the Timesheet periods types form. See figure 2 below.
 Specify a start date, this tells AX what date to start generating periods from. Typically you
would pick the first date of your fiscal year. I chose Jan 1st, 2012 for this example.
 Specify the length of period. This will determine the number of periods to create based on the
timesheet frequency selected.
o For example if you selected weekly as your timesheet frequency then enter 52.
o If you selected monthly as your timesheet frequency then enter 12.
 Optionally you can enter the Billable hours norm and Efficiency hours norm.
o The billable hours specified here will be used when comparing the actual hours submitted in
the timesheet when viewing the Billable rate report.
o The efficiency hours specified here will be used to compare against the productive hours less
the non-productive when viewing the Efficient rate reports.
 Click OK to save and close forms.

Figure 2: Generate Timesheet Periods

Define Worker Timesheet Validations

The next step is to setup workers’ project management user profile. This tells AX how workers
will register their time in worksheets and also setup validations during timesheet entry.

 Open the worker form found at Human Resources -> Common -> Workers. See figure 3
below.
 Select a worker.
 Click on the Project Management tab and select Project Setup. See figure 4 below.
 On the Project Setup time form:
o Specify the period code that was created earlier.
o Specify the Max hours calendar.
o Check Enable Project validation if you want validate if the selected worker is assigned to a
project before the timesheet can be saved.
o Check Enable Category validation if you want validate if the selected worker is assigned to a
category before the timesheet can be saved.
o Click OK to save and close forms.

Figure 3: Worker Project Setup


Figure 4: Worker Project Setup Details

Configure timesheet parameters

Once we have defined the parameters per worker we can setup the timesheet behavior for all
workers.

 Open the Project Management and Accounting parameters form found at Project
Management and Accounting -> Setup -> Project Management and accounting
parameters. See figure 5 below.
 Click the Timesheet tab.
 Specify the Day week starts. This will set the starting date per week during the timesheet
entry. This is typically Sunday or Monday.
 Specify the Maximum number of timesheets per period. This limits the number of timesheets
that can be entered per worker, per timesheet period. This is typically 1.
 Check Use favorites if you want to allow workers or managers to save common
projects/activities for repeated use.
 Specify Minimum time increment. This tells us the smallest unit of time that can be entered
into a timesheet.
 Check Require start/stop time if you need to track clock time for activities recorded into the
timesheet.
 Specify the Set voucher date to control when the journal for hours submitted is posted.
 Specify the Default posting level to determine how granular the journal that is posted will be.
 Specify Journal posting to set if the hours journals are automatically or manually approved
and posted. Select manual if you want more control over the process, for example if you
want to have someone in finance or management review the hours that will actually be billed
to the customer.

Figure 5: Timesheet Parameters

Define Timesheet Favorites


Entering timesheets can be a painful and tedious process. In order to help workers spend less
time entering timesheets and to help prevent billing errors, it is possible to specify default
timesheet activities per worker using the timesheet Favorites feature. Timesheet Favorites can
be specified in two ways, by the worker from the timesheet entry web interface or by a
manager/admin from within AX. I will demonstrate the second method of how a manager/admin
can set up timesheet Favorite records for workers.

 Open the Favorites form found at Project management and accounting -> Setup ->
Timesheets -> Favorites. See figure 6 below.
 Create new record(s) and specify the worker, project, activity category and note.
o If you set the Valid For to All then the Favorite will apply to all workers.
 Once all Favorites are added then they will show up in the Employee Services website when
an employee creates a timesheet from favorites. Also, the worker can add, edit, remove
favorites from the Employee Services website as shown in figure 7 below.

Figure 6: Timesheet Favorites

Figure 7: Timesheet Favorites Employee Services Website

Posted in Dynamics AX 2012 Project Accounting and tagged AX 2012, Project Accounting,
Timesheets | Leave a Comment

S-ar putea să vă placă și