DMT - Add Memo Table Record - Unable to call method

,

Good advice. I already have a BAQ showing the memos for this job. I am duplicating everything except for the SysRowID.

Enable tracing then do an update/add by hand. Just to see if those other Keys (or other fields) actually have required data in them.

One last thing. I’v had some issues the data types for Key fields acting quirky. maybe a CAST is in order.

edit

one more thing. Are Memo’s actually part of Erp or Ice?

The other memo records for this job say Erp. I think maybe my job num was throwing it off. So I added a ’ in front to convert it to a text field in Excel. These didn’t solve the problem.

I will try tracing a manual entry. Good idea.

Don’t forget that you can enable tracing in DMT also. Be good to do a side by side comparison.

How do you trace DMT?

When I traced the manual entry I found that some fields are being updated that I didn’t include. Here are the relevant trace bits:

  <Memo>
          <Company>VTAERO</Company>
          <RelatedToSchemaName>Erp</RelatedToSchemaName>
          <RelatedToFile>JobHead</RelatedToFile>
          <Key1>27489/9</Key1>
          <Key2></Key2>
          <Key3></Key3>
          <MemoDate>2022-08-12T17:54:46.5-04:00</MemoDate>
          <MemoNum>1235399</MemoNum>
          <MemoUserID>NATHAN</MemoUserID>
          <Notify>false</Notify>
          <NotifyUserID></NotifyUserID>
          <MemoDesc>new teste title</MemoDesc>
          <MemoText>new test body</MemoText>
          <CategoryID></CategoryID>
          <RelatedToSysRowID>bb55aa02-d799-4fb2-aba3-345011938b2a</RelatedToSysRowID>
          <ChangeTrackChargeIDBtn>false</ChangeTrackChargeIDBtn>
          <ChangeTrackAmount>0.00000</ChangeTrackAmount>
          <ChangeTrackChargeID></ChangeTrackChargeID>
          <ChangeTrackChargeDesc></ChangeTrackChargeDesc>
          <ChangeTrackStatus></ChangeTrackStatus>
          <SysRevID>114931703</SysRevID>
          <SysRowID>3c823e19-c937-4ab3-b080-88c4e1b44c97</SysRowID>
          <CategoryDesc></CategoryDesc>
          <MemoCompanyDate>2022-08-12T13:54:46.5-04:00</MemoCompanyDate>
          <BitFlag>0</BitFlag>
          <RowMod></RowMod>
        </Memo>

As far as I can tell, the trace for the manual approach never calls BO.Job.GetRows(). So I am not sure why I am getting this error at all.

I tried again with values for Notify, ChangeTrackChargeIDBtn, ChangeTrackAmount, and RowMod. But I still get the same error. Why does Job.GetRows need to be part of this anyway?

Thanks everyone for pitching in. I love trying all your ideas! Keep em coming!
Nate

There’s a gear or settings in the lower right of the DMT window.

1 Like

Thanks for that! I didn’t get trained on that. :slight_smile:
However, running the trace on this failing memo DMT doesn’t give me much information:

<tracePacket>
  <businessObject>Ice.Proxy.BO.MemoImpl</businessObject>
  <methodName>GetRows</methodName>
  <appServerUri>https://centralusdtpilot01.epicorsaas.com/SaaS512Pilot/</appServerUri>
  <returnType>Ice.BO.MemoDataSet</returnType>
  <localTime>8/12/2022 14:07:00:4695360 PM</localTime>
  <threadID>26</threadID>
  <correlationId>77209c2e-e36c-41e0-9656-da82e780ce7d</correlationId>
  <executionTime total="280" roundTrip="262" channel="0" bpm="0" bpmDataForm="0" other="18" />
  <retries>0</retries>
  <parameters>
    <parameter name="whereClauseMemo" type="System.String"><![CDATA[Company='VTAERO' and RelatedToFile = 'JobHead' and Key1 = '27489/9' and Key2 = '' and Key3 = '' and MemoNum=0]]></parameter>
    <parameter name="pageSize" type="System.Int32"><![CDATA[0]]></parameter>
    <parameter name="absolutePage" type="System.Int32"><![CDATA[1]]></parameter>
  </parameters>
  <returnValues>
    <returnParameter name="" type="Ice.BO.MemoDataSet">
      <MemoDataSet xmlns="http://www.epicor.com/Ice/300/BO/Memo/Memo" />
    </returnParameter>
    <returnParameter name="morePages" type="System.Boolean"><![CDATA[False]]></returnParameter>
  </returnValues>
</tracePacket>

