Skip to main content
Post a question

Notifications

Community site session details

Community site session details

Session Id : R0jDYmL7J59Fs9cc4HQhxW
Finance | Project Operations, Human Resources, ...
Suggested answer

Work Item redirect to related table form but not display record

Like (3) ShareShare
ReportReport
Posted on 19 Mar 2025 08:10:12 by 145
Hi Experts,
 
I have created one custom workflow on Fixed Asset form. I faced an issue that when I clicked on my fixed asset document ID from the WorkflowWorkList form, it redirected me to the AssetTable form, but it didn't show the related record.
 
 
 
I tried to extend the AssetTable form init() method and add the RecId to the range, but it doesn't work.

From the screenshot, we can see it does print out the value of this.args().record(), which is the AssetTable record RecId. My code is as below:
[ExtensionOf(formStr(AssetTable))]
final class AssetTableRec_ADSKPSB_Extension
{
    void init()
    {
        AssetTable assetTable = this.args().record();

        next init();

        QueryBuildDataSource qbds;
        QueryBuildRange qbr;

        Info(strFmt("from init method: %1", assetTable.RecId));

        if (assetTable && assetTable.RecId)
        {
            qbds = AssetTable_ds.queryBuildDataSource();
            qbds.clearRanges();
            qbr = qbds.addRange(fieldNum(AssetTable, RecId));
            qbr.value(SysQuery::value(assetTable.RecId));
        }
    }

}
After I capture a trace, I found that there is a filter in selecting data from the AssetTable, which is the MainAssetId value is equal to the AssetId. If I tried to comment the MainAssetId filter and the order by clause, the SQL return the correct result.
 
