Question

EventAndActionUtilities bug

  • 18 March 2024
  • 6 replies
  • 38 views

Userlevel 3
Badge +9

My collegue has recently shown me an error in IEE stating that event action (ie. MWORKORDER_4_8) has an issue. When I got into PLSQL code of that I’ve copied the whole statement into Oracle SQL Developer and found an error on the line objversion_:= to_char(&NEW:ROWVERSION);  Obvious thing was to enclose &NEW:ROWVERSION in single quotes. So I’ve fixed that and a number of other events too.

Some time later we’ve migrated TAS server and redeployed mWorkOrder_4_9_0.dll, browsing the same page we’ve got the same error text in IEE again. All these MWORKORDER event actions were regenerated having the same syntax error. Finally, I got to the source (/fndmob/source/fndmob/server/packages/MobileClientAdministration/ifs/application/mobileclientadministration/impl/EventAndActionUtilities.java) and found what’s causing this:

      else if(OBJVERSION_FORMAT_NUMBER.equals(entity.objversionFormat.getValue())){
         objVersionFormat = "to_char(&NEW:ROWVERSION)";

Hense, no single quotes. We’re currently running IFS 10 UPDATE 17 and as I’ve checked it is still not fixed in later updates.


6 replies

Userlevel 6
Badge +14

Hi,

What’s the Entity Name behind this faulty event? And also pls share the error. Fnd Event Action SQL is auto generated based on the format of the OBJVERSION attribute in the Entity Meta data in the IFS database model. Mobile only supports timestamp and number. if you do not see the single quotes means the entity has number type OBJVERSION. You will see single quotes for time timestamp type OBJVERSION.  This could be an issue with the cloud DLL where it has incompatible meta data.  To confirm that pls share the additional details with us. 

 

Userlevel 3
Badge +9

Hi,

The fault is in MWORKORDER_4_1 event which has FaPhysicalCountDetail entity. Objversion format is number for all marked entities in cloud DLL. There might be an exception to that for MediaItem entity, it’s string… Probably incorrect, but it used to fail the same way a few years back. However, it’s true for the rest - SQL statement does not compile without quotes.

 

Marked events require fixing and their respective objversion formats in cloud DLL
Fixed assets
Generated statement copied to Oracle SQL Developer

 

Userlevel 6
Badge +14

Hi 

Default format of OBJVERSION is ‘timestamp’. You only set it as number in the cloud resources to override the default. As per your generated event, I assume cloud resource has ObjversionFormat = "number" which is the root cause for the issue. Do you have access to the c# code? it looks like this entity is not part of the CORE release and could be added by a customization. So please check with the team who did the modification.

Hope this helps.   

Userlevel 3
Badge +9

Hi,
I’ve checked with the team and found out there were at least three entities added to the core release. So we get failed transactions for MediaItem and hopefully we’ll reconfigure it later (objversion is string for some reason). Then we get an error in IEE for FaPhysicalCountDetail.

    [Entity("FaPhysicalCountDetail", "FA_PHYSICAL_COUNT_DETAIL", "WorkOrders"
, PackageName = "FA_PHYSICAL_COUNT_DETAIL_API"
, WriteEnabled = true
, OwnershipQuery = FaPhysicalCountDetail.OWNERSHIP_QUERY
, DeliveryMethod = EntityAttribute.DeliveryType.PushAndBatch
, DefaultSchedule = "EVERY 00:01"
, TableName = "FA_PHYSICAL_COUNT_DETAIL_TAB"
, ObjversionFormat = "number"
, TransactionGrouping = "WorkOrders:@SEQ_NO@")]

class FaPhysicalCountDetail : DynamicEntityResource
{

public const string OWNERSHIP_QUERY = @"
SELECT t1.owner
FROM MOBILE_WORK_ORDER_OWNER t1";

#region Fields
private long mSeqNo;
[Field("SEQ_NO", Key = true, TemporaryClientKey = true)]
public long seq_no { get { return mSeqNo; } set { mSeqNo = value; MarkAsModified("SEQ_NO"); } }

private long mPhysicalCountId;
[Field("PHYSICAL_COUNT_ID", Key = true)]
public long physical_count_id { get { return mPhysicalCountId; } set { mPhysicalCountId = value; MarkAsModified("PHYSICAL_COUNT_ID"); } }

private String mCompany;
[Field("COMPANY", Key = true)]
public String company { get { return mCompany; } set { mCompany = value; MarkAsModified("COMPANY"); } }

This entity has a composite key and a number as Objversion. It looks quite like the rest, probably our developer copied and edited another entity for which we don’t get errors, but they’re in MWORKORDER_4_x events list.

So, do you suggest changing Objversion to “timestamp” for the custom ones?

Userlevel 6
Badge +14

If the Entity model has no overrides for objversion format then cloud resource should have  the same (Means no ‘ObjversionFormat’ setting). If entity model has the code gen property to override the objversion format (to number) then your cloud resource should specify the same (ObjversionFormat = "number").

Hope this will help to fix your application cloud resources. if you have any further queries pleas post here and will try to answer. 

Userlevel 3
Badge +9

Thanks for your answer, we’ll give it a try!

Reply