<tracePacket>
  <businessObject>Ice.Proxy.BO.ZDataTableImpl</businessObject>
  <methodName>GetRows</methodName>
  <appServerUri>https://centralusdtpilot01.epicorsaas.com/SaaS512Pilot/</appServerUri>
  <returnType>Ice.BO.ZDataTableDataSet</returnType>
  <localTime>8/12/2022 14:07:00:7939385 PM</localTime>
  <threadID>26</threadID>
  <correlationId>b41b41b9-1863-4036-ae5f-af94d14a53bb</correlationId>
  <executionTime total="159" roundTrip="145" channel="0" bpm="0" bpmDataForm="0" other="14" />
  <retries>0</retries>
  <parameters>
    <parameter name="whereClauseZDataTable" type="System.String"><![CDATA[SystemCode='ERP' and DataTableID='JobHead']]></parameter>
    <parameter name="whereClauseZLookupLink" type="System.String"><![CDATA[1=0]]></parameter>
    <parameter name="whereClauseZLinkColumn" type="System.String"><![CDATA[1=0]]></parameter>
    <parameter name="whereClauseZLookupField" type="System.String"><![CDATA[1=0]]></parameter>
    <parameter name="whereClauseZDataField" type="System.String"><![CDATA[1=0]]></parameter>
    <parameter name="whereClauseZKey" type="System.String"><![CDATA[DataTableID='JobHead']]></parameter>
    <parameter name="whereClauseZKeyField" type="System.String"><![CDATA[DataTableID='JobHead']]></parameter>
    <parameter name="pageSize" type="System.Int32"><![CDATA[0]]></parameter>
    <parameter name="absolutePage" type="System.Int32"><![CDATA[0]]></parameter>
  </parameters>
  <returnValues>
    <returnParameter name="" type="Ice.BO.ZDataTableDataSet">
      <ZDataTableDataSet xmlns="http://www.epicor.com/Ice/300/BO/ZDataTable/ZDataTable">
        <ZDataTable>
          <SystemCode>ERP</SystemCode>
          <DataTableID>JobHead</DataTableID>
          <Description>&lt;MemoMethod:Job&gt;              
Header Information file for Manufacture Work Orders (Jobs).
DELETE: Not allowed if job has had activity. Referenced in LaborDtl or PartTran.</Description>
          <SchemaName>Erp</SchemaName>
          <DBTableName>JobHead</DBTableName>
          <WhereClause></WhereClause>
          <RestrictedByTer>false</RestrictedByTer>
          <RestrictedByPlant>false</RestrictedByPlant>
          <FullSync>true</FullSync>
          <TableType>DB</TableType>
          <SystemFlag>true</SystemFlag>
          <TableLabel>Job</TableLabel>
          <ChgLogID>JobHead</ChgLogID>
          <BOUpdate></BOUpdate>
          <UpdateMethod></UpdateMethod>
          <CGCCode></CGCCode>
          <Interface></Interface>
          <SysRevID>110331944</SysRevID>
          <SysRowID>931a11f2-7607-41c2-9d91-9f6c00f97c1e</SysRowID>
          <BitFlag>0</BitFlag>
          <RowMod></RowMod>
        </ZDataTable>
        <ZKey>
          <SystemCode>ERP</SystemCode>
          <DataTableID>JobHead</DataTableID>
          <KeyID>ExternalPrimaryKey</KeyID>
          <Description>External PK for JobHead</Description>
          <IsPrimaryKey>true</IsPrimaryKey>
          <SystemFlag>true</SystemFlag>
          <External>true</External>
          <SysRevID>109512635</SysRevID>
          <SysRowID>af479c5b-c4b1-4c83-8403-a22f0138abbd</SysRowID>
          <BitFlag>0</BitFlag>
          <RowMod></RowMod>
        </ZKey>
        <ZKeyField>
          <SystemCode>ERP</SystemCode>
          <DataTableID>JobHead</DataTableID>
          <KeyID>ExternalPrimaryKey</KeyID>
          <Seq>1</Seq>
          <FieldName>Company</FieldName>
          <SystemFlag>true</SystemFlag>
          <SysRevID>109693749</SysRevID>
          <SysRowID>b09155fd-a744-4025-8905-a22f0138abbf</SysRowID>
          <BitFlag>0</BitFlag>
          <RowMod></RowMod>
        </ZKeyField>
        <ZKeyField>
          <SystemCode>ERP</SystemCode>
          <DataTableID>JobHead</DataTableID>
          <KeyID>ExternalPrimaryKey</KeyID>
          <Seq>2</Seq>
          <FieldName>JobNum</FieldName>
          <SystemFlag>true</SystemFlag>
          <SysRevID>109693750</SysRevID>
          <SysRowID>cddf84f7-cd59-40d3-9f58-a22f0138abbf</SysRowID>
          <BitFlag>0</BitFlag>
          <RowMod></RowMod>
        </ZKeyField>
      </ZDataTableDataSet>
    </returnParameter>
    <returnParameter name="morePages" type="System.Boolean"><![CDATA[False]]></returnParameter>
  </returnValues>
</tracePacket>