SELECT T1.ACQUISITIONDATE_W,
	T1.ACQUISITIONPRICE_W,
	T1.ACQUISITIONVALUENO,
	T1.ALLOWSALE_PL,
	T1.ASSESSMENTNO,
	T1.ASSESSMENTTAXNO,
	T1.ASSETACTIVITYCODE,
	T1.ASSETCLASSIFICATION_JP,
	T1.ASSETDEFERREDTYPE_JP,
	T1.ASSETGROUP,
	T1.ASSETID,
	T1.ASSETPRODUCTIONYEAR_PL,
	T1.ASSETPROPERTYGROUP,
	T1.ASSETREPLACECOST,
	T1.ASSETSOURCETYPE_CN,
	T1.ASSETTYPE,
	T1.BARCODE,
	T1.CATEGORYID_LV,
	T1.CONDITION,
	T1.DEFAULTDIMENSION,
	T1.DEPARTMENT,
	T1.DISPOSALRESTRICTION,
	T1.DOCUMENTS,
	T1.EXCEPTIONTAXATIONCODE_JP,
	T1.EXCEPTIONTAXATIONRATE_JP,
	T1.EXCEPTIONTAXATIONRATEDENOMINATOR_JP,
	T1.FISCALESTABLISHMENT_BR,
	T1.GISREFERENCENUMBER,
	T1.GUARANTEEDATE,
	T1.ICMSCREDITINSTALLMENTS_BR,
	T1.INSURANCEAGENT,
	T1.INSURANCEDATE1,
	T1.INSURANCEDATE2,
	T1.INSURANCEPOLICYNUM,
	T1.INSURANCEVENDOR,
	T1.INSUREDATMARKETVALUE,
	T1.INSUREDVALUE,
	T1.ISMISSING,
	T1.ISRENTED_JP,
	T1.ISSECONDHAND_JP,
	T1.LASTFACTORUPDATEDATE,
	T1.LASTMAINTENANCE,
	T1.LEASE,
	T1.LENDERNAME_JP,
	T1.LOCATION,
	T1.LOCATIONMEMO,
	T1.MAINASSETID,
	T1.MAINTENANCEINFO1,
	T1.MAINTENANCEINFO2,
	T1.MAJORTYPE,
	T1.MAKE,
	T1.MODEL,
	T1.MODELYEAR,
	T1.NAME,
	T1.NAMEALIAS,
	T1.NEXTMAINTENANCE,
	T1.PARCELID,
	T1.PHYSICALASSETNUMBER_BR,
	T1.PHYSICALINVENTORY,
	T1.PISCOFINSRECEIVABLELONGTERM_BR,
	T1.POLICYAMOUNT,
	T1.POLICYEXPIRATION,
	T1.PROPERTYTYPE,
	T1.PURCHLINERECID,
	T1.QUANTITY,
	T1.REFERENCE,
	T1.RETURNONINVESTMENTSNO,
	T1.ROOMNUMBER,
	T1.SERIALNUM,
	T1.SORTINGID,
	T1.SORTINGID2,
	T1.SORTINGID3,
	T1.SUBVENTIONNO,
	T1.SUBVENTIONTAXFREENO,
	T1.TAXCOUNTYNO,
	T1.TAXICMSOUTGOING_BR,
	T1.TECHINFO1,
	T1.TECHINFO2,
	T1.TECHINFO3,
	T1.TITLEHOLDER,
	T1.TRANSFERREDFROMINVENTORY_BR,
	T1.UNITCOST,
	T1.UNITOFMEASURE,
	T1.VALUEAT19840101NO,
	T1.WORKERCONTACTNAME,
	T1.WORKERRESPONSIBLE,
	T1.WRKCTRID_JP,
	T1.ACCELERATEDDEPGROUP_JP,
	T1.COFINSTAXATIONCODE_BR,
	T1.PISCOFINSAPPROPRIATIONMETHOD_BR,
	T1.PISCOFINSCREDITGROUP_BR,
	T1.PISCOFINSCREDITINSTALLMENTS_BR,
	T1.PISCOFINSCREDITPURPOSE_BR,
	T1.PISTAXATIONCODE_BR,
	T1.TRANSPORTTAXCODE_RU,
	T1.CLOTHRIGGINGID_RU,
	T1.ASSESSEDTAXTYPE_RU,
	T1.ASSETBELONGED_RU,
	T1.ASSETUSE_RU,
	T1.BUILDINGSTARTDATE_RU,
	T1.DENOMINATORSHARE_RU,
	T1.NUMERATORSHARE_RU,
	T1.LANDCADASTRALNUM_RU,
	T1.LANDTAXCODE_RU,
	T1.LANDTYPE_RU,
	T1.LOGISTICSPOSTALADDRESS_RU,
	T1.PASSPORTNUM_RU,
	T1.REGISTERREMOVALDATE_RU,
	T1.RELEASEYEAR_RU,
	T1.QUOTATYPESRECID_RU,
	T1.TAXALLOWANCERECID_RU,
	T1.VEHICLETYPE_RU,
	T1.TAXBASE_RU,
	T1.TAXBASEUNITID_RU,
	T1.TAXCODE_RU,
	T1.VATREFUNDINGSTARTDATE_RU,
	T1.VEHICLEECOCLASS_RU,
	T1.VEHICLEMODEL_RU,
	T1.VEHICLEPLATEDATE_RU,
	T1.VEHICLEPLATENUM_RU,
	T1.ROOMCADASTRALNUM_RU,
	T1.TRAILERTYPE_MX,
	T1.TRANSCONF_MX,
	T1.VEHICLETYPE_MX,
	T1.VEHICLEPLATENUM_MX,
	T1.GROSSVEHICLEWEIGHT_MX,
	T1.ADS_FIXEDASSETWFSTATUS,
	T1.ADS_OMCOSTCENTER,
	T1.ASSETLEASELEASEID,
	T1.MODIFIEDDATETIME,
	T1.MODIFIEDBY,
	T1.CREATEDDATETIME,
	T1.CREATEDBY,
	T1.RECVERSION,
	T1.PARTITION,
	T1.SYSROWVERSION,
	T1.RECID,
	T2.SOURCETYPEID,
	T2.RECVERSION,
	T2.RECID,
	T3.QUOTATYPEID,
	T3.RECVERSION,
	T3.RECID,
	T4.GROUPID,
	T4.RECVERSION,
	T4.RECID,
	T5.TAXALLOWANCEID,
	T5.RECVERSION,
	T5.RECID,
	T6.NAME,
	T6.RECID,
	T6.RECVERSION,
	T6.INSTANCERELATIONTYPE,
	T6.RECVERSION,
	T6.RECID,
	T6.RECVERSION,
	T6.RECID,
	T6.RECVERSION,
	T6.RECID,
	T7.PERSON,
	T7.RECVERSION,
	T7.RECID,
	T8.PERSON,
	T8.RECVERSION,
	T8.RECID,
	T9.LOCATION,
	T9.RECVERSION,
	T9.RECID,
	T10.FISCALESTABLISHMENTID,
	T10.RECVERSION,
	T10.RECID,
	T11.NAME,
	T11.RECID,
	T11.RECVERSION,
	T11.INSTANCERELATIONTYPE,
	T11.RECVERSION,
	T11.RECID,
	T12.NAME,
	T12.RECID,
	T12.RECVERSION,
	T12.INSTANCERELATIONTYPE,
	T12.RECVERSION,
	T12.RECID,
	T13.DESCRIPTION,
	T13.RECVERSION,
	T13.RECID,
	T1.MAINTENANCEINFO3,
	T1.NOTES 
