Kamis, 28 Juli 2022

Error Worfklow karena SSL/TLS AX2012

Stopped (error): ClrInterop Exception: Exception has been thrown by the target of an invocation.
The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

Solved by :
Restart ADFS di server.
ex : 10.23 dan 10.31
Restart AOT dimana server WF.
ex : 10.19

Done 

Kamis, 21 Juli 2022

Script untuk mengambil beberapa karakter dari satu buah Str parameter

static void PSMSplitstr2(Args _args)
{
    //mendapatkan '000002' dari str paramAsStr.

    str paramAsStr = "PSM22-000002";
    List paramAsList;
    ListEnumerator le;
    int             i = 0;
    str             getnumber;

    paramAsList = strSplit(paramAsStr, "-");
    
    le = paramAsList.getEnumerator();
    while(le.moveNext())
    {
        if(i==1)
        {
        getnumber = le.current();    
            info(getnumber);
        }
        i++;
    }
}

from
https://www.schweda.net/blog_ax.php?bid=628&wdl=en

Minggu, 26 Juni 2022

Searching deadlock in AX Database

Put this code to get know some process which caused some deadlock in AXDB

Select your AX Database and klik New Query :

SELECT  wt.session_id, 
    ot.task_state, 
    wt.wait_type, 
    wt.wait_duration_ms, 
    wt.blocking_session_id, 
    wt.resource_description, 
    es.[host_name], 
    es.[program_name] 
FROM  sys.dm_os_waiting_tasks  wt  
INNER  JOIN sys.dm_os_tasks ot ON ot.task_address = wt.waiting_task_address 
INNER JOIN sys.dm_exec_sessions es ON es.session_id = wt.session_id 
WHERE es.is_user_process =  1

Senin, 06 Juni 2022

Selasa, 29 Maret 2022

Class Product Receipt di AX2012

Jadi ditempat kerjaku sekarang ada requirement untuk menyimpan nomor kendaraan supplier yang mengantarkan barang.

Di standard AX tidak ada kolom no Polisi. jadi harus saya custom di PurchParmTable.
pertanyaanya class apa yang mengeksekusi Product receipt dan menciptakan record di VendPackingSlipJour.

Class yang mengekseskusinya ada di PurchPackingSlipJournalCreate.
Method yang saya pakai adalah PurchPackingSlipJournalCreate.initheader().

Class ini extends ke sebuah class abastract. Jadi jika ingin mendebug class ini kita harus menguncek CILL di User Option.

selamat mencoba

Jumat, 11 Februari 2022

Create notification x++

untuk menghardcode notification/lonceng di AX bisa memakai table-table berikut.

EventInbox  &   SysUserInfo 

Contoh penggunaan :

EventInbox                  EventInbox,inbox;
SysUserInfo                 SysUserInfo;


select SysUserInfo order by SysUserInfo.Id
       where SysUserInfo.Id == "Husna";//ax account Husna

        ttsbegin();
        select maxof(inboxId) from inbox;
        
        EventInbox.InboxId  = EventInbox::nextEventId();
        EventInbox.CompanyId = "psm";
        EventInbox.AlertTableId = 105939;//2271;//diisi dengan tableId yang menjadi referensi table.
        EventInbox.AlertCreatedDateTime = DateTimeUtil::utcNow();
        EventInbox.ParentTableId = 105939;//2271;//diisi dengan tableId yang menjadi referensi table.
        EventInbox.IsRead = NOYES::No;
        EventInbox.Subject = "Update minimum stock information "+usernotif.ItemId;
        EventInbox.AlertedFor = "update minimum stock information "+usernotif.ItemId;
        EventInbox.UserId = SysUserInfo.Id;
        EventInbox.ShowPopup = NOYES::Yes;
        EventInbox.Visible = NOYES::Yes;
        EventInbox.Message = strfmt("Minimum stok item "+usernotif.ItemId+" sudah lebih kecil atau sama dengan rata-rata pemakaian");
        EventInbox.insert();

        ttscommit();

Mencari userId dari HcmWorker.RecId

Untuk mencari User Id dari HcmWoker bisa menggunakan DirPersonUser::findParty()

contoh penggunaan :

HcmWorker            worker;
;

select worker
where worker.recId == 12345678;

info(DirPersonUser::findParty(worker.person).user);

Cloud hosted environment di D365

Biasanya kita menginginkan sebuah environment yang sama dengan LIVE/PROD untuk mengtest sebuah proses. Maka kita bisa menggunakan fitur Clou...