Search This Blog

Friday, December 7, 2012

Hi Friends,
I was on vacation for four weeks, If you are expecting any answers from me, it may be delayed for some more time..

I wish you a very very happy CHRISTMAS and NEW YEAR.



Krishna.
Krishna.dynamics@gmail.com


Friday, November 23, 2012

Data Partition in AX2012 R2


AX2012 R2
AX2012 R2 release extends the concept of sharing data and processes across legal entities to streamline business processes and simplify the management of 'master data'.

AX2012 R2 release can support 36 country versions in one single installation of Dynamics AX2012, international companies that are represented in many countries to increase IT and operational efficiency. You can support all divisions in one installation, and it is the precondition to share master data and efficiently manage 'master data'.

Data partitioning
Data Partitioning can provide efficiency gains, because installation and system data is still shared.And data partitioning makes it possible to divide the application data into partitions of organizations.You will be able to share application data and processes between organizations within a partition, but not across .
Please see the below figure to understand the datapartitioning.

Please see the  below installation types for AX2012R2-

Entities
A single installation
A single installation of partitioning
Several installations
Application data and processes
Shared between legal entities
Shared between legal entities within a partition. Isolated between legal entities in different partitions
Shared between legal entities in the same installation. Isolated between installations
Master Data Management
Global master data shared between legal entities
Global master data shared between legal entities within a partition
Global master data shared between legal entities within the installation. Isolated between installations.
Meta data and adjustments
Applies to all entities
Applies to all entities
Unique for each installation
IT infrastructure
Single
Single
More
Database
Single
Single
More
A data partition helps sharing the Ax install base but not the data.
There can be companies with the same name in multiple partitions.

E.g Every partition will have the default company ‘DAT’.
- Intercompany doesn’t work across partitions
Mircosoft Recommends: Implementation choice must be made carefully as the companies between two partitions cannot be merged and Intercompany features cannot be used. The only option is to use Data migration tool kit for data export import between partitions and AIF for inter company operations.
Technical:-
A new partition table is introduced with a Key and the Recid field
- There is a new field called ‘PartitionRecid’ in everytable and as the dataareaid was by default applied to all contexts(Forms
queries) the partition key will also be added.





Select * from custTable where data areaid = ‘Dat’ and Partion key = ‘Initial’
- No cross company query on partitions are allowed like the cross company query
- You can know the current partition through ‘getcurrentpartitionrecid()’ similar to ‘curext()’
- Batch servers work across partitions
- AIF works across partitions
New table property like “SaveDataPerPartition” has been introduced as like “SaveDataPerCompany”. 
So for AIF, Batch tables – Save data per partition is set to “No”,because those are shared across partitions.


so get ready folks for AX2012 R2.

Wednesday, November 21, 2012

Dynamics AX2012 Road Map

The Microsoft Dynamics AX Roadmap shows current product plans through calendar year 2014.

The following sections include detailed information about the current release, functionality for Microsoft Dynamics AX 2012, and the Microsoft Dynamics vision for future releases.




DECEMBER 2012 - MICROSOFT DYNAMICS AX 2012 R2

Microsoft will continue to provide new capabilities through the release of Microsoft Dynamics AX 2012 R2. The planned general availability for this release is December 2012. This release includes key themes that are important to a broad set of customers across the footprint of the solution.

Ax2012 R2 release enhanced and added SQL Server Analysis Services (SSAS) cubes that enable business users to gain insight into the organization more quickly. Simply access Key Performance Indicators and compelling charts from within a role center, drill through to more details or use powerful ad-hoc analysis tools such as Microsoft Excel or Power View, to get additional business insights.


Lifecycle Services:
o Design phase: the Microsoft Dynamics AX Code Analyzer will help analyze the performance of custom code in Microsoft Dynamics AX based on rules.
o Deploy phase: the Microsoft Dynamics AX Data Migration Framework is planned to support import, export and migration of data to/from Microsoft Dynamics AX 2012, and covers over 20 scenarios including customer, vendor, product, employee, BOM, open sales and purchase order data. The framework is utilizing Microsoft SSIS and partners & customers can extend the scenarios provided.
o Maintain phase: diagnose your Microsoft Dynamics AX environment(s) using the Microsoft Dynamics AX Diagnostic Framework by analyzing data collected from the installation’s servers based on rules. A central dashboard highlights key issues that need immediate attention. These server types are planned to be supported: SQL Server, SQL Server Reporting Services, SQL Server Analysis Services, Application Object Server, Internet Information Server, and Microsoft Dynamics AX Help Server.


