With the release of version R40, the configurable Grid view can be used to build an FMEA grid as an alternative to using the hard-coded FMEA grid view. This article provides an example grid configured for an "analysis area". 


Note: A few functions available in the hard-coded FMEA Grid are not yet available in the configurable Grid view. They are: 
  • New item dialog does not support entering Description and Properties
  • Pressing the Enter key in the grid to create a new, similar item is not possible


Example Meta Model


Example Data 


Example Configuration

<!--FMEA object [FMEA]-->
<!--Intent [FMIF]-->
<!--Failure Mode [FMFM]-->
<!--Failure Effect [2CFE]-->
<!--Cause [FMCA]-->
<!--Prevention [FMBP]-->
<!--Detection [FMBD]-->
<Grid>
  <Options>
    <CellAutoHeight/>
    <HeaderAutoHeight/>
  </Options>
  <Variable name="FunctionalAnalysisArea" as="Item" select="."/>
  <!--FMEA object [FMEA]-->
  <ActionBindings>
    <ActionBinding actionId="FMEAObject_New" caption="New FMEA Object" columnIds="Items_object" confirmationDialog="false">
      <WithParam name="main" select="$FunctionalAnalysisArea"/>
      <WithParam name="FMEAObject">
        <DialogCreateItem itemType="FMEA"/>
      </WithParam>
    </ActionBinding>
    <ActionBinding actionId="FMEAObject_Add_Paste" caption="Add FMEA Object" columnIds="Items_object" confirmationDialog="false">
      <WithParam name="main" select="$FunctionalAnalysisArea"/>
      <WithParam name="FMEAObject">
        <DialogSelectItems itemType="FMEA"/>
      </WithParam>
    </ActionBinding>
    <ActionBinding actionId="FMEAObject_Add_Paste" caption="Paste FMEA Object" columnIds="Items_object">
      <WithParam name="main" select="$FunctionalAnalysisArea"/>
      <WithParam name="FMEAObject">
        <Clipboard/>
      </WithParam>
    </ActionBinding>
    <ActionBinding actionId="Standard.RemovePart" columnIds="Items_object" removeObjectName="object" multiRemove="false" caption="Remove FMEA Object"/>
    <!--Intent [FMIF]-->
    <ActionBinding actionId="Intent_New" caption="New Design Intent" columnIds="Intent" confirmationDialog="false">
      <WithParam name="object" objectName="object"/>
      <WithParam name="intent">
        <DialogCreateItem itemType="FMIF"/>
      </WithParam>
    </ActionBinding>
    <ActionBinding actionId="Intent_Add_Paste" caption="Add Design Intent" columnIds="Intent" confirmationDialog="false">
      <WithParam name="object" objectName="object"/>
      <WithParam name="intent">
        <DialogSelectItems itemType="FMIF"/>
      </WithParam>
    </ActionBinding>
    <ActionBinding actionId="Intent_Add_Paste" caption="Paste Design Intent" columnIds="Intent">
      <WithParam name="object" objectName="object"/>
      <WithParam name="intent">
        <Clipboard/>
            </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Standard.RemovePart" columnIds="Intent" removeObjectName="function" multiRemove="false" caption="Remove Design Intent"/>
        <!--Failure Mode [FMFM]-->
        <ActionBinding actionId="Failure_New" caption="New Failure Mode" columnIds="Failure" confirmationDialog="false">
            <WithParam name="function" objectName="function"/>
            <WithParam name="failure">
                <DialogCreateItem itemType="FMFM"/>
            </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Failure_Add_Paste" caption="Add Failure Mode" columnIds="Failure" confirmationDialog="false">
            <WithParam name="function" objectName="function"/>
            <WithParam name="failure">
                <DialogSelectItems itemType="FMFM"/>
            </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Failure_Add_Paste" caption="Paste Failure Mode" columnIds="Failure">
            <WithParam name="function" objectName="function"/>
            <WithParam name="failure">
                <Clipboard/>
            </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Standard.RemovePart" columnIds="Failure" removeObjectName="failure" multiRemove="false" caption="Remove Failure Mode"/>
        <!--Failure Effect [2CFE]-->
        <ActionBinding actionId="Effects_New" caption="New Effect" columnIds="Effects" confirmationDialog="false">
            <WithParam name="failure" objectName="failure"/>
            <WithParam name="effect">
                <DialogCreateItem itemType="2CFE"/>
            </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Effects_Add_Paste" caption="Add Effect" columnIds="Effects" confirmationDialog="false">
            <WithParam name="failure" objectName="failure"/>
            <WithParam name="effect">
                <DialogSelectItems itemType="2CFE"/>
            </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Effects_Add_Paste" caption="Paste Effect" columnIds="Effects">
            <WithParam name="failure" objectName="failure"/>
            <WithParam name="effect">
                <Clipboard/>
            </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Standard.RemovePart" columnIds="Effects" removeObjectName="effects" multiRemove="false" caption="Remove Effect"/>
        <!--Cause [FMCA]-->
        <ActionBinding actionId="Cause_New" caption="New Cause" columnIds="Cause" confirmationDialog="false">
            <WithParam name="failure" objectName="failure"/>
            <WithParam name="cause">
                <DialogCreateItem itemType="FMCA"/>
            </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Cause_Add_Paste" caption="Add Cause" columnIds="Cause" confirmationDialog="false">
            <WithParam name="failure" objectName="failure"/>
            <WithParam name="cause">
                <DialogSelectItems itemType="FMCA"/>
            </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Cause_Add_Paste" caption="Paste Cause" columnIds="Cause">
            <WithParam name="failure" objectName="failure"/>
            <WithParam name="cause">
                <Clipboard/>
            </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Standard.RemovePart" columnIds="Cause" removeObjectName="cause" multiRemove="false" caption="Remove Cause"/>
        <!--Prevention [FMBP]-->
        <ActionBinding actionId="Prevention_New" caption="New Prevention" columnIds="Prevention" confirmationDialog="false">
            <WithParam name="cause" objectName="cause"/>
            <WithParam name="prevention">
                <DialogCreateItem itemType="FMBP"/>
            </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Prevention_Add_Paste" caption="Add Prevention" columnIds="Prevention" confirmationDialog="false">
            <WithParam name="cause" objectName="cause"/>
            <WithParam name="prevention">
                <DialogSelectItems itemType="FMBP"/>
            </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Prevention_Add_Paste" caption="Paste Prevention" columnIds="Prevention">
            <WithParam name="cause" objectName="cause"/>
            <WithParam name="prevention">
                <Clipboard/>
            </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Standard.RemovePart" columnIds="Prevention" removeObjectName="prevention" multiRemove="false" caption="Remove Prevention"/>
        <!--Detection [FMBD]-->
        <ActionBinding actionId="Detection_New" caption="New Detection" columnIds="Detection" confirmationDialog="false">
            <WithParam name="cause" objectName="cause"/>
            <WithParam name="detection">
                <DialogCreateItem itemType="FMBD"/>
            </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Detection_Add_Paste" caption="Add Detection" columnIds="Detection" confirmationDialog="false">
            <WithParam name="cause" objectName="cause"/>
            <WithParam name="detection">
                <DialogSelectItems itemType="FMBD"/>
            </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Detection_Add_Paste" caption="Paste Detection" columnIds="Detection">
            <WithParam name="cause" objectName="cause"/>
            <WithParam name="detection">
                <Clipboard/>
            </WithParam>
        </ActionBinding>  
        <ActionBinding actionId="AddIssue" caption="Add issue">
          <WithParam name="issue">
            <DialogCreateIssue project="FMEA" issueType="FMEA Action"/>
          </WithParam>
        </ActionBinding>
        <ActionBinding actionId="Standard.RemovePart" columnIds="Detection" removeObjectName="detection" multiRemove="false" caption="Remove Detection"/>
    </ActionBindings>
    <Actions>
        <!--FMEA object [FMEA]-->
        <Action id="AddIssue">
            <Parameter name="issue" as="IssueData"/>
            <Issue id="A" match="$issue">
            </Issue>
        </Action>
        <Action id="FMEAObject_New">
            <Parameter name="main" as="Item"/>
            <Parameter name="FMEAObject" as="ItemData"/>
            <Item id="FAA" match="$main"/>
            <Item id="FMEAO" match="$FMEAObject"/>
            <Part owner="FAA" partType="2IFB" defObj="FMEAO"/>
        </Action>
        <Action id="FMEAObject_Add_Paste">
            <Parameter name="main" as="Item"/>
            <Parameter name="FMEAObject" as="Item"/>
            <Item id="FAA" match="$main"/>
            <Item id="FMEAO" match="$FMEAObject"/>
            <Part owner="FAA" partType="2IFB" defObj="FMEAO"/>
        </Action>
        <!--Intent [FMIF]-->
        <Action id="Intent_New">
            <Parameter name="object" as="Item"/>
            <Parameter name="intent" as="ItemData"/>
            <Item id="Obj" match="$object"/>
            <Item id="Int" match="$intent"/>
            <Part owner="Obj" partType="2IFQ" defObj="Int"/>
        </Action>
        <Action id="Intent_Add_Paste">
            <Parameter name="object" as="Item"/>
            <Parameter name="intent" as="Item"/>
            <Item id="Obj" match="$object"/>
            <Item id="Int" match="$intent"/>
            <Part owner="Obj" partType="2IFQ" defObj="Int"/>
        </Action>
        <!--Failure Mode [FMFM]-->
        <Action id="Failure_New">
            <Parameter name="function" as="Item"/>
            <Parameter name="failure" as="ItemData"/>
            <Item id="Fun" match="$function"/>
            <Item id="Fai" match="$failure"/>
            <Part owner="Fun" partType="3IFM" defObj="Fai"/>
        </Action>
        <Action id="Failure_Add_Paste">
            <Parameter name="function" as="Item"/>
            <Parameter name="failure" as="Item"/>
            <Item id="Fun" match="$function"/>
            <Item id="Fai" match="$failure"/>
            <Part owner="Fun" partType="3IFM" defObj="Fai"/>
        </Action>
        <!--Failure Effect [2CFE]-->
        <Action id="Effects_New">
            <Parameter name="failure" as="Item"/>
            <Parameter name="effect" as="ItemData"/>
            <Item id="Fai" match="$failure"/>
            <Item id="Eff" match="$effect"/>
            <Part owner="Fai" partType="3IFX" defObj="Eff"/>
        </Action>
        <Action id="Effects_Add_Paste">
            <Parameter name="failure" as="Item"/>
            <Parameter name="effect" as="Item"/>
            <Item id="Fai" match="$failure"/>
            <Item id="Eff" match="$effect"/>
            <Part owner="Fai" partType="3IFX" defObj="Eff"/>
        </Action>
        <!--Cause [FMCA]-->
        <Action id="Cause_New">
            <Parameter name="failure" as="Item"/>
            <Parameter name="cause" as="ItemData"/>
            <Item id="Fai" match="$failure"/>
            <Item id="Cau" match="$cause"/>
            <Part owner="Fai" partType="3ICA" defObj="Cau"/>
        </Action>
        <Action id="Cause_Add_Paste">
            <Parameter name="failure" as="Item"/>
            <Parameter name="cause" as="Item"/>
            <Item id="Fai" match="$failure"/>
            <Item id="Cau" match="$cause"/>
            <Part owner="Fai" partType="3ICA" defObj="Cau"/>
        </Action>
        <!--Prevention [FMBP]-->
        <Action id="Prevention_New">
            <Parameter name="cause" as="Item"/>
            <Parameter name="prevention" as="ItemData"/>
            <Item id="Cau" match="$cause"/>
            <Item id="Pre" match="$prevention"/>
            <Part owner="Cau" partType="3IPR" defObj="Pre"/>
        </Action>
        <Action id="Prevention_Add_Paste">
            <Parameter name="cause" as="Item"/>
            <Parameter name="prevention" as="Item"/>
            <Item id="Cau" match="$cause"/>
            <Item id="Pre" match="$prevention"/>
            <Part owner="Cau" partType="3IPR" defObj="Pre"/>
        </Action>
        <!--Detection [FMBD]-->
        <Action id="Detection_New">
            <Parameter name="cause" as="Item"/>
            <Parameter name="detection" as="ItemData"/>
            <Item id="Cau" match="$cause"/>
            <Item id="Det" match="$detection"/>
            <Part owner="Cau" partType="3IDE" defObj="Det"/>
        </Action>
        <Action id="Detection_Add_Paste">
            <Parameter name="cause" as="Item"/>
            <Parameter name="detection" as="Item"/>
            <Item id="Cau" match="$cause"/>
            <Item id="Det" match="$detection"/>
            <Part owner="Cau" partType="3IDE" defObj="Det"/>
        </Action>
    </Actions>
    <Columns>
        <ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Items/object" objectName="object" id="Items_object"/>
        <Choose>
            <When test="Type.SID = '2PEM'">
                <ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Process intent" objectName="function" id="Intent"/>
            </When>
            <Otherwise>
                <ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Function/Design intent" objectName="function" id="Intent"/>
            </Otherwise>
        </Choose>
        <ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Potential failure mode" objectName="failure" id="Failure"/>
        <TextColumn font="Normal8pt" cellMerge="True" multiValueStyle="Bullets" width="100" caption="Potential effect(s) of failure" objectName="effects" id="Effects">#{Name} (#{DefObj.Attribute:2AAG})</TextColumn>
        <TextColumn font="Normal8pt" cellMerge="True" width="30" caption="Sev" objectName="failure">#{?DefObj/3IFX.Select(@2AAG).Max}</TextColumn>
        <AttributeColumn font="Normal8pt" width="24" caption="Class" type="2SPC" objectName="cause"/>
        <ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Potential cause(s)" objectName="cause" id="Cause"/>
        <!--
        <ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Sub cause(s)" objectName="cause2"/>
        <ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Sub cause(s)" objectName="cause3"/>
        <ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Sub cause(s)" objectName="cause4"/>
        <ItemNameColumn font="Normal8pt" cellMerge="True" width="100" caption="Sub cause(s)" objectName="cause5"/>
