DMT & Change Log Report - Assistance Needed

, ,

Working on a project for schedule uploads from a buyers portal. The plan was to download a CSV from their portal and upload it to our system using DMT. This should allow for updates to the schedule and add new entries. I then want to use the Change Log report and some UD fields to capture the previous data for each modified entry and the updated data.

Now for where I need help. On the DMT side, I see a place for personalizing a template, and when I’m done using that it gives me a CSV format. I do not see that personalization anywhere on the listing. Is it saved somewhere? On the Change Log Report side how and where do I find the customization tool to point it to my UD fields and PO tables in epicor?

I recommend since you are in the 600+ version that you take a look at CDC (change data capture) to capture the changes to your records (instead of change log)
I’m not sure what you mean with your DMT question, when you personalize a template it gives you a CSV with those columns in it and that file is saved wherever you want to save it.

1 Like

@josecgomez,

Ill look at CDC thanks for the recommendation! Will that work with our gov cloud system?

The DMT question was related to uploading that template once I populate it. Will DMT accept it as it and just repopulate the associated fields or does it not work like that?

The “templates” just create the file with the columns selected, for the specific DMT object you are using.

You would then add your data as rows, leaving the original row to become the header row.

In DMT, after selecting the DMT object to modify (like Sales Order Header), load your file (the template you added the rows to).

edit

It might not be obvious, but you click the button named "<DMT object> Source…" to load your DMT file

1 Like

I think you’re asking if DMT just updates the DB fields based on your supplied file.

The answer is “kind of”. It doesn’t just update DB tables directly. DMT calls the Business Objects that normally run in the client when changes are made via the client, using the info in your file. By calling the BO, additional checks and actions occur. Here’s a few examples:

  • Closing an Sales Order Header (by setting the OpenOrder column to FALSE) does end up setting OrderHed.OpenOrder to false. But it will also close any open lines and releases. Just like if you selected “Close Order” in Order Entry.

  • Trying to change a PO Line on a PO marked Approved. Just like you cannot change the line of an Approved PO in PO entry, DMT cannot do that either. You would have to do it in three steps.

    1. Un-Approve the PO
    2. Update the PO Line
    3. Re-Approve the PO

The above could be done as 3 DMT uploads, or possibly as a single DMT using the “PO Combined” DMT object. The method using “PO combined” would require three rows One for each of the actions mentioned above.

Here’s an example of changing the Qty of line 1 of Approved PO 1234, from 5 to 10.
(note that it wouldn’t actually work as other fields are probably required)

Company  PONum  VendorVendID  Approve  PODetail#POLine  PODetail#BaseQty
MC       1234   ACME          FALSE    1                5
MC       1234   ACME          FALSE    1                10
MC       1234   ACME          TRUE     1                10

The first two lines might be able to be combined, but I prefer to do things one step at a time.

1 Like

I have done some work on the Change Log. I have it to where it shows most of the data I’m after. The issue I’m having is with previous part number on the OrderRel table. When I upload the data change for part number it shows the change on the part number, but Previous Part Number is still blank. Does this populate from a different area from OrderDtl Partnum or OrderRel Partnum?

Additionally I would like some assistance getting previous entries in data tables to populate into UD tables.

Have you tried changing just the PartNum on the OrderDtl? It should flow through to the OrderRel.

Also, don’t just assume that a built-in field works a certain way. Have you confirmed that the OrderRel.PrevPartNum field is updated when you change the PartNum on the order line via the UI?

How do I check how that field is populated?

If you have tracing turned on, I’d expect it to show up there.

image

1 Like

Make a BAQ of the OrderRel table, and look at the results before changing it and after.

FWIW - I already did that, and a change to the PrderDtl.PartNum, does indeed update the OrderRel.PrevPartNum.

@ckrusen, I did that and I’m seeing a change same as you. I’m working on assigning previous entries into a UD field. instead. Do you have any tips on how to do this?

The ChangeLog (on the OrderDtl table) will capture it.

image

What do you need it for? If its for anything that’s automated, then the ChangeLog file has shortcomings, and is a pain to parse.

The most important thing to note about the changelog is that change log records are tied to table records. If that table record is deleted (like deleting a line or a release), the changes associated with that record are lost. For example:

  1. New line (Line 2) added to an order.
    Changelog contains
    manager 10:23:29 New Record

  2. Line 2 P/N changed from CB-0001 to CB-0003
    Changelog contains:
    manager 10:23:29 New Record

    manager 10:24:54
    PartNum: CB-0001 -> CB-0003

  3. Line 2 deleted
    No change Log records exist

  4. New line added, set P/N to CB-0003
    Changelog contains
    manager 10:28:50 New Record

So from the change log it looks like CB-0003 was added as the “2nd line”, and no changes were made since the record was added.

@ckrusen,

We are wanting to make a report that shows what was updated through our scheduled DMT Upload and what the previous entries for each changed component were.

I think the simplest would be a DD on changes to the OrderDtl , that add records to a UD table. Use the OrderNum, OrderLine, OrderRel, and DateTime as key fields.

@ckrusen,

Whats a DD? Still trying to keep track of all the acronyms. Currently I’m trying to build a BPM workflow that sets the UD field ttOrderRel.PrevShipTo_c to ttOrderHedRow.ShiptoNum using preprocessing. However, the UD field is not receiving any information.

BPM’s come in two flavors DD’s (Data Directives), and MD’d (Method directives). But must people refer to the MD as a BPM.

  1. DD’s - monitor the DB tables for new or changed records in the table. There are two types:
    a. The In-Transaction (“In-Tran”) type fires before the table is updated.
    b. The Standard type fires after the table has been updated.

  2. MD’s (or “BPM’s”) - work on “Business Objects” (BO’s). The easy way to think of these is that they can be triggered when specific application functions happen. The BO for SalesOrder, has many functions that are called when the client program does various things. The function that is called is known as the “Method”.
    For example, the BO SalesOrder , has a Method named ChangeDiscountPercent. When the Discount Percent is changed on an order, it is the function that is called to recalculate discounts.
    MD’s have two types, Pre- and Post- Processing. One will ahppen before the builtin method happens, and the other after.

Updating info outside of the scope of the BPM (the db table in a DD, and the tables related to the BO in a MD) can be difficult.

DD’s are best for very simple things, like updating a tables UD field, on a new record creation or change. For example, say you have a UD field Created_c in a table, and wanted to set that field to the DateTime when the record is created.

MD’s are much better for complex actions that might span several tables. Like how a Sales order has Header, Detail and Release tables, and you might want to control something in the Header, when info on a release changes or meets some condition.

1 Like

I’m having the same issue with DD’s not pushing a value out to the UD field.

image

I’m confused as to why, this doesnt set the UD field to the updated value.

@ckrusen,

I am trying to follow this thread on how to assign the value to the UD.

I am using the following code to try and assign the value and getting the following error.

I’ve got to run… but there’s some quirk about updating UD fields in BPM’s. It might be that.

Look at this post (and the one below it)

Ran into another problem with DMT. I need to be able to update ShipToNum. If I select ShipToNum and update it assigns the value to the OrderHed table and doesn’t trickle down to the OrderRel to populate the PrevShipToNum that I need for our report to compare against. If I go into Template builder and add in:

I then get the following error:

Not sure why its complaining about OrderDtl#OrderLine when the selection is for OrderRel#ShipToNum.