CALENDAR YEAR 2013 – MICROSOFT DYNAMICS AX 2012 R2

In calendar year 2013, we will continue to release new capabilities for Microsoft Dynamics AX 2012 R2 with a specific focus on the following areas:

 H1 we plan to release new out-of-the-box BI content for the Power View technology introduced in Microsoft SQL Server 2012. This is in line with our commitment to enable our Microsoft Dynamics AX customers to fully utilize the investments Microsoft is making in leading BI technology.
H2 of 2013 we’re planning to provide more functional enhancements for our focus industries, of which details will be released at a later stage.
 Master Data Management (MDM) – this first planned release of Master Data Management targets sharing and managing master data in specific scenarios across multiple Microsoft Dynamics AX instances. This release plans to supports scenarios for: Customer, Vendor, Product, Employee and GL Account data.



I hope you all guys are ready go into AX2012 and start swim into the depth.
Enjoy AX2012 folks......

Tuesday, November 13, 2012

Microsoft to Release New Version of Dynamics AX 2012 R2


Microsoft is planning a Dec. 1 release of Microsoft Dynamics AX 2012 R2,  the latest version of its Dynamics AX 2012 product, which will offer multiple new ERP features for companies in four key sectors including manufacturing, retail, the public sector and professional services.


The company made the announcement at the recent Dynamics AX Tech Conference in Bellevue, Wash.
Dynamics AX 2012 R2 is designed to localize the ERP applications for 36 country localizations by including specific regulatory requirements in various countries and localities. The update adds 11 new localizations for large countries such as Japan, India, Brazil, Russia and China, but also smaller countries such as the Czech Republic, Estonia, Hungary, Latvia, Lithuania, and Poland.
Also new in AX 2012 R2 is a talent management system for matching the skills of job candidates to open positions within an organization. Microsoft added that customers in the U.S. can also now bring payroll processing in house where they can exercise better control of this sensitive data than with a third-party payroll processing company.
“Just covering these highlights of Microsoft Dynamics AX 2012 R2, you start to realize the significance of this release, as it brings value across the board for many customers, both in their existing as well as new markets,” said Microsoft Dynamics ERP director Kees Hertogh. “I am specifically excited to see the release of these innovations in countries like Brazil, Russia, India and China, not only to serve our many great customers in these countries but also to help our customers in developing markets with their international operations.”

Yes I Know this will be very hard for on going implementations, Hoping with lot of standard issues to be fixed by this R2.



Friday, November 9, 2012

AX2012 Build using TFS Version Control System


Create a build when AX2012 integrated with TFS .

The version control system contains .xpo files and not a model file, a build process is required
to generate the model file from the .xpo files. The following procedure provides a high-level overview
of the build process:

1. Use the CombineXPOs command-line utility to combine all .xpo files into one. This step makes
the .xpo file consumable by Microsoft Dynamics AX. Microsoft Dynamics AX requires all
referenced elements to be present in the .xpo file or to already exist in the AOT to maintain
the references during import.

2. Import the new .xpo file by using the command-line parameter -AOTIMPORTFILE=<FileName.
xpo> -MODEL=<Model Name> to Ax32.exe. This step imports the .xpo file and compiles
everything. After this step is complete, the new model is ready in the model store.

3. Export the model to a file by using the axutil command-line utility: axutil export /
model:<model name> /file:<model file name>.
As I explained in my previous post how to export and import Models
http://krishhdax.blogspot.dk/2012/10/ax2012-axutil-commands-to.html

4. Follow these steps for each layer and each model that you build.

The build process doesn’t apply to MorphX VCS.

Monday, October 29, 2012

AX2012 AXUTIL commands to Import,Export,Delete Models



// creating the Model in the Layer
AxUtil create /model:"TestModel" /Layer:CUS

// exporting the model to file
AxUtil export /model:"TestModel" /file:TestModel.axmodel

// importing the model from file
AxUtil import /file:TestModel.axmodel

// delete the model
AxUtil delete /model:"TestModel"

//delete the layer
AxUtil delete /layer:ISV

// if you have multiple instances running
//delete the layer from the database and AXserver.
Axutil delete /layer:ISV /db:<database> /s:<server>

Friday, October 12, 2012