<tracePacket>
  <businessObject>Ice.Proxy.Lib.BOReaderImpl</businessObject>
  <methodName>GetRows</methodName>
  <appServerUri>https://centralusdtpilot01.epicorsaas.com/SaaS512Pilot/</appServerUri>
  <returnType>System.Data.DataSet</returnType>
  <localTime>8/12/2022 14:07:00:9555731 PM</localTime>
  <threadID>26</threadID>
  <correlationId>113d0fdc-dedd-488d-8c34-c15e66ef8e9f</correlationId>
  <executionTime total="127" roundTrip="127" channel="0" bpm="0" bpmDataForm="0" other="0" />
  <retries>0</retries>
  <parameters>
    <parameter name="serviceNamespace" type="System.String"><![CDATA[ERP:BO:Job]]></parameter>
    <parameter name="whereClause" type="System.String"><![CDATA[Company='VTAERO' and JobNum='27489/9']]></parameter>
    <parameter name="columnList" type="System.String"><![CDATA[SysRowId]]></parameter>
  </parameters>
</tracePacket>

Does this tell you anything?

Is that a field in DMT? My guess is that it is the SysRowID of the JobHead record. Id’ think that this is something DMT would calc for you - like when you enter the CustID, DMT figures out the actual CustNum.

edit

Also, is there any Change Log set on the JobHeader table? I’m wondering what the fields that start with ChangeTrack... are for.

Yes, I saw that field in the DMT template, so I tried adding it in and copying the GUID from the other memo rows for this job. I don’t think the DMT can determine the sysrowid just from key1 (jobNum) but I can export the sysrow ID for the job when I export the data with my BAQ. Unfortunately that still says nothing about the error in DMT, or why I am getting it.

I dont see any change log records for this job in Job Entry.

I’m just talking out loud here…

But it looks like that first BO call in your DMT trace is trying to find the related record. I’m basing that on the fact that the values your pass are used in a WHERE clause. But the returned values looks empty

<returnValues>
    <returnParameter name="" type="Ice.BO.MemoDataSet">
      <MemoDataSet xmlns="http://www.epicor.com/Ice/300/BO/Memo/Memo" />
    </returnParameter>
    <returnParameter name="morePages" type="System.Boolean"><![CDATA[False]]></returnParameter>
  </returnValues>

Just now noticed “SaaS512Pilot” Maybe you’re trying to do something that coan’t be done in your type of hosting environment

:grimacing:
I posted the dilemma up to my Epicor Support guy. I will post back if I get a reply this time.

This thread won’t solve your problem, but does point to Memo being an Ice schema

maybe @utaylor can give you some insight

1 Like

Not sure what the issue would be, did you add a memo to a job and then look at the record in the memo table before trying to create a DMT template?

Yes, I created several memos in various jobs to get a good idea of what other fields might be used. I used the same set of fields and am getting that weird error. The error doesn’t seem to point to a bad field, it is suggesting that the method is not available. Still waiting on Epicor support.

I wonder if the GUID is what is stopping me up here. I see other threads where folks can’t create Memos. In this thread, Brandon talks about creating a GUID in a BPM. Please tell me I don’t have to go this far just to add in a memo!?

Populating records with DMT, need GUID? - ERP 10 - Epicor User Help Forum (epiusers.help)

I even tried exporting the Memo table to excel from the BAQ (including the properly labeled field names). Then I just replaced the data with my data. I still get the same error. It is like the DMT just doesn’t do memos for some reason!

Hi Nate,
In reading through this post, a few questions came to mind that were not explicitly stated so here are my questions:

  1. Are there any security provisions (menu, field or Process) in either Job creation/updating or in memo creation or any Directives that might be driven by specific users or groups?
  2. Do you have and use a specialty DMTUserID and is that configured to allow DMT (newer versions User sec checkbox on Options tab)?
  3. Memo is a one table to many table relationship so in order to create the memo, it requires that foreign key field from Job, in this case. If it get that from the Job table, and a job is not fully engineered and released, would that inhibit the DMT getting what it wants from each job record in terms of that foreign key?
  4. Are your jobs always single assembly or do you have a hierarchical assembly structure and is the memo always to be linked at the same level (presumably assembly 0 level) i.e. does assembly level become a necessary element for establishing the relationship between Job and Memo tables (or any subordinate job table for that matter)?

Hello Henry,
All good questions!

  1. No special security or directives in place.
  2. No special DMT user.
  3. I am referencing the job sysrowid in the RelatedToSysRowID field. I used the same GUID as other memos saved for this job.
  4. Jobs can be either single or multi-assembly. In my testing it doesn’t seem to matter to DMT which kind of job I try to submit a memo for. The error message is always the same.

FWIW, my Epicor tech got back to me and said he also reproduced the error. I have submitted a case and waiting on a problem. I am thinking that when I use DMT to update all of our open jobs, I am going to have to skip the memo step. I really wanted to document the fact that I used DMT to update each open job, but DMT isn’t the silver bullet they sold us!

In the future, if they do get the DMT fixed for memos, I could always resubmit my intended job memos with backdated MemoDates. I think that is my plan going forward. Skip the memo for now, and add it later if Epicor can fix DMT.

Thanks for the suggestions!

Epicor support could not provide a solution. They opened a problem for this case: PRB0242993.
They also added a development task: TASK7200290. Which makes me hopeful that they will fix this one. I will post back if I hear anything new.
Thanks!

1 Like

Nice, sorry to hear this. Glad they acknowledged it and are trying to fix it.