Source:
<code>public DMNType resolveTypeRef(DMNModelImpl dmnModel, DMNNode node, NamedElement model, DMNModelInstrumentedBase localElement, QName typeRef) { if ( typeRef != null ) { String namespace = getNamespace( dmnModel, localElement, typeRef ); DMNType type = dmnModel.getTypeRegistry().resolveType( namespace, typeRef.getLocalPart() ); if( type == null && DMNModelInstrumentedBase.URI_FEEL.equals( namespace ) ) { if ( model instanceof Decision && ((Decision) model).getExpression() instanceof DecisionTable ) { DecisionTable dt = (DecisionTable) ((Decision) model).getExpression(); if ( dt.getOutput().size() > 1 ) { CompositeTypeImpl compType = new CompositeTypeImpl( dmnModel.getNamespace(), model.getName()+"_Type", model.getId(), dt.getHitPolicy().isMultiHit() ); for ( OutputClause oc : dt.getOutput() ) { DMNType fieldType = resolveTypeRef( dmnModel, node, model, oc, oc.getTypeRef() ); compType.addField( oc.getName(), fieldType ); } dmnModel.getTypeRegistry().registerType( compType ); return compType; } else if ( dt.getOutput().size() == 1 ) { return resolveTypeRef( dmnModel, node, model, dt.getOutput().get( 0 ), dt.getOutput().get( 0 ).getTypeRef() ); } } } else if( type == null ) { MsgUtil.reportMessage( logger, DMNMessage.Severity.ERROR, localElement, dmnModel, null, null, Msg.UNKNOWN_TYPE_REF_ON_NODE, typeRef.toString(), <START> Optional.ofNullable(localElement.getParentDRGElement()).map(x->x.getIdentifierString()).orElse(null) ); <END> } return type; } return dmnModel.getTypeRegistry().resolveType( DMNModelInstrumentedBase.URI_FEEL, BuiltInType.UNKNOWN.getName() ); }</code><technical_language>@tarilabs I understanding this? getParentDRGElement return null, is "<definitions>" "<itemDefinition>" elements... is case here</technical_language>

Target:
public DMNType resolveTypeRef(DMNModelImpl dmnModel, DMNNode node, NamedElement model, DMNModelInstrumentedBase localElement, QName typeRef) { if ( typeRef != null ) { String namespace = getNamespace( localElement, typeRef ); DMNType type = dmnModel.getTypeRegistry().resolveType( namespace, typeRef.getLocalPart() ); if( type == null && DMNModelInstrumentedBase.URI_FEEL.equals( namespace ) ) { if ( model instanceof Decision && ((Decision) model).getExpression() instanceof DecisionTable ) { DecisionTable dt = (DecisionTable) ((Decision) model).getExpression(); if ( dt.getOutput().size() > 1 ) { CompositeTypeImpl compType = new CompositeTypeImpl( dmnModel.getNamespace(), model.getName()+"_Type", model.getId(), dt.getHitPolicy().isMultiHit() ); for ( OutputClause oc : dt.getOutput() ) { DMNType fieldType = resolveTypeRef( dmnModel, node, model, oc, oc.getTypeRef() ); compType.addField( oc.getName(), fieldType ); } dmnModel.getTypeRegistry().registerType( compType ); return compType; } else if ( dt.getOutput().size() == 1 ) { return resolveTypeRef( dmnModel, node, model, dt.getOutput().get( 0 ), dt.getOutput().get( 0 ).getTypeRef() ); } } } else if( type == null ) { MsgUtil.reportMessage( logger, DMNMessage.Severity.ERROR, localElement, dmnModel, null, null, Msg.UNKNOWN_TYPE_REF_ON_NODE, typeRef.toString(), localElement.getParentDRGElement().getIdentifierString() ); } return type; } return dmnModel.getTypeRegistry().resolveType( DMNModelInstrumentedBase.URI_FEEL, BuiltInType.UNKNOWN.getName() ); }