Expressions or Functions used in AX 2012 SSRS Reports


This post explains all the functions and usage of those functions in developing the reports.

Expressions are usually used for appearance of the data in a report, change properties of the fields, calculate some values and display them in a proper way, compare values between data of fields and then display them. 

Types of Expressions
Globals
Operators - Arithmetic, Comparison, Logical
Common Functions - Text, Date & Time, Math, Inspection, Program Flow, Aggregate, Financial, Conversion, Miscellaneous


We can see each and every one very detail in following.


Globals
Global expressions executes/works in Page Header and Footer parts only.ExecutionTime shows date and time at when report executes
PageNumber shows page number of each and every page but allowed only in page header and footer
ReportName displays name of the active report what name we have assigned to the active report
UserId shows current user name like company/prabu.thangavelu
Language displays language like US-English…

Operators
Arithmetic
^ power of
* multiplication
/ divides two numbers and returns a floating point result
\ divides two numbers and returns a integer result
Mod divides two numbers and returns remainder only
+ adds two numbers and concatenation for two strings
- subtraction and indicates negative value for numeric values
Comparison
Known operators :
 < <= > >= <> 
Like compares two strings and return true if matched or else returns False. Ex: =Fields!Title.Value Like Fields!LoginID.Value
Is compare two object reference variables Ex: = Fields!Title.Value Is Null
Concatenation
+ and & symbols uses for concatenation
Logical
Known:
 And, Not, Or 
Xor SELECT * FROM users where firstname = 'Larry' XOR lastname = 'Smith'
AndAlso First condition will check first and if it is true only, goes to next or else it won't need to check. Because our execution time is saving in a logical operation in which more conditions is combined using AndAlso function.
OrElse same like above

Common Functions
Text

Asc, AscW returns an integer value represents character code corresponding to a character

Chr, chrw returns the character associated with the specified character code

Filter =Filter(Fields!Title.Value,"Pr",true,0) 

Format 
=Format(Fields!Price.Value, "#,##0.00"), Format(Fields!Date.Value, "yyyy-MM-dd")

FormatCurrency =formatcurrency(Fields!SickLeaveHours.Value,3)

FormatDateTime =FormatDateTime(Fields!BirthDate.Value,Integer)
Examples:
0 returns 6/3/1977
1 returns Friday, June 03, 1977
2 returns 6/3/1977
3 returns 12:00:00AM
4 returns 00:00

FormatNumber =FormatNumber(Fields!EmployeeID.Value,2)
Examples: 2.00

FormatPercent ="Percentage : " & formatpercent(Fields!SickLeaveHours.Value)

GetChar =GetChar(Fields!Title.Value,5)

InStr =InStr(Fields!Title.Value,"a")

InStrRev =Instrrev(Fields!Title.Value,"a")

LCase Change strings into lower case
=Lcase(Fields!Title.Value)

Left Returns left side characters from a string 
=Left(Fields!Title.Value,4)

Len Finds length of a string
=Len(Fields!Title.Value)

LSet Returns some length of a string from left
=Lset(Fields!Title.Value,5)

LTrim Trim left side of a string
=Ltrim(" "&Fields!Title.Value)

Mid Returns characters from the mentioned starting position
=Mid(Fields!Title.Value,InSTrRev(Fields!Title.Value,"T"))

Replace Replaces one string with another 
=Replace(Fields!Title.Value,"a","A")

Right Returns right side characters from a string
=Right(Fields!Title.Value,10)

RSet Returns some length of a string from left
=Rset(Fields!Title.Value,5)

RTrim Trim left side of a string
=Rtrim(Fields!Title.Value & " ")

Space Specifies some spaces within strings
=Fields!Title.Value & Space(5) & Fields!Title.Value

StrComp Returns a value indicating the result of a string comparison

vbBinaryCompare 0 Perform a binary comparison.
vbTextCompare 1 Perform a textual comparison.
string1 is less than string2 -1
string1 is equal to string2 0
string1 is greater than string2 1
string1 or string2 is Null Null

StrConv
=Strconv(Fields!Title.Value,vbProperCase)
=Strconv(Fields!Title.Value,vbLowerCase)
=Strconv(Fields!Title.Value,vbUpperCase)

StrDup Returns a string or object consisting of the specified character repeated the specified number of times.
=StrDup(3,"M")

StrReverse =StrReverse(Fields!Title.Value)

Trim =Trim(" "& Fields!Title.Value & " ")

UCase =Ucase(Fields!Title.Value)


Date & Time 

CDate Converts a object into date format
=Format(CDate(Fields!BirthDate.Value),"MMMM yyyy")

DateAdd Returns a datetime that is the result of adding the specified number of time interval units to the original datetime.

=dateadd("m",12,Fields!BirthDate.Value)

DateDiff Find number of days, months and years between two dates
=datediff("d",Fields!BirthDate.Value,Now)

DatePart DatePart(DateInterval.Weekday, CDate("2009/11/13"), FirstDayOfWeek.Monday) returns 5 (Friday)

DateSerial for first day of the month
=DateSerial(Year(Now), Month(Now), 1)
 
for the last day of the month
=DateSerial(Year(Now), Month(Now)+1, 0)

DateString Returns string value of system date
=datestring()

DateValue Returns current date

Day Returns day value from date
=day(Fields!BirthDate.Value)

FormatDateTime =FormatDateTime(Fields!BirthDate.Value,Integer)
Examples:
0 returns 6/3/1977
1 returns Friday, June 03, 1977
2 returns 6/3/1977
3 returns 12:00:00AM
4 returns 00:00

Hour =Hour(Fields!BirthDate.Value)

Minute =Minute(Fields!BirthDate.Value)

Month =Month(Fields!BirthDate.Value)

MonthName =MonthName(Month(Fields!BirthDate.Value))

Now Indicates current month
=Now() or =Now

Second =Second(Fields!BirthDate.Value)

TimeOfDay =TimeOfDay()
Returns a date value containing the current time of day according to your system

Timer =Timer()
Returns number of seconds elapsed since midnight

TimeSerial =TimeSerial(24,60,60)
Returns a date value representing a specified hour, minute and second

TimeString =TimeString()
Returns string value representing the current time of day according to your system

TimeValue Returns a date value set to jan 1 of year 1
=TimeValue(Fields!BirthDate.Value)

Today Returns Current date

Weekday Returns an integer value representing day of week
=WeekDay(Fields!BirthDate.Value)

WeekdayName =WeekdayName(Weekday(Fields!BirthDate.Value))
Returns name of the day of week

Year =year(Fields!BirthDate.Value)
Returns year of specified date

Math 

Abs Returns the absolute value
=Abs(-2.36)

BigMul Returns multiplication value of two specified numbers
=BigMul(2,3)

Ceiling Returns next highest value
=Ceiling(2.67)

Cos
=Cos(2.33)
Returns cos value for specified number

Cosh
Returns hyperbolic cos value
=Cosh(2.33)

DivRem
=DivRem(23,2,5)

Fix
=Fix(23.89)
Returns integer portion

Floor
=Floor(24.54)
Returns largest integer

Int
=Int(24.78)
Returns integer portion of a number

Log
=Log(24.78)
Returns logarithm value

Log10
=Log10(24.78)
Returns the base 10 logaritm value

Max
=Max(Fields!EmployeeID.Value)
Returns larger value in the specified values

Min
=Min(Fields!EmployeeID.Value)
Returns smaller value in the specified values

Pow
=Pow(Fields!EmployeeID.Value,2)
Returns power of value for specified number

Rnd
=Rnd()
Returns a random number

Round
=Round(43.16)
Returns rounded value to the nearest integer

Sign
=Sign(-34534543)

Sin
=Sin(Fields!EmployeeID.Value)
Returns the sin value

Sinh
=Sinh(Fields!EmployeeID.Value)
Returns the hyperbolic sin value

Sqrt
=Sqrt(Fields!EmployeeID.Value)
Returns square root value

Tan
=Tan(Fields!EmployeeID.Value)
Returns the tan value

Tanh
=Tanh(Fields!EmployeeID.Value)
Returns the hyperbolic tan value

Inspection
IsArray
=IsArray(Fields!EmployeeID.Value)
Returns a boolean value indicating whether the specified object is array or not
 

IsDate
=IsDate(Fields!BirthDate.Value)
Returns a boolean value indicating whether the specified object is Date or not
 

IsNothing
=IsNothing(Fields!EmployeeID.Value)
Returns a boolean value depends on specified object is Nothing or not
 

IsNumeric
=IsNumeric(Fields!EmployeeID.Value)
Returns a boolean value depends on specified object is Numeric value or not
 

Program Flow

