Prior to 2025.1 we could DMT bank adjustments including the GL account number into the header.
With 2025.1, functionality was added to allow multiple GL distributions for each bank adjustment line. The GL account can no longer be added to the header.
Has anyone been able to create a single pass DMT template to add bank adjustment lines and gl distribution accounts?
An additional thought to your question…prior to 2025.1, I could enter a Bank Fee ID and the GL would default to the GL associated with the Bank Fee ID. Now, regardless of what Bank Fee ID I enter, the GL Account in the new GL Distribution section defaults to the Default Bank Fee ID value…it does not update to match the Bank Fee ID that is entered…
Hi Richard
We use Bank Adj to process our Credit card charges in 2025.1 we have had to change to DMT from paste update. The Below DMT headers worked for us, things to note the group must exist prior to running the DMT, TranNum is 0 to allow the system to generate it, if you only require one GL per adjustment then BankTranGLDist#SeqNum should be 1.
Company
BankAcctID
TranNum
TranDate
GroupID
TranAmt
TranRef
BankFeeID
Voided
BankTranGLDist#SeqNum
BankTranGLDist#DocDistributionAmt
BankTranGLDistTGLC#GLAccount
Hi Melinda,
Thanks for the help. I used your suggested format and it worked perfectly for all the fields except the GLAccount. For some reason the GL Account is not importing.
what format are you using for the GL ac? Which Kinetic version do you have I’ve used it successfully on 2025.1.5 and 2025.1.8
We are on Kinetic 2025.1.5.
The format I’m using is 1240|00|0100
We use dash, try 124-00-0100
Tried it with dashes - that didn’t work either.
Log a case with support that DMT template was provided by them a few weeks ago should be working.
Thanks Melinda. I logged a case with support.
I know for another DMT we had to use the SeqValue1 to X to assign the GLs. It wasn’t for a Bank Adjustment but perhaps try that while waiting for Support. Could be a version difference why it’s not working for you.
Thanks for the suggestion Randy, tried that too and no success.
If Support comes up with a solution, I’ll post it.
Did you end up with a working template? This “enhancement” has completely hosed our processes and is taking way too much time to enter each line verses just doing a paste insert as we’ve done for years.
We also ran into this breaking change.
I wrote a BPM that will force an account entered in the BankTran.GLAccount field to be set instead of the default account. Now we can use paste new like we did before.
This is a Post Processing BPM on BankAdjEntry.Update.
Add a reference to Erp.Contracts.GLAccount
foreach (var row in ds.BankTran.Where(o => string.IsNullOrEmpty(o.GLAccount) == false).ToList())
{
// Set dataset
var dataSet = ds;
// Get BankTranGLDistTGLC
var bankTranGLDistTGLC = dataSet.BankTranGLDistTGLC.FirstOrDefault(o => o.Company == row.Company && o.RelatedToFile == "BankTranGLDist" && o.BankAcctID == row.BankAcctID && o.TranNum == row.TranNum);
// Get GL account desc
var display = default(string);
var description = default(string);
this.CallService<GLAccountSvcContract>(bo => bo.GetGLAcctDispAndDesc(bankTranGLDistTGLC.COACode, row.GLAccount, "", false, "", out display, out description));
// Get BankTranGLDist
var bankTranGLDist = dataSet.BankTranGLDist.First();
// Create copy of original row;
var originalRow = dataSet.BankTranGLDist.NewRow();
BufferCopy.Copy(bankTranGLDist, originalRow);
dataSet.BankTranGLDist.Add(originalRow);
// Set properties
bankTranGLDist.GLAccount = display;
bankTranGLDist.GLAccountDesc = description;
bankTranGLDist.RowMod = "U";
// Create copy of original row;
var originalRow2 = dataSet.BankTranGLDistTGLC.NewRow();
BufferCopy.Copy(bankTranGLDistTGLC, originalRow2);
dataSet.BankTranGLDistTGLC.Add(originalRow2);
// Set properties
bankTranGLDistTGLC.GLAccount = display.Replace("-", "|");
bankTranGLDistTGLC.GLAccountAccountDesc = description;
var accountSplit = bankTranGLDistTGLC.GLAccount.Split("|");
bankTranGLDistTGLC.SegValue1 = accountSplit.ElementAtOrDefault(0);
bankTranGLDistTGLC.SegValue2 = accountSplit.ElementAtOrDefault(1);
bankTranGLDistTGLC.SegValue3 = accountSplit.ElementAtOrDefault(2);
bankTranGLDistTGLC.IsModifiedByUser = true;
bankTranGLDistTGLC.RowMod = "U";
// Don't need BankTran for next update
dataSet.BankTran.Clear();
// Call update
this.CallService<BankAdjEntrySvcContract>(bo => bo.Update(ref dataSet));
}
