Cage Code 00000

Good day all.  Would having a Cage Code of all 0's cause a problem when a report is ran?  I receive errors for some of my parts reports that indicate that I do not have permissions to run the report (I'm an Admin).  When I try to run the report from the parts attached to the part that causes an error, I can run the reports with no problems.  I'm trying to figure out what is causing the problem.  This is a custom report to generate a BOM.  The BOM lists have included parts and a few different types of documents. 

I have inherited this system from a previous contract, so I am trying to figure out how it was set-up and what exactly it is doing.  Thanks for any help you can provide.

An error has occurred during report processing. ---> Microsoft.ReportingServices.ReportProcessing.ProcessingAbortedException: An error has occurred during report processing. ---> Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: Query execution failed for dataset 'DataSet1'. ---> System.Exception: For more information about this error navigate to the report server on the local server machine, or enable remote errors

  • Hi Nathan,

    Could you clarify what you mean by "Cage Code"? Do you mean the ID of the item?


    Christopher Gillis

    Aras Labs Software Engineer

  • Christopher,

    Good day.  CAGE stands for Commercial and Government Equipment.  It is one of the fields that we have in our Parts.  The previous care takers of our database created a Parts List ItemType where the document and all of the parts are attached to.  Then the Part pulls the Parts List to display, instead of using the Part and BOM feature built into the system.  I have a report that is supposed to act like the BOM reports, but a couple of them lock up the system and the one that does run, has errors until I can get to a low enough level to run it.  I have been trying to figure out why the report produces an error, but have not had much luck so far. 

    There are a lot of things that I have noticed wrong about this.  There are Parts Lists, Drawings, and Documents inside of Parts Lists.  I'm not sure what exactly is causing the problem.

  • Thank you for the additional info. :) 

    Since this is a customized data model, could you also provide some more specifics about the report to help us diagnose the issue? Is this a Report item inside of Innovator (TOC > Administration > Reports) or an external report in something like SQL Server Reporting Services? What query is this report running exactly?

    Could you also provide some more details on the data model with Parts List? I'm not sure I understand the added value of wrapping the Parts and Documents inside of the Parts List instead of relating the Documents directly to the Parts.


  • Here is the Report information.  I'm still learning the system, so I'm sure there is something that I am missing.

    Name:  s_BOM Quantity RollUp

    Type:  Item

    Location:  Client

    Target:  One Window

    Method:  N/A

    Label:  BOM Quantity RollUp

    Description:  Displays all parts of an assembly & subassemblies below it, including quantities of each of those parts for the entire structure

    Report Query:

    <Item type="s_Part" action="s_Indentured_Drawing_List" part_id="{@id}" sp_name="s_BOM_Quantity_RollUp"/>

  • Hi Nathan,

    Thanks again for the additional info. For a simple report, the information you gave would probably be enough, but looking at the Report Query, there's a couple other places that you'll need to check.

    The action of the query isn't doing a simple get. Instead it's calling a custom Method: s_Indentured_Drawing_List. You can look at the source code for this Method inside of your instance by logging in as an admin and searching for it under TOC > Administration > Methods

    Additionally, the attribute sp_name="s_BOM_Quantity_RollUp" caught my eye. I can't be 100% since this is a custom method, but based on the name, I'd guess that this method is also calling a SQL stored procedure (sp) called s_BOM_Quantity_RollUp. You'll likely have to look at that stored procedure directly in the database through SQL Server Management Studio. 

    If I'm correct about the SQL stored procedure, then the error could be caused either by the method code or the stored procedure. I'd try looking for the name in the original error message DataSet1 in  both places to try to track down where the error is actually happening. If the error is in the method code, you can check out our blog post on debugging inside of Innovator.

    Please let me know if this is indeed calling a SQL procedure. In general, we strongly discourage using direct SQL for queries as it bypasses the Aras permission model, and there's almost always a way to do the same query using AML alone.


  • Christopher,

    Thank you for the recommendations.  I was wondering what the sp_name was, I have seen it in a lot of the methods I have looked at. 

    Looking at the method, it looks like it is calling a process from the SQL server.  Unfortunately, I have not gotten access to the SQL server yet.

    Since this is an odd thing, any recommendations for pulling a BOM report when all of the parts are referenced through Parts List ItemTypes instead of the part itself? 

    Thank you again for all of your help with this.

  • It would depend on the exact data model of the Part List ItemType. I'd recommend checking out our blog posts on AML (Basics and Advanced) for some info on how an AML query is structured. 

    For a standard Part BOM, we have a data model where a parent Part has a relationship to a child Part via a Part BOM. We can do a very simple query to get one level of this BOM by using the AML below.

        <Item type="Part" action="get">
                <Item type="Part BOM" action="get">
                        <Item type="Part" action="get" />

    We can also take a slightly more advanced approach and use a special AML action to get all of the levels of our Part BOM.

      <Item type="Part" select="name,item_number,id" action="GetItemRepeatConfig" id="YOUR_PART_ID">
          <Item type="Part BOM" select="related_id,quantity" repeatProp="related_id" repeatTimes="10"/>

    Since your environment has a customized data model. You would need to look to see how the Part List and Part are used to construct a full BOM.

    As an aside, it worries me a bit when SQL is used so prevalently. I understand you inherited this system, so if you're taking over administrating this database, I'd recommend making a note to take a look at the methods that use SQL stored procedures. When you're more comfortable working with Aras Innovator, it might be good to revisit these methods and rewrite them to avoid calling SQL directly. While there are times when using SQL is appropriate (namely when performance is very bad), using AML will make the code more maintainable and will ensure that the logic follows the Aras permission model.


  • Chris,

    Thanks for everything.  Going through all of the Methods & what they are doing is on my list of things to do.  The more I learn about Aras, the more I am puzzled by the huge deviations that were done. 

    From what I can tell the Parts List ItemType was used as a way to attach a scanned document that had old part lists on them and then add the parts to the Parts List.  Problem is, when they were adding things, they were adding parts, other parts lists, drawings, and documents to the "BOM" section.

    From what I can tell, I would have to create a report that would search through the Parts List for the parts, then go to those parts to reference the Parts List attached to the part & search that list, then start the process over again. 

    It would have been a lot easier if they would have just used some of the standards set in Aras already. 

    Thank you again for all of your help.