FROM  ASSETTABLE T1 LEFT 
OUTER 
JOIN ASSETSOURCETYPE_CN T2 ON (((T2.PARTITION=5637144576) 
	AND (T2.DATAAREAID=N'KPSB')) 
	AND (T1.ASSETSOURCETYPE_CN=T2.RECID)) LEFT 
OUTER 
JOIN RASSETINVENTISSUEQUOTATYPES T3 ON (((T3.PARTITION=5637144576) 
	AND (T3.DATAAREAID=N'KPSB')) 
	AND (T1.QUOTATYPESRECID_RU=T3.RECID)) LEFT 
OUTER 
JOIN ASSETACCELERATEDDEPGROUP_JP T4 ON (((T4.PARTITION=5637144576) 
	AND (T4.DATAAREAID=N'KPSB')) 
	AND (T1.ACCELERATEDDEPGROUP_JP=T4.RECID)) LEFT 
OUTER 
JOIN RASSETTAXALLOWANCE T5 ON (((T5.PARTITION=5637144576) 
	AND (T5.DATAAREAID=N'KPSB')) 
	AND (T1.TAXALLOWANCERECID_RU=T5.RECID)) LEFT 
OUTER 
JOIN DIRPARTYTABLE T6 ON (((T6.PARTITION=5637144576) 
	AND (T1.DEPARTMENT=T6.RECID)) 
	AND (T6.INSTANCERELATIONTYPE IN (24269) )) LEFT 
OUTER 
JOIN HCMWORKER T7 ON ((T7.PARTITION=5637144576) 
	AND (T1.WORKERRESPONSIBLE=T7.RECID)) LEFT 
OUTER 
JOIN HCMWORKER T8 ON ((T8.PARTITION=5637144576) 
	AND (T1.WORKERCONTACTNAME=T8.RECID)) LEFT 
OUTER 
JOIN LOGISTICSPOSTALADDRESS T9 ON ((T9.PARTITION=5637144576) 
	AND ((T1.LOGISTICSPOSTALADDRESS_RU=T9.RECID) 
	AND ((T9.VALIDFROM<='2025-3-18') 
	AND (T9.VALIDTO>='2025-3-18')))) LEFT 
OUTER 
JOIN FISCALESTABLISHMENT_BR T10 ON (((T10.PARTITION=5637144576) 
	AND (T10.DATAAREAID=N'KPSB')) 
	AND (T1.FISCALESTABLISHMENT_BR=T10.RECID)) LEFT 
OUTER 
JOIN DIRPARTYTABLE T11 ON (((T11.PARTITION=5637144576) 
	AND (T7.PERSON=T11.RECID)) 
	AND (T11.INSTANCERELATIONTYPE IN (15219) )) LEFT 
OUTER 
JOIN DIRPARTYTABLE T12 ON (((T12.PARTITION=5637144576) 
	AND (T8.PERSON=T12.RECID)) 
	AND (T12.INSTANCERELATIONTYPE IN (15219) )) LEFT 
OUTER 
JOIN LOGISTICSLOCATION T13 ON ((T13.PARTITION=5637144576) 
	AND (T9.LOCATION=T13.RECID)) 
WHERE (((T1.PARTITION=5637144576) 
	AND (T1.DATAAREAID=N'KPSB')) 
	AND ((T1.RECID=5637151957) 
	AND (T1.MAINASSETID=0123456789))) 
	ORDER BY T1.ASSETID OPTION(FAST 3)
