Assets Post function "Assign Objects from an AQL query based on data from an issue" does not work when Assets CF includes a boolean attribute and an OR condition

XMLWordPrintable

    • 2
    • Severity 3 - Minor
    • 13

      Issue Summary

      The Assets Post function, "Assign Objects from an AQL query based on data from an issue" does not work when Assets CF includes an "Active=true", where Active is a boolean attribute and when the AQL also incorporates an OR condition.

      Example: objectType IN (Demo) or (objectType = "location" and Active=true)

      Steps to Reproduce

      1. Create a new Jira project
      2. Create a new Assets Schema
      3. Create 2 Object Types. In this example, we will be creating Object Type "Demo" and Object Type "location"
        • Object Type Demo: Create an User type attribute
        • Object Type location: Create a Boolean type attribute. Let's call it: "Active"
      4. Create an Demo Object
        • Fill in the User type attribute. For example 'admin' user
      5. Create an Assets Custom field
        • Add the following Filter Scope:
          objectType IN (Demo) OR (objectType = "location" and Active=true)
        • It is important that the AQL contains an OR
      6. Add the following Post function "Assign Objects from an AQL query based on data from an issue" to the Project Workflow
        • Add the following AQL:
          objectType = Demo and User in ${reporter.id} and Status=Active


        • Make sure to add the Post Functions after the 'Fire a Generic Event' action
      7. Create a Jira issue
        • Ensure that the reporter is the same user as the once we added to the 'demo' object
      8. Trigger the workflow transition

      Expected Results

      The Assets CF should have been populated with the Assets Object. The object belongs to the first part of the AQL (objectType IN (Demo)).

      Actual Results

      Assets CF is not populated. By adding com.riadalabs.jira.plugins.insight.services.core.iql, there is the following exception in the atlassian-jira.log file:
      IQLValidationException: IQLValidationException: No matching attribute for AQL clause ("Active" = true))

         2025-04-24 13:41:04,970+0000 http-nio-8080-exec-26 url: /secure/CommentAssignIssue.jspa; user: admin DEBUG admin 821x12755x1 1ib1fyy /secure/CommentAssignIssue.jspa [c.r.j.p.i.s.c.iql.impl.IQLManagerImpl] findObjects, param AQL: objectSchemaId = 3 AND objectType = Customer AND "User" IN ("JIRAUSER10104") AND "Status" = Active AND (objectType IN ("Employee","Customer") AND "Status" = Active) OR (objectType = "CC Customer" AND "Active" = true) AND objectTypeId IN ("23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109") AND objectSchemaId = 3
      2025-04-24 13:41:04,981+0000 http-nio-8080-exec-26 url: /secure/CommentAssignIssue.jspa; user: admin DEBUG admin 821x12755x1 1ib1fyy  /secure/CommentAssignIssue.jspa [c.r.j.p.i.s.c.iql.impl.IQLManagerImpl] AQL exception, will return empty list for query <objectSchemaId = 3 AND objectType = Customer AND "User" IN ("JIRAUSER10104") AND "Status" = Active AND (objectType IN ("Employee","Customer") AND "Status" = Active) OR (objectType = "CC Customer" AND "Active" = true) AND objectTypeId IN ("23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109") AND objectSchemaId = 3>
      AQLManagerException(e=com.riadalabs.jira.plugins.insight.common.exception.IQLValidationException: IQLValidationException: No matching attribute for AQL clause ("Active" = true))
      	at com.riadalabs.jira.plugins.insight.services.core.iql.impl.ObjectPredicateAQLVisitor.getOtherPredicate(ObjectPredicateAQLVisitor.kt:345)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.impl.ObjectPredicateAQLVisitor.getAttributesPredicate(ObjectPredicateAQLVisitor.kt:286)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.impl.ObjectPredicateAQLVisitor.acceptTerminalClause(ObjectPredicateAQLVisitor.kt:164)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.impl.ObjectPredicateAQLVisitor.acceptTerminalClause(ObjectPredicateAQLVisitor.kt:56)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.model.IQLClauseVisitor.acceptIQLClause(IQLClauseVisitor.java:28)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.impl.ObjectPredicateAQLVisitor.acceptAndClause(ObjectPredicateAQLVisitor.kt:112)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.impl.ObjectPredicateAQLVisitor.acceptAndClause(ObjectPredicateAQLVisitor.kt:56)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.model.IQLClauseVisitor.acceptIQLClause(IQLClauseVisitor.java:22)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.model.IQLClauseVisitor.acceptPrecedenceClause(IQLClauseVisitor.java:67)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.model.IQLClauseVisitor.acceptIQLClause(IQLClauseVisitor.java:26)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.impl.ObjectPredicateAQLVisitor.acceptOrClause(ObjectPredicateAQLVisitor.kt:128)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.impl.ObjectPredicateAQLVisitor.acceptOrClause(ObjectPredicateAQLVisitor.kt:56)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.model.IQLClauseVisitor.acceptIQLClause(IQLClauseVisitor.java:20)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.impl.ObjectPredicateAQLVisitor.acceptAndClause(ObjectPredicateAQLVisitor.kt:112)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.impl.ObjectPredicateAQLVisitor.acceptAndClause(ObjectPredicateAQLVisitor.kt:56)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.model.IQLClauseVisitor.acceptIQLClause(IQLClauseVisitor.java:22)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.impl.IQLManagerImpl.appendIQLBeansAndSchemaToFilter(IQLManagerImpl.java:406)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.impl.IQLManagerImpl.toObjectFilter(IQLManagerImpl.java:370)
      	at com.riadalabs.jira.plugins.insight.services.core.iql.impl.IQLManagerImpl.findObjects(IQLManagerImpl.java:184)
      	at com.riadalabs.jira.plugins.insight.services.core.IQLServiceImpl.findObjects(IQLServiceImpl.java:74)
      	at com.riadalabs.jira.plugins.insight.services.jira.workflow.InsightWorkflowFunction.typeAddObjectAutoAssignObjectIql(InsightWorkflowFunction.java:1068)
      	at com.riadalabs.jira.plugins.insight.services.jira.workflow.InsightWorkflowFunction.execute(InsightWorkflowFunction.java:1014)
      	at com.opensymphony.workflow.AbstractWorkflow.executeFunction(AbstractWorkflow.java:1014)
      	at com.opensymphony.workflow.AbstractWorkflow.transitionWorkflow(AbstractWorkflow.java:1407)
      	at com.opensymphony.workflow.AbstractWorkflow.doAction(AbstractWorkflow.java:557)
      	at com.atlassian.jira.workflow.OSWorkflowManager.doWorkflowActionInsideTxn(OSWorkflowManager.java:840)
      	at com.atlassian.jira.workflow.OSWorkflowManager.doWorkflowAction(OSWorkflowManager.java:798)
      	at com.atlassian.jira.bc.issue.DefaultIssueService.transition(DefaultIssueService.java:537)
      	at com.atlassian.jira.web.action.issue.CommentAssignIssue.doExecute(CommentAssignIssue.java:175)
      	at webwork.action.ActionSupport.execute(ActionSupport.java:165)
      	at com.atlassian.jira.web.action.JiraWebActionSupport.execute(JiraWebActionSupport.java:1383)
      Caused by: com.riadalabs.jira.plugins.insight.common.exception.IQLValidationException: IQLValidationException: No matching attribute for AQL clause ("Active" = true)
      	... 362 more
      

      Workaround

      Currently there is no known workaround for this behavior. A workaround will be added here when available

      Versions Tested

      Please confirm all versions that have been tested for this issue, and indicate whether the tested version is affected or not affected, below: 

      Testing Requirements Version Affected Version
      Customers Reported Version 10.3.4 Yes 
      Most Recent Bug-Fix Release 9.17.5 No
      Previous Major Release    
      Most Recent LTS    
      Previous Supported LTS    
      Other Versions..    
      (Add rows as needed)    

        1. Assets_CF.png
          Assets_CF.png
          208 kB
        2. Object Assets.png
          Object Assets.png
          115 kB
        3. Post Functions_Assets.png
          Post Functions_Assets.png
          193 kB

              Assignee:
              Luke Ellis
              Reporter:
              Pablo Bartolome (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: