Showing posts with label Bussiness Connector. Show all posts
Showing posts with label Bussiness Connector. Show all posts

Thursday, January 5, 2012

AX 2012 - Run Reports without hitting the Production DB

Hi there!

My fellow Sunriser, Brandon George,  has written an amazing article about running reports without hitting the Production Database.

Form the article:

"Since the default .Net Business Connector configuration for SSRS is pointing back to the same AX instance, when the SSRS instance is executing the reporting and firing the Data Extensions to get to the correct Query object and therefore data, then in this standard approach, we are hitting the production database for your instance of AX..."

"The critical keys that enable this concept are, (1) having the production instance of your AOS and Reporting Server setup, pointing to your SSRS server role within AX. (2) Changing what AOS the SSRS server hits for processing data, by deploying a custom configuration file. (3) Log Shipping is enabled at on the AX Production database, so that the AX Reporting Database is kept up to date with live data."

"...That is code promotion, or change management. Why does this matter? Well simply put, it's because the model store that represents the application now lives as a part of the production database. This then gets replicated when any changes take place."

Brandon George is a Senior Technical Architect at Sunrise Technologies and I personally believe he is one of the few people in the world that has truly master AX. I strongly suggest to follow his blog as it contains valuable, innovative, and critical information about AX.

You can access his blog (and the article) from here.

Take care!

Wednesday, January 4, 2012

Helpful AX 2012 links

New Stuff for Developers

What's New in Microsoft Dynamics AX 2012 for Developers [AX 2012]
http://msdn.microsoft.com/en-us/library/gg845327.aspx


Architecture

AOS architecture [AX 2012]
http://technet.microsoft.com/en-us/library/dd309593.aspx

Model store architecture [AX 2012]
http://technet.microsoft.com/en-us/library/dd362019.aspx

Help server [AX 2012]
http://technet.microsoft.com/en-us/library/gg866975.aspx

.NET Business Connector architecture [AX 2012]
http://technet.microsoft.com/en-us/library/dd309664.aspx

Enterprise Portal architecture [AX 2012]
http://technet.microsoft.com/en-us/library/dd362005.aspx


.NET Business Connector

.NET Business Connector Overview [AX 2012]
http://msdn.microsoft.com/en-us/library/aa659581.aspx


Development

Microsoft Dynamics AX IDE [AX 2012]
http://msdn.microsoft.com/en-us/library/aa676506.aspx

Visual Studio Development for Microsoft Dynamics AX [AX 2012]
http://msdn.microsoft.com/en-us/library/gg889157.aspx

Visual Studio Integration [AX 2012]
http://msdn.microsoft.com/en-us/library/gg889299.aspx


Business Intelligence

Business intelligence components [AX 2012]
http://technet.microsoft.com/en-us/library/gg731794.aspx


Installation & Configuration


Firewall settings for Microsoft Dynamics AX components [AX 2012]
http://technet.microsoft.com/en-us/library/gg731780.aspx

Verify that you have the required permissions for installation [AX 2012]
Developing Extensible Data Security Policies [AX 2012]
Create service accounts [AX 2012]
Planning hardware infrastructure [AX 2012]
http://technet.microsoft.com/en-us/library/dd362104.aspx

Microsoft Dynamics AX 2012 Implementation Planning Guide [AX 2012]
http://www.microsoft.com/download/en/details.aspx?id=4007

Moving between Microsoft Dynamics AX 2012 Environments [AX 2012]
http://blogs.msdn.com/b/axsupport/archive/2011/11/07/moving-between-microsoft-dynamics-ax-2012-environments.aspx


AX 2012 WHITE PAPERS
http://www.microsoft.com/download/en/details.aspx?id=20864

Utilities

AxUpdatePortal Utility [AX 2012]
http://msdn.microsoft.com/en-us/library/dd261467.aspx
http://blogs.msdn.com/b/solutions/archive/2009/02/04/axupdateportal-utility.aspx