-->
        <Choose>
            <When test="Type.SID = '2PEM'">
                <ItemNameColumn font="Normal8pt" multiValueStyle="Bullets" width="100" caption="Current process prevention" objectName="prevention" id="Prevention"/>
            </When>
            <Otherwise>
                <ItemNameColumn font="Normal8pt" multiValueStyle="Bullets" width="100" caption="Current design prevention" objectName="prevention" id="Prevention"/>
            </Otherwise>
        </Choose>
        <ItemAttributeColumn font="Normal8pt" readOnly="False" width="30" caption="Occ" type="2AAH" objectName="cause"/>
        <Choose>
            <When test="Type.SID = '2PEM'">
                <ItemNameColumn font="Normal8pt" multiValueStyle="Bullets" width="100" caption="Current process detection" objectName="detection" id="Detection"/>
            </When>
            <Otherwise>
                <ItemNameColumn font="Normal8pt" multiValueStyle="Bullets" width="100" caption="Current design detection" objectName="detection" id="Detection"/>
            </Otherwise>
        </Choose>
        <ItemAttributeColumn font="Normal8pt" readOnly="False" width="30" caption="Det" type="2AAI" objectName="cause"/>
        <AttributeColumn font="Normal8pt" width="30" caption="RPN" type="2RP2" objectName="cause"/>
        <NameColumn font="Normal8pt" multiValueStyle="Bullets" width="120" caption="Recommended actions" objectName="issues"/>
        <AssignedToColumn font="Normal8pt" multiValueStyle="Bullets" width="80" caption="Responsible" objectName="issues"/>
        <IssueAttributeColumn project="FMEA" font="Normal8pt" multiValueStyle="Bullets" width="80" caption="Due date" type="DUDA" objectName="issues" readOnly="false"/>
        <IssueStatusColumn font="Normal8pt" multiValueStyle="Bullets" width="80" caption="Status" objectName="issues" readOnly="false"/>
        <IssueAttributeColumn project="FMEA" font="Normal8pt" multiValueStyle="Bullets" width="100" caption="Action taken" type="ACTA" objectName="issues" readOnly="false"/>
        <IssueAttributeColumn project="FMEA" font="Normal8pt" multiValueStyle="Bullets" width="80" caption="Completion date" type="CODA" objectName="issues" readOnly="false"/>
        <TextColumn font="Normal8pt"  width="30" caption="Curr. Sev." objectName="improvedFailureMode">#{?/3IFX.Select(@2AAG).Max}</TextColumn>
        <ItemAttributeColumn font="Normal8pt" readOnly="False" width="30" caption="Curr. Occ." type="2AAH" objectName="improvedCause"/>
        <ItemAttributeColumn font="Normal8pt" readOnly="False" width="30" caption="Curr. Det." type="2AAI" objectName="improvedCause"/>
        <AttributeColumn  font="Normal8pt" width="32" caption="Curr. RPN" type="2RP2" objectName="improvedCausePart" readOnly="false"/>
    </Columns>
    <Choose>
        <When test="/2IFB">
            <ForEachPart type="2IFB">
                <!-- For each object -->
                <ApplyTemplate name="FMEAObjectPart"/>
            </ForEachPart>
        </When>
        <When test="/PFOB">
            <ForEachPart type="PFOB">
                <!-- For each object -->
                <ApplyTemplate name="FMEAObjectPart"/>
            </ForEachPart>
        </When>
        <Otherwise>
            <Row/>
        </Otherwise>
    </Choose>
    <Template name="FMEAObjectPart">
        <RowObject name="object">
            <DefObj>
                <Choose>
                    <When test="/2IFQ">
                        <ForEachPart type="2IFQ">
                            <!-- For each function -->
                            <ApplyTemplate name="FunctionPart"/>
                        </ForEachPart>
                    </When>
                    <Otherwise>
                        <Row/>
                    </Otherwise>
                </Choose>
            </DefObj>
        </RowObject>
    </Template>
    <Template name="FunctionPart">
        <RowObject name="function">
            <DefObj>
                <Choose>
                    <When test="/3IFM">
                        <ForEachPart type="3IFM">
                            <!-- For each failure -->
                            <ApplyTemplate name="FailurePart"/>
                        </ForEachPart>
                    </When>
                    <Otherwise>
                        <Row/>
                    </Otherwise>
                </Choose>
            </DefObj>
        </RowObject>
    </Template>
    <Template name="FailurePart">
        <RowObject name="failure">
            <DefObj>
                <Choose>
                    <When test="/3ICA">
                        <ForEachPart type="3ICA">
                            <!-- For each cause -->
                            <Log>Main cause</Log>
                            <ApplyTemplate name="Cause"/>
                        </ForEachPart>
                    </When>
                    <Otherwise>
                        <Row>
                            <ForEachPart type="3IFX" sort="DefObj.Attribute:2AAG" sortOrder="descending">
                                <RowObject name="effects"/>
                            </ForEachPart>
                        </Row>
                    </Otherwise>
                </Choose>
            </DefObj>
        </RowObject>
    </Template>
    <Template name="Cause">
        <Row>
            <ApplyTemplate name="CauseRow"/>
            <RowObject name="cause"/>
        </Row>
        <RowObject name="cause">
            <DefObj>
                <ForEachPart type="3ISC">
                    <!-- For each cause -->
                    <Log>Sub cause</Log>
                    <ApplyTemplate name="Cause2"/>
                </ForEachPart>
            </DefObj>
        </RowObject>
    </Template>
    <Template name="Cause2">
        <Row>
            <ApplyTemplate name="CauseRow"/>
            <RowObject name="cause2"/>
        </Row>
        <RowObject name="cause2">
            <DefObj>
                <ForEachPart type="3ISC">
                    <!-- For each cause -->
                    <ApplyTemplate name="Cause3"/>
                </ForEachPart>
            </DefObj>
        </RowObject>
    </Template>
    <Template name="Cause3">
        <Row>
            <ApplyTemplate name="CauseRow"/>
            <RowObject name="cause3"/>
        </Row>
        <RowObject name="cause3">
            <DefObj>
                <ForEachPart type="3ISC">
                    <!-- For each cause -->
                    <ApplyTemplate name="Cause4"/>
                </ForEachPart>
            </DefObj>
        </RowObject>
    </Template>
    <Template name="Cause4">
        <Row>
            <ApplyTemplate name="CauseRow"/>
            <RowObject name="cause4"/>
        </Row>
        <RowObject name="cause4">
            <DefObj>
                <ForEachPart type="3ISC">
                    <!-- For each cause -->
                    <ApplyTemplate name="Cause5"/>
                </ForEachPart>
            </DefObj>
        </RowObject>
    </Template>
    <Template name="Cause5">
        <Row>
            <ApplyTemplate name="CauseRow"/>
            <RowObject name="cause5"/>
        </Row>
    </Template>
    <Template name="CauseRow">
        <Log>Cause: #{Name}</Log>
        <Owner>
            <ForEachPart type="3IFX" sort="DefObj.Attribute:2AAG" sortOrder="descending">
                <!-- For each effect -->
                <RowObject name="effects"/>
            </ForEachPart>
        </Owner>
        <DefObj>
            <ForEachIssueInObj type="ORGC">
                <RowObject name="issues"/>
            </ForEachIssueInObj>
            <Variable name="improvedCause" select="/issueref::ORGC/objref::IMPC" as="Items"/>
            <ForEach select="$improvedCause">
                <RowObject name="improvedCause"/>
            </ForEach>
            <Variable name="improvedFailureMode" select="/issueref::ORGC/objref::IMFM" as="Items"/>
            <ForEach select="$improvedFailureMode">
                <RowObject name="improvedFailureMode"/>
                <ForEachPart type="3ICA">
                    <!-- For each cause -->
                    <If test="DefObjIs($improvedCause)">
                        <RowObject name="improvedCausePart"/>
                    </If>
                </ForEachPart>
            </ForEach>
            <ForEachPart type="3IPR">
                <!-- Preventions -->
                <RowObject name="prevention"/>
            </ForEachPart>
            <ForEachPart type="3IDE">
                <!-- Detections-->
                <RowObject name="detection"/>
            </ForEachPart>
        </DefObj>
    </Template>
    <Function name="DefObjIs" as="Boolean">
        <Parameter name="DefObjItems" as="Items"/>
        <DefObj>
            <Value select=". in $DefObjItems"/>
        </DefObj>
    </Function>
</Grid>

Example Result