I have ran out of idea. I would like to ask if there is anything that I missed so it cause the fixed asset record cannot be displayed when the user click the work item ID.
 
Thank you.
Categories:
  • Suggested answer
    Holly Huffman Profile Picture
    4,128 on 28 Mar 2025 at 12:06:58
    Work Item redirect to related table form but not display record
    Hi there! Good morning, evening, or afternoon - depending on where you are :) Hope you are well today! 
    I see this was posted a bit ago - hoping you've resolved already :) if not, here are a few thoughts -- 
     
    From the details provided, it seems that the issue lies in the filtering and retrieval of data due to conflicts between customizations and default system behavior. Here's how to approach resolving the issue:
    Root Cause
    1. Conflicting Filters:
      • The filtering by MainAssetId in the SQL query conflicts with the RecId filter you've added programmatically in your init() extension method.
      • The system might be applying additional filters (like MainAssetId) automatically, overriding or negating your custom filters.
    2. Behavior of this.args().record():
      • While this.args().record() returns the AssetTable record with the RecId, it might not be properly linked to the form's data source due to default Dynamics filtering mechanisms.
    3. Query Execution Context:
      • The query modifications (qbds.clearRanges() and adding the RecId range) may not take precedence if the form or underlying data source enforces its own filtering (e.g., by MainAssetId).
     
    Proposed Solutions
    1. Ensure Data Source Synchronization
    • Use the executeQuery method after modifying the query to refresh the data source and apply your filter:
      AssetTable assetTable = this.args().record();
      if (assetTable && assetTable.RecId)
      {
          QueryBuildDataSource qbds = AssetTable_ds.queryBuildDataSource();
          qbds.clearRanges();
          qbds.addRange(fieldNum(AssetTable, RecId)).value(SysQuery::value(assetTable.RecId));

      AssetTable_ds.executeQuery(); // Force the data source to reload based on the new query
      }
     
    2. Override the run() Method
    • Instead of modifying the init() method, override the run() method in your form extension to set the query filter before the form is displayed:
      [ExtensionOf(formStr(AssetTable))]
      final class AssetTableRun_ADSKPSB_Extension
      {
          public void run()
          {
              AssetTable assetTable = this.args().record();
              if (assetTable && assetTable.RecId)
              {
                  QueryBuildDataSource qbds = AssetTable_ds.queryBuildDataSource();
                  qbds.clearRanges();
                  qbds.addRange(fieldNum(AssetTable, RecId)).value(SysQuery::value(assetTable.RecId));
              }

      super(); // Ensure the form runs after applying the filters
          }
      }
    3. Modify the Workflow Arguments
    • Ensure that the workflow passes the correct record context (RecId) to the target form. Verify how the Fixed Asset document ID is passed in the workflow by tracing the args() object.
     
    4. Bypass the MainAssetId Filter
    • Identify where the MainAssetId filter is being applied (likely in a table or form-level query logic).
    • Add logic to override or clear this filter if the form is being opened via workflow:
      if (this.args() && this.args().caller())
      {
          // Custom logic to bypass default MainAssetId filtering
          qbds.clearRanges();
      }
    Testing and Validation
    1. SQL Trace Analysis:
      • After applying the solutions, re-capture the SQL trace to ensure the query is executed with the correct filters.
    2. Debugging:
      • Add debug statements to confirm that:
        • this.args().record() returns the correct record.
        • Your filter is applied before the query execution.
    3. User Scenarios:
      • Test the fix with different workflow records to ensure consistent behavior.
     
    Hope this helps :)

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

🌸 Community Spring Festival 2025 Challenge 🌸

WIN Power Platform Community Conference 2025 tickets!

Announcing Our 2025 Season 1 Super Users!

A new season of Super Users has arrived, and we are so grateful for the daily…

Kudos to the February Top 10 Community Stars!

Thanks for all your good work in the Community!

Leaderboard

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 293,333 Super User 2025 Season 1

#2
Martin Dráb Profile Picture

Martin Dráb 232,262 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,158 Moderator

Leaderboard

Product updates

Dynamics 365 release plans
Loading complete