Friday, December 9, 2011

Intelligent Data Management Framework (IDMF)

Hi there,
There has been a lot of talk about the Intelligent Data Management Framework (IDMF) in AX 2012, and for a good reason!  This is because the Intelligent Data Management Framework allows the system administrators optimize the performance of Microsoft Dynamics AX installations, which is something that we all should be concerned about when implementing AX 2012.

Why? Well, first of all, the system requirements for AX 2012 are going to be much more than the ones for AX 2009.

This has been proved by a recent installation in Bank of America where they thought the hardware required was much more of what is needed for AX 2009. For this reason, the IDMF assesses the health of the Microsoft Dynamics AX application, analyzes current usage patterns, and helps reduce database size.  In addition, the IDMF lets you analyze the database and maintain an optimal database size by providing the purge and archive functions.

A Microsoft articles says “the purge function removes or deletes data from a set of related entities, or tables, from the production database. The archive function moves data from all related tables from the production database to a standby database called the archive database. Users can use the archive database for reporting purposes but cannot update it”

Further, both the purge and archive operations depend on a hierarchical relationship tree of related tables based on the Microsoft Dynamics AX metadata, and to create a hierarchical relationship, you select a parent table and discover all related tables based on the AX metadata.  
Moreover, the parent table in the relationship is put at the root level of the tree and the discovery process creates a nested relationship tree from a parent entity to a child entity. This is done until there are no relationships left at the lowest level.

Also, a purge object is used to remove selected records from all tables in the relationship tree from the AX database. Similarly, an archive object is used to move selected records from all tables in the relationship tree from the AX database to the archive database.

After creating a purge object or an archive object, you can apply business rules and selection criteria to entities and transactions to determine which records are deleted or moved from the production database.

System architecture

The IDMF was created using the Microsoft .NET development environment and provides a single document interface (SDI). In addition, the IDMF uses a database, called the management database, for the storage and retrieval of data, and communicates with Application Object Server (AOS) through COM Business Connector or .NET Business Connector.

Now, just be aware that during installation, the IDMF installs a Windows service called the Intelligent Data Management Framework for Microsoft Dynamics AX service. This service is used to run scheduled jobs and is referred to as the scheduler service for the Data Management Framework.

The following diagram provides a high-level overview of the Data Management Framework system architecture.




Deployment scenarios


Single-server deployment



Multi-server deployment



Distributed deployment


Take care!

Monday, October 31, 2011

Plan a Succesful AX 2009 System Topology

Hi,

Today I would like to talk about a topic that, when followed with professionalism, can differentiate a good consultant from a bad one.

If you think about it, Microsoft Dynamics AX has become the way to help companies become more efficient, and to also help them save money. However, is also true that AX (in general) has become a big boom where some (low quality) partners and developers are not following up certain guidelines to make an implementation a successful one.

The result ... Customer dissatisfaction and a bad taste for AX.

In this article I would like to discuss the basics to plan a good system topology. In other words, what do we need to have in mind when faced with this task. What kind of question should we be asking the customer.

For example,  A large business with multiple locations might experience different challenges compared to a smaller business with one location and only a few users.

So, a good tip would be to start the implementation process by (1) creating an inventory of the customer's current hardware and software, and (2) determining the deployment scenario that best meets the business’ current needs and future growth.

 So, before the actual installation occurs, we must collect information about the customer's requirements to help prepare the correct topology.

1- Define and document these items with the customer:
  • Number of transactions
  • Number of users
  • Uses of system (modules and features to be implemented)
  • External user access required
  • Web access required
  • Required availability
  • Projected growth rate
  • Number of sites

2- Evaluate and document the existing infrastructure:
  • Existing hardware
  • Bandwidth
  • Operating system
  • Databases present
  • Applications to integrate

3- After collecting this information, determine how to structure the system. Key decisions are as follows:
  • If there are any computer roles that can be combined on a single computer? If computer roles can be combined, consider which ones to combine.
  • Determine whether there are any network load-balanced clusters to host the AOS.
  • Select a backup system for the Microsoft Dynamics AX environment.

Topologies

If the customer's requirements are focused on not allowing users outside the domain, then use the following topologies:


Minimal Base Topology




Clustered Base Topology (You can install the application file server on a AOS server as you will have more than one AOS server)




Enterprise Portal Topology

There are two (1) Intranet (Simple and Large-Scale), and (2) Internet-Facing

Intranet



Intranet Large-Scale




Internet-Facing Enterprise Portal


Standard Perimeter Network
With a standard perimeter network the Active Directory domain contains:
  • All internal users to be added to Microsoft Dynamics AX 2009.
  • Special users required for Microsoft Dynamics AX functionality.
  • An organizational unit that contains any users from outside the organization that require Enterprise Portal access. These users’ rights must be restricted in that the users cannot:
                      Log on locally
                      Access network


Traditional Perimeter Network
Basically, the traditional perimeter network contains two Active Directory domains: the internal domain and the external domain. The internal domain contains:
  • All internal users to be added to Microsoft Dynamics AX 2009.
  • Special users required for Microsoft Dynamics AX functionality.
  • Group required for application integration server functionality.
[From Microsoft Training Material]
The perimeter network contains a second domain controller with a one-way trust relationship to the first domain controller. The second domain controller contains any users from outside the organization that require Enterprise Portal access.
These users cannot have any rights in the internal domain, and their rights must be restricted in the perimeter network domain so that the users cannot:
  • Log on locally
  • Access network

 Report Server Topology (This is installed on IIS and is not Internet-Facing)


Application Integration Server Topology (This is also installed in IIS and is not Internet-Facing)


Let's be consistent in the work that we do. Let's provide a great customer satisfaction so Microsoft Dynamics AX can keep growing and helping businesses succeed. By following the above suggestions, we can make a huge difference in how new businesses experience AX implementations.

Take care!

Thursday, October 6, 2011

Channel 9 - AX 2009 AIF Web Services


The following link will take you to a Channel 9 screen cast where you can learn about the new features of the AX 2009 AIF Web Services.

The following are some of the enhancements to Application Integration Framework (AIF) in AX 2009 AIF Web Services.

1.       Create, read, update, and delete operations are now supported.
2.       The programming model for AIF supports document services that encapsulate business logic and are the interface between AX 2009 and external systems.
3.       AIF provides functionality for consuming external Web services from within X++.
4.       New document services for additional commonly-used documents.


http://channel9.msdn.com/Blogs/SanjayJain/Microsoft-Dynamics-AX-2009-AIF-Web-Services-Screencast

Monday, June 13, 2011

Create Axapta Payment Journal

The following code creates a payment journal in AX.

