Monday, August 28, 2017

Migration Between domain checklist

https://dynamicsessentials.net/2015/04/14/how-to-move-your-ax-2012-deployment-to-a-different-domain/
https://msdax.wordpress.com/2011/04/24/move-dynamics-ax-database-to-different-domainmachine/
https://blogs.msdn.microsoft.com/emeadaxsupport/2010/02/16/checking-database-entries-after-restoring-a-microsoft-dynamics-2009-sql-database-to-another-domain-or-environment/

Adding Query range in Multiple lookup in ax 2012

//Adding Query range in Multiple lookup in ax 2012
public void addRangeMultipleValue(tableId _table, fieldId _field, Query _query,str _delimitedMultipleValues)
{
    List                list;
    ListEnumerator      items;
    str                 currentItem;
    list = new List(Types::String);
    if (_delimitedMultipleValues != strMin())
    {
        list = strSplit(_delimitedMultipleValues, #ExpressionDelimiter);
        items = list.getEnumerator();
        while (items.moveNext())
        {
            currentItem    = items.current();
            if (currentItem != strMin())
            {
                this.addSearchCriteriaString(_table, _field, _query,currentItem, true);
            }
        }
    }
}
public void addSearchCriteriaString(tableId _tableId, fieldId _fieldId, str _attributeValue,Query _query,boolean _like = true)
{
    QueryBuildDataSource    qbds;
    QueryBuildRange         qbr;
    qbds = query.dataSourceTable(_tableId);
    if (qbds != null)
    {
        qbr  = qbds.addRange(_fieldId);
        if (_like)
        {
            qbr.value(SysQuery::valueLike(_attributeValue));
        }
        else
        {
            qbr.value(SysQuery::value(_attributeValue));
        }
    }
}

Integration Technologies for Dynamics AX 2012

//Integration Technologies for Dynamics AX 2012
http://www.sonata-software.com/blog/dynamics/integration-technologies-dynamics-ax-2012

standard class for sending Notification

//standard class for sending Notification
AxdSend

AxdDocument

Error : Entity name must be field in -  after upgrade

//Error : Entity name must be field in -  after upgrade
static void San_EntityNameUpd(Args _args)
{
    ReleaseUpdateDB63_DMF  updateEntity = new ReleaseUpdateDB63_DMF();
    updateEntity.updateEntityType();
}

Limitations Of OData Service in AX 2012

//Limitations Of OData Service in AX 2012
->No JSON support: The OData protocol supports Atom as well as JSON, but Microsoft Dynamics AX 2012 only supports Atom.
->No create, update, or delete: only reading  eature is supported in Microsoft Dynamics AX 2012.
->No support for query options:
->No support for queries with fetch mode 1:n:fetch mode to 1:1, which is the only supported fetch mode in AX 2012.
->No support for views:

Send outbound documents with AIF in AX 2012

Send outbound documents with AIF in AX 2012
http://www.sonata-software.com/blog/dynamics/send-outbound-documents-aif-ax-2012-0

Consuming Web service in ax 2012 without VS

// Add service reference without using VS in ax 2012
//Consuming Web service in ax 2012 without VS
Create new Project
->Add new object for reference and set properties->ProjectGroupType to Reference
->Right new created object in Project
 -> Three option is appplicable
  -> Group
  -> Reference
  -> Service reference
-> Use service reference for consume web service in ax 2012

EMail with outgoing email table as system std

static void MailTest_san(Args _args)
{
    VendTable       vendTable;
    void SendEmail(Str _Recipitent,Str    _subject,Str _message,VendTable    _vendTable)
    {
        SysOutgoingEmailTable               outgoingEmailTable;
        SysOutgoingEmailData                outgoingEmailData;
        SysEmailItemId                      nextEmailItemId;
        Map                                 map;
        BinData                             binData = new BinData();
        container                           data;
        container                           embeddedBinaryData;
        Filename                            filePath;
        Filename                            filename;
        Filename                            fileExtension;
        CLRObject                           ex;
        ;
        try
        {
            map = new Map(Types::String, Types::String);
            map.insert('Supplier Id', _vendTable.AccountNum);
            map.insert('Supplier Name', _vendTable.name());
            map.insert('Supplier Type', _vendTable.SupplierType);
            map.insert('Supplier Category', _vendTable.SupplierCategory);
            map.insert('Supplier Sub Category', _vendTable.SupplierSubCategory);
            map.insert('Contact Details',strFmt("%1/%2",_vendTable.phone(),_vendTable.email()));
            ttsBegin;
            nextEmailItemId                                 = EventInbox::nextEventId();
            outgoingEmailTable.EmailItemId                  = nextEmailItemId;
            outgoingEmailTable.IsSystemEmail                = NoYes::No;
            outgoingEmailTable.Sender                       = "test@gmail.com";
            outgoingEmailTable.SenderName                   = "ADNEC";
            outgoingEmailTable.Recipient                    = _Recipitent;
            outgoingEmailTable.Subject                      = _subject;
            outgoingEmailTable.Priority                     = eMailPriority::High ;
            outgoingEmailTable.WithRetries                  = false;
            outgoingEmailTable.RetryNum                     = 2;
            outgoingEmailTable.UserId                       = curUserId();
            outgoingEmailTable.Status                       = SysEmailStatus::Unsent;
            outgoingEmailTable.Message                      = SysEmailMessage::stringExpand(_message, map);
            outgoingEmailTable.LatestStatusChangeDateTime   = DateTimeUtil::getSystemDateTime();
            outgoingEmailTable.insert();
            ttsCommit;
        }
        catch
        {
            ex = CLRInterop::getLastException();
            while(ex != null)
            {
                error(ex.ToString());
                ex = ex.get_InnerException();
            }
        }
    }
    ;
    while select * from vendTable
            //where vendTable.AccountNum == "vendornum"
    {
        SendEmail("senderemail address",strFmt("%1 - Suplier Id %2",SysEmailMessageTable::find("emailtest","en-us").Subject,vendTable.AccountNum),
                                                SysEmailMessageTable::find("emailtest","en-us").Mail,vendTable);
    }
}

Sunday, May 28, 2017

Mapping two dataset fields in to one tablix in SSRS

//Mapping two dataset fields in to one tablix in SSRS

//Dataset - dataset1(Value1,Value2,Value3)
Dataset - dataset2(Value1,Value4)

SSRS design
Tablix (parent dataset- Dataset1)

//Requirement - In same tablix need to map dataset2 fields.

//Below Expression
=lookup(Field!Value1.Value,Fields!Value1.value,Fields!Value4.value,"Dataset2")

Skip Inventory reservation on Sales order lines in D365FO

[ExtensionOf(classStr(InventUpd_Reservation))] final class InventUpd_ReservationCls_SAN_Extension {     void updateNow()     {         if(mo...