AML throws Aras.Server.Core.AmbiguousCriteriaException

I'm trying to update the datasource of a property to the correct datasource in our test and production environments, but without the use of ID's because that's what caused the problem I'm trying to correct in the first place, the id's for (for instance) properties in test and production don't always match the id's in our development environment. So, I wrote this AML:
<Item action="edit" type="Property" where="[Property].keyed_name = 'era_locked_by'">
  <data_source keyed_name="locked_by_id">
    <Item type="Property" action="get" select="id" where="[property].keyed_name = 'locked_by_id' and [property].source_id in (select it.ID from innovator.ITEMTYPE it where it.name = 'DOCUMENT')" />
  </data_source>
</Item>
but when I run in Innovator Admin for instance, it returns <af:exception message="Aras.Server.Core.AmbiguousCriteriaException" type="Aras.Server.Core.AmbiguousCriteriaException" /> This is probably because of the nested Properties where statement, but is there any to make this work, without using actual id's?
Parents
  • I managed to get it working by rewriting the inner where statement to a nested <Item action=get>
    <Item action="edit" type="Property" where="[Property].keyed_name = 'era_locked_by' and [Property].source_id = (select id from [ItemType] where name ='Document')">
        <data_source keyed_name="locked_by_id">
          <Item type="Property" action="get" select="id">
            <keyed_name>locked_by_id</keyed_name>
            <source_id>
              <Item type='ItemType' action='get'>
                <name>Document</name>
              </Item>
            </source_id>
          </Item>
        </data_source>
      </Item>
    So my initial feeling was (probably?) right, that AML can't copy really well with nested where-statements.
Reply
  • I managed to get it working by rewriting the inner where statement to a nested <Item action=get>
    <Item action="edit" type="Property" where="[Property].keyed_name = 'era_locked_by' and [Property].source_id = (select id from [ItemType] where name ='Document')">
        <data_source keyed_name="locked_by_id">
          <Item type="Property" action="get" select="id">
            <keyed_name>locked_by_id</keyed_name>
            <source_id>
              <Item type='ItemType' action='get'>
                <name>Document</name>
              </Item>
            </source_id>
          </Item>
        </data_source>
      </Item>
    So my initial feeling was (probably?) right, that AML can't copy really well with nested where-statements.
Children
No Data