Tuesday, August 11, 2020

Factbox of workflow history on purchase order in D365FO

Introduction: 
In this blog, we will see how to create factbox of workflow history of purchase order in Microsoft Dynamics 365 Finance and Operations

Details: 
Well, Factbox is a very pretty cool feature available from the earlier version AX 2012. It is very easy to achieve in Dynamics 365 as well. 

Here we will see how easy it is and steps for that. 







 














As shown in the above image, we will be going to create factbox for the "Tracking details list"

Steps: 

Create the solution in Visual Studio and project for that. We'll be required four objects mainly that is one display MenuItem, Table, Form (on which to display factbox), another Form (factbox). Reference attached below:

1. Table

For displaying workflow history, we need to create the extension of table WorkflowTrackingStatusTable and create the normal relation and its relevant properties as

2. Factbox

Now we are required to create the factbox of workflow history. For that we will use the effortless technique, where we will duplicate the standard form "WorkflowStatus" and will name as CFSPurchTableWorkflowHistoryFactBox (give name as per your naming convention standards)

After duplicating and renaming the form, we need to change the pattern as "custom"



After applying the custom pattern, delete the NavigationList which is not required in factbox, and do visible false ActionPane and PanelTab

After that create the new Grid and assign the data source to it in the property and put all the required fields to show in factbox

3. Display MenuItem

We will attach the created factbox form to the display menu item and relevant label "Workflow history"

4. Base form

Base form we call it as where we will attach the factbox. Here it is purchase form. Go to Parm section and create a new part and give it a relevant name and its properties

Properties: 

Data source: Attached data source with which workflow history is connected
Data Source Relation: WorkflowTable.RelationName
Name: Part name

That's it. Build the project and go the frontend and check the output how it looks like.

Conclusion:

It results as (we can scroll left and right to see all the tracking details list)

Hurray, How pretty it looks like!

In the above example, we have seen how we can develop factbox in Microsoft Dynamics 365 Finance and Operations.  

Thanks for reading and stay connected with us for more updates!!!

Jagdish Solanki | Senior Technical Consultant | CloudFronts

Business Empowering Solutions Team

“Solving Complex Business Challenges with Microsoft Dynamics 365 & Power Platform”

Email Parameters | SMTP Configurations for sending Test Mail from D365FO

Introduction: 
In this blog, we will see how to set up email parameters and SMTP configuration for sending test mail from Microsoft Dynamics 365 Finance and Operations.

Details: 
Go to the Email Parameters by follow this path: System administration -> Setup -> Email -> Email Parameter.

Another easiest way to find the email parameter in a quick manner, go to the search box and simply write email parameter as below shown screenshot













Steps: 

1. In the configuration tab, set up the SMTP as in shown below image
Move SMTP in the right box named with ENABLED to enable 

2. In SMTP settings tab, configure the below stuff: 

    Outgoing mail server: smtp.office365.com
    SMTP port number: 587
    Username: put the email id from which email should be sent 
    Password: appropriate password of the email
    Specify if SSL is required: true

3. In Test mail tab: 

    Email provider: SMTP
    Send to: Put the email to whom test mail should be sent 
In the final, click on the "Send test mail" and then sample mail will be sent to the respective email address.
    
Conclusion:
In the above blog, we have seen how to set up SMTP configuration to test "send email" functionality from the email parameter form. 

Thanks for reading !!!

Monday, August 10, 2020

What is Kernel Hotfix and Application Hotfix in Microsoft Dynamics AX 2012?

Introduction: 

In this blog, we will see what includes in Kernel Hotfix and Application Hotfix in Microsoft Dynamics AX 2012. 

Details: 

1. Kernel Hotfix: 

·    This hotfix updates Microsoft dlls. E.g. update are the executable files (ax32.exe, ax32serv.exe) and assemblies (Microsoft.Dynamics.AX.*.dll)

·    There are no code-level changes.

·    This hotfix required to install at all the client PCs & Servers, where any of the components of AX is installed.

·    A kernel fix is always cumulative.


2. Application Hotfix: 

        ·   This type of hotfixes affects code development done by partners.

·    Updates in the SYP, GLP, FPP & SLP layers (the layers reserved for Microsoft code). These changes are made in the AX model store in AX 2012 and later versions

·    An application fix is NOT cumulative.


