Microsoft_MVP_banner

Import HRM Positions from Excel through X++

You can use different options to import data into Dynamics AX 2012 specially the subject line entity (Positions). Data import/export framework would be the best option to import it, you can also use excel addins for this purpose. However, due to large number of tables involved in few import process it might be difficult to judge right tables and their sequence.

You can also use X++ code to import data into AX either from CSV file or from Excel file. The following job in X++ may help you in importing positions from excel file.

static void ImportHRPosition(Args _args)
{
    SysExcelApplication     application;
    SysExcelWorkbooks       workbooks;
    SysExcelWorkbook        workbook;
    SysExcelWorksheets      worksheets;
    SysExcelWorksheet       worksheet;
    SysExcelCells           cells;
    COMVariantType          type;
    OMOperatingUnit         OMOperatingUnit;
    int                     row=1;


    Name                                name;
    FileName                            filename;
    HcmPosition                         HcmPosition;
    HcmPositionDetail                   HcmPositionDetail;
    HcmPositionWorkerAssignment         HcmPositionWorkerAssignment;
    HcmPositionDuration                 HcmPositionDuration;
    str                                 job;
    OMOperatingUnitNumber               department;


    ;
    application = SysExcelApplication::construct();
    workbooks   = application.workbooks();


    filename = “C:\import\HRPosition.xlsx”;
    ttsBegin;


    try
    {
        workbooks.open(filename);
    }
    catch (Exception::Error)
    {
        throw error(“File cannot be opened.”);
    }
    workbook    = workbooks.item(1);
    worksheets  = workbook.worksheets();
    worksheet   = worksheets.itemFromNum(1);
    cells       = worksheet.cells();
    
    do
    {
        row++;


        HcmPosition.PositionId  = cells.item(row, 1).value().bStr();
        HcmPosition.insert();
        
        department              = cells.item(row, 2).value().bStr();
        job                     = cells.item(row, 3).value().bStr();
        
        select firstOnly OMOperatingUnit where OMOperatingUnit.OMOperatingUnitNumber == department;
        if(OMOperatingUnit)
        {
            HcmPositionDetail.Department    = OMOperatingUnit.RecId;
            HcmPositionDetail.Job           = HcmJob::findByJob(job).RecId;
            HcmPositionDetail.Position      = HcmPosition.RecId;


            HcmPositionDetail.Title         = HcmTitle::findByTitle(HcmJobDetail::findByJob(HcmPositionDetail.Job).Description).RecId;
            HcmPositionDetail.Description   = cells.item(row, 4).value().bStr();
            HcmPositionDetail.ValidFrom     = DateTimeUtil::newDateTime(cells.item(row, 5).value().date(),timeNow());
            HcmPositionDetail.ValidTo       = DateTimeUtil::maxValue();
            HcmPositionDetail.insert();
            
            HcmPositionWorkerAssignment.ValidFrom   = DateTimeUtil::newDateTime(cells.item(row, 5).value().date(),timeNow());
            HcmPositionWorkerAssignment.ValidTo     = DateTimeUtil::maxValue();
            HcmPositionWorkerAssignment.Position    = HcmPosition.RecId;
            HcmPositionWorkerAssignment.Worker      = HcmWorker::findByPersonnelNumber(cells.item(row, 6).value().bStr()).RecId;
            HcmPositionWorkerAssignment.insert();
            
            HcmPositionDuration.Position    = HcmPosition.RecId;
            HcmPositionDuration.ValidFrom   = HcmPositionWorkerAssignment.ValidFrom;
            HcmPositionDuration.ValidTo     = DateTimeUtil::maxValue();
            HcmPositionDuration.insert();


            type = cells.item(row+1, 1).value().variantType();           
            
        }
    }
    while (type != COMVariantType::VT_EMPTY);
    application.quit();
    ttsCommit;
}

Share:

Related Posts

Microsoft Copilot
admin

Exploring Microsoft Copilot Architecture

Microsoft Copilot isn’t just another AI tool; it’s a comprehensive platform designed to be your indispensable companion, enhancing productivity, fostering creativity, and facilitating information comprehension all through a user-friendly chat interface. The concept of Copilot emerged two years ago when Microsoft introduced GitHub Copilot, aiming to assist developers in writing

Read More »
How to enable new Microsoft teams - Public Preview!
Microsoft Teams
Faisal Fareed

How to enable new Microsoft teams – Public Preview!

New Microsoft Teams is just AWESOME, quick but useful post below shows how you have this preview feature to make your life EASY!  Open Microsoft Teams admin center [Ask admin in your organization if you don’t have access] and follow path Teams > Teams update policies > Click on an existing

Read More »

Send Us A Message

Leave a Reply

Your email address will not be published. Required fields are marked *

Recent Post

Exploring Microsoft Copilot Architecture

Exploring Microsoft Copilot Architecture

Microsoft Copilot isn’t just another AI tool; it’s a comprehensive platform designed to be your indispensable companion, enhancing productivity, fostering creativity, and facilitating information comprehension all through a user-friendly chat interface. The concept of Copilot emerged two years ago when Microsoft introduced GitHub Copilot, aiming to assist developers in writing…

How to enable new Microsoft teams – Public Preview!

How to enable new Microsoft teams – Public Preview!

New Microsoft Teams is just AWESOME, quick but useful post below shows how you have this preview feature to make your life EASY!  Open Microsoft Teams admin center [Ask admin in your organization if you don’t have access] and follow path Teams > Teams update policies > Click on an existing…

Electronic Reporting: Send vendor payments to external azure storage via X++

Electronic Reporting: Send vendor payments to external azure storage via X++

Electronic Reporting module in Microsoft Dynamics 365 Finance Operation lets you archive file generated by ER at SharePoint location and in Azure Storage as per this link Archive ER destination type – Finance & Operations | Dynamics 365 | Microsoft Learn. APIs can be used to check message status and read…

FaisalFareed@2025. All rights reserved

Design by T3chDesigns