Forum Discussion

archan96's avatar
archan96
Ideator I
7 years ago

"Classification cannot be changed after saving the item" error using the .Net API to update requirement

I am using Aras 11 SP15. I am trying to update a requirement I created. Here is my code:

using System;
using System.Collections.Generic;
using Aras.IOM;

namespace TestArasProject
{
    public static class Program
    {
        public static void Main(string[] args)
        {
            HttpServerConnection conn = IomFactory.CreateHttpServerConnection(serverUrl, dbName, username, password);
            Innovator inn = IomFactory.CreateInnovator(conn);
            conn.Login();

            Item updateItem = inn.newItem(requirement, "edit");
            string internalId = "FB20D91203DC4E3EB30DBA0CFBE4FD0F";
            updateItem.setAttribute("where", "[" + requirement.Replace(' ', '_') + "]." + "config_id" + " = '" + internalId + "' AND [" + requirement.Replace(' ', '_') + "]." + "is_current" + "='1'");

            // updating the name of the requirement
            updateItem.setProperty("req_rm_title", "Test Requirement" + Guid.NewGuid());

            Item result = updateItem.apply();

            Console.WriteLine(result);
            Console.WriteLine(result.isError());
            Console.ReadLine();

            conn.Logout();
       }

    }
}

I am getting the following error:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="">schemas.xmlsoap.org/.../" xmlns:i18n="">www.aras.com/I18N"><SOAP-ENV:Body><SOAP-ENV:Fault>
<faultcode>1</faultcode>
<faultactor />
<faultstring>Classification cannot be changed after saving the item.</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>

I checked the XML which was getting created to update, this XML did not even contain the Classification property nor am I trying to update it. Here is the XML: 

<Item isNew=\"1\" isTemp=\"1\" type=\"re_Requirement\" action=\"edit\" where=\"[re_Requirement].config_id = '3AFD850B785E43F1B854EE404469FA87' AND [re_Requirement].is_current='1'\">
    <req_title>2019_06_24_12_25_42_850_-{AB}</req_title>
</Item>

I noticed that Classification (Type) is a default value on UI still I need to explicitly pass it through the API. This is not the case with Risk or Complexity type of fields. How do I update a requirement?

14 Replies

  • Hi archan,

    This is similar behavior to what you previously reported when adding a new requirement through AML. The onBeforeUpdate server event on the re_Requirement ItemType expects that the classification property will be specified in the AML since that's how the AML is formatted when an update is submitted through the Aras Innovator client. You can resolve this issue by adding the classification property to your request and doing per-classification updates in your code. 

    This is known behavior in RE 11.0R1 that will be addressed in a future release. 

    Chris

    • archan96's avatar
      archan96
      Ideator I

      Hi Christopher,

      I tried to add the classification as well with the same value I had provided during the time of creation. Now I am getting a different error:

      <SOAP-ENV:Envelope xmlns:SOAP-ENV="">schemas.xmlsoap.org/.../">
          <SOAP-ENV:Body>
              <SOAP-ENV:Fault xmlns:af="">www.aras.com/InnovatorFault">
                  <faultcode>SOAP-ENV:Server</faultcode>
                  <faultstring><![CDATA[No items of type re_Requirement found.]]></faultstring>
                  <detail>
                      <af:legacy_detail><![CDATA[No items of type re_Requirement found.]]></af:legacy_detail>
                      <af:exception message="No items of type re_Requirement found." type="System.Exception" />
                  </detail>
              </SOAP-ENV:Fault>
          </SOAP-ENV:Body>
      </SOAP-ENV:Envelope>

      • christopher_gillis's avatar
        christopher_gillis
        New Member

        Hi archan,

        Have you updated the where clause in your AML to include a check for the classification like "... and [re_Requirement].classification = 'Text'  ..."

        Chris