Import, Export and Uninstall the model from Microsoft Dynamics AX 2012

Introduction: 

In this blog, we will see how we can import, export and uninstall the model from Microsoft Dynamics AX 2012 

Details: 

Prerequisite for import, export and uninstall the model from the environment, run the command prompt as in administrator mode.

Form Importing the model script: 
Install-AXModel -File "Path_Of_the_Model_File" -server ServerName -database DatabaseName_Model –Details

Exmaple:
Install-AXModel -File "D:\Model\VARModel.axmodel" -server CFSEnvVM -database DAX2012R3CFSEnv_Model –Details
Form Exporting the model script: 
Export-AXModel -Model 'Model' -File 'Path' -server 'ServerName\DBName' -database 'DatabaseName_Model'

Exmaple:
Export-AXModel -Model 'CUS Model' -File 'C:\ModelFile\CUSModel.axmodel' -server 'TESTSERVER\CFSDAXSQL2014' -database 'DAX2012R3Blank_model'
Form Uninstalling the model script: 
Uninstall-AXModel -Model 'Model' -server 'ServerName' -database 'DatabseName_Model'

Exmaple:
Uninstall-AXModel -Model 'VAR Model' -server 'CFSEnvVM' -database 'DAX2012R3Test_model'

Thanks for reading !!!

How to export projects layerwise in Microsoft Dynamics AX 2012

 Introduction: 

How to export projects layerwise (usr, cus, var, etc.) in Microsoft Dynamics AX 2012? 

Details: 
Here, we will see how we can export the projects from AX 2012. Now It's very easy to do so. 

We need to create a class or job in the respective environment and just need to do run. 
static void exportProjects(Args _args)
{
    #AotExport
    TreeNodeIterator        tni;
    ProjectNode             projectNode;
    int                     exportFlag;
    Dialog                  dialog = new Dialog();
    DialogField             folderName;
    DialogField             projectDefinitionOnly;
    DialogField             exportFromLayer;
    DialogField             projectType;
    UtilEntryLevel          layer;

    SysExcelApplication     application;
    SysExcelWorkbooks       workbooks;
    SysExcelWorkbook        workbook;
    SysExcelWorksheets      worksheets;
    SysExcelWorksheet       worksheet;
    SysExcelCells           cells;
    SysExcelCell            cell;
    SysExcelFont            font;
    int                     row;
    CustTable               custTable;
    str                     fileName;

    fileName    = "D:\\Backup XPOs.xlsx"; //By specifying the directly, we will get the list of exported projects
    //Excel Part..............................................................................

    dialog.addText("This will export all projects (shared or private) that exist in a selected model.");
    projectType             = dialog.addFieldValue(enumStr(ProjectSharedPrivate), ProjectSharedPrivate::ProjShared);
    projectDefinitionOnly   = dialog.addField(extendedTypeStr(NoYesId), 'Project Definition Only');
    folderName              = dialog.addField(extendedTypeStr(FilePath));
    exportFromLayer         = dialog.addField(enumStr(UtilEntryLevel), 'Projects from layer');

    dialog.run();

    if (dialog.closedOk())
    {
        if (!folderName.value())
            throw error("Missing folder");

        exportFlag = #export;
        if (projectDefinitionOnly.value())
            exportFlag += #expProjectOnly;

        layer = exportFromLayer.value();
        
        switch (projectType.value())
        {
            case ProjectSharedPrivate::ProjPrivate:
                tni = SysTreeNode::getPrivateProject().AOTiterator();
                break;

            case ProjectSharedPrivate::ProjShared:
                tni = SysTreeNode::getSharedProject().AOTiterator();
                break;
        }

        projectNode = tni.next() as ProjectNode;

        while (projectNode)
        {
            if (projectNode.AOTLayer() == layer && projectNode.name() like "CFS*") //if [like] specifies, system will export the projects which names starts with CFS
            {
                projectNode.treeNodeExport(folderName.value() + '\\' + projectNode.name() + '.xpo', exportFlag);

                row++;
            }

            projectNode = tni.next() as ProjectNode;
        }

        info("Projects Exported Successfully & Exported Projects List to Excel Sheet");
    }
    else
        warning("No action taken...");
}
After running the class it will prompt as below. After that select the directory where to export all projects and select the layer from which layer all projects should be exported. 
















Thanks for reading!!!