Choose
=CHOOSE(3, "Red", "Yellow", "Green", "White")
Returns a specific value using index in a list of arguments

IIf
=IIF(Fields!EmployeeID.Value>10,"Yes","No")
Returns any one value depends on condition

Switch
=Switch(Fields!EmployeeID.Value<10,"Red",
Fields!EmployeeID.Value>10,"Green")
Evaluates list of expressions

Aggregate

Avg
=Avg(Fields!EmployeeID.Value)
Returns average value for all specified values

Count
=Count(Fields!EmployeeID.Value)
Returns count of all specified values

CountDistinct
=CountDistinct(Fields!EmployeeID.Value)
Returns count of all distinct values

CountRows
=CountRows()
Returns count of rows

First
=First(Fields!EmployeeID.Value)
Returns first for all specified values

Last
=Last(Fields!EmployeeID.Value)
Returns last for all specified values

Max
=Max(Fields!EmployeeID.Value)
Returns max for all specified values

Min
=Min(Fields!EmployeeID.Value)
Returns min for all specified values

StDev
=StDev(Fields!EmployeeID.Value)
Returns standard deviation value

StDevP
=StDevP(Fields!EmployeeID.Value)
Returns Population standard deviation value

Sum
=Sum(Fields!EmployeeID.Value)
Returns sum of all values

Var
=Var(Fields!EmployeeID.Value)
Returns variance of all values

VarP
=Var(Fields!EmployeeID.Value)
Returns population variance of all values

RunningValue
=RunningValue(Fields!EmployeeID.Value,sum,nothing)
Returns running aggregate of the specified
 
expression

Financial

DDB DDB (Double Declining Balance) method computes depreciation of an asset for a specified period.
Syntax: DDB (Cost, Salvage, life, period, factor)

FV FV (Future Value) of an investment based on periodic, constant payments and a constant interest rate.
Syntax: FV (rate, nper, pmt, pv, type)

IPmt IPmt (Interest Payment) for a given period for an investment based on periodic, constant payment and a constant interest rate
IPMT (rate, per, nper, pv, fv, type)

IRR IRR (Interest Rate of Return) for a series of cash flows represented by the numbers in values.
IRR(values,guess)

MIRR MIRR ( Modified internal rate of return ) for a series of periodic cash flows
MIRR(values,finance_rate,reinvest_rate)

NPer Returns the number of periods for an investment based on periodic, constant payments and a constant interest rate.
NPER (rate, pmt, pv, fv, type)

NPV Calculates the net present value of an investment by using a discount rate and a series of future payments (negative values) and income (positive values).
Syntax: NPV(rate,value1,value2, ...)

Pmt Calculates the payment for a loan based on constant payments and a constant interest rate.
PMT(rate,nper,pv,fv,type)


PPmt Returns the payment on the principal for a given period for an investment based on periodic, constant payments and a constant interest rate.
PPMT(rate,per,nper,pv,fv,type)

PV Returns the present value of an investment. The present value is the total amount that a series of future payments is worth now. For example, when you borrow money, the loan amount is the present value to the lender.
PV(rate,nper,pmt,fv,type)

Rate Returns the interest rate per period of an annuity. RATE is calculated by iteration and can have zero or more solutions. 
RATE(nper,pmt,pv,fv,type,guess)


SLN Returns the straight-line depreciation of an asset for one period.
SLN(cost,salvage,life)

SYD Returns the sum-of-years' digits depreciation of an asset for a specified period.
SYD(cost,salvage,life,per)

Conversion

CBool Convert to boolean
=CBool(fields!EmployeeID.Value)
CByte Convert to byte
CChar Convert to char
CDate Convert to date
CDbl Convert to double
CDec Convert to decimal
CInt Convert to integer
CLng Convert to long
CObj Convert to object
CShort Convert to short
CSng Convert to single
CStr Convert to string
Fix =Fix(32.342143)
Returns integer portion of a number
Hex =Hex(Fields!EmployeeID.Value)
Returns a hexadecimal value of a number
Int =Int(43.44)
Returns integer portion of a number
Oct =Oct(Fields!EmployeeID.Value)
Returns a octal value of a number
Str =Str(Fields!EmployeeID.Value)
Returns string value of a number
Val =Val("32.43")
Returns numeric value in string format

Miscellaneous

Previous =Previous(Fields!EmployeeID.Value)
Returns the previous value