public void PaymentJournalLineCreation()
{
    boolean                     ret;
    CustTable                   custTable;
    LedgerJournalName           LedgerJournalName;
    LedgerJournalTable          ledgerJournalTable;
    LedgerJournalTrans          ledgerJournalTrans;
    LedgerJournalCheckPost      ledgerJournalCheckPost;
    NumberSeq numberseq;

    ;

    //Get customer account
    this.getCustomerAccount();

    //Get currency
    this.setCurrency();

    //Set JournalNameId
    this.setJournalNameId(LedgerJournalACType::Bank);

    //Get table buffer
    custTable = CustTable::find(customerAccount, false);

    // Find a ledgerJournalName record
    select firstonly LedgerJournalName
    where LedgerJournalName.JournalName == journalNameId;


    //Get next available voucher number
    numberseq = NumberSeq::newGetVoucherFromCode(LedgerJournalName.VoucherSeries);
    ledgerJournalTrans.Voucher = numberseq.voucher();

    //Generate the transaction line
    ledgerJournalTrans.JournalNum = ledgerJournalId;
    ledgerJournalTrans.CurrencyCode = currencyCode;
    ledgerJournalTrans.ExchRate = Currency::exchRate(ledgerJournalTrans.CurrencyCode);

    ledgerJournalTrans.AccountNum = customerAccount;
    ledgerJournalTrans.accountName();
    ledgerJournalTrans.AccountType = LedgerJournalACType::Cust;

    ledgerJournalTrans.Dimension[1] = custTable.Dimension[1];
    LedgerJournalTrans.KUMTeamDescription();
    ledgerJournalTrans.Dimension[2] = custTable.Dimension[2];
    ledgerJournalTrans.KUMDetailDescription();
    ledgerJournalTrans.Dimension[3] = custTable.Dimension[3];
    ledgerJournalTrans.KUMEventDescription();

    ledgerJournalTrans.AmountCurCredit = paymentAmount;
    ledgerJournalTrans.TransDate = PaymentDate;
    ledgerJournalTrans.Txt = '@COL1576'; //Payment, Thank you
    ledgerJournalTrans.PaymMode = custTable.PaymMode;
    ledgerJournalTrans.PostingProfile = 'DFLT';
    ledgerJournalTrans.BankTransType = 'Chck-rcpt';
    ledgerJournalTrans.Payment = custTable.PaymTermId;
    ledgerJournalTrans.CustVendBankAccountId = this.GetCustomerBankAccountID(customerAccount);
    ledgerJournalTrans.SettleVoucher = SettlementType::OpenTransact;
    ledgerJournalTrans.TransactionType = LedgerTransType::Payment;
    ledgerJournalTrans.Approved = NoYes::Yes;
    ledgerJournalTrans.ApprovedBy = curUserId();
    ledgerJournalTrans.Due = systemdateget();
    ledgerJournalTrans.TaxGroup = 'DFLT';

    ledgerJournalTrans.OffsetAccount = bankAccount;
    ledgerJournalTrans.OffsetAccountType = LedgerJournalACType::Bank;
    ledgerJournalTrans.offsetAccountName();

    ledgerJournalTrans.PaymentStatus = CustVendPaymStatus::None;
    ledgerJournalTrans.insert();

}
There are some methods calls in the previous code. These are the following:
//Find customer account based on Customer Reference Number
public CustAccount getCustomerAccount()
{
    CustAccount     custAccount;
    CustBankAccount custBankAccount;
    int             countRecords = 0;
    ;

    switch (JournalFormatType)
    {
        case KMN_CustPaymentJournalFormatType::Mexico:
            select * from custBankAccount where custBankAccount.MsgToBank == customerReference;
            custAccount = custBankAccount.CustAccount;
            this.parmCustAccount(custAccount);
            break;
    }

    return custAccount;
}

//Sets the currency value to the property
public void setCurrency()
{
    ;
    //Set property
    this.parmCurrencyCode(CompanyInfo::standardCurrency());
}

public void setJournalNameId(LedgerJournalACType _journalType)
{
    LedgerJournalNameId _journalNameId;
    ;
    switch(_journalType)
    {
        case LedgerJournalACType::Bank:
            _journalNameId = 'CR';
            break;

    }

    this.parmLedgerJournalNameId(_journalNameId);
}

NOTE: I'm using accessory methods for most of the variables in this code (this is a class), so remember to declare them in the classDeclaration and create your own properties.

Tuesday, June 7, 2011

Create a Proxy Business Connector Account in active directory - AX 2009

Create the proxy account in Active Directory as follows:

1. Create a unique user in Active Directory in the form domain\username, for example, domain\bcproxy. This user must not have the same name as an existing Microsoft Dynamics AX user. For the procedure to add a new user, see the Active Directory documentation.

2. Assign a password to the user.

3. Select the Password does not expire option.

4. Select the No interactive logon rights option.

5. Close Active Directory