This is an automated email from the ASF dual-hosted git repository.

gitgabrio pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-drools.git


The following commit(s) were added to refs/heads/main by this push:
     new 6281abd312 [incubator-kie-issues#908] Validate new DMN 1.5 features 
(#5785)
6281abd312 is described below

commit 6281abd312c72997e306caf21b0db4fd790bed87
Author: Gabriele Cardosi <[email protected]>
AuthorDate: Fri Mar 15 13:57:31 2024 +0100

    [incubator-kie-issues#908] Validate new DMN 1.5 features (#5785)
    
    * [incubator-kie-issues#908] WIP. Moved shared models to 
kie-dmn-test-resources. Adapted UnnamedImportUtilsTest.
    Add kie-dmn-test-resources as dependency for kie-dmn-validation. Add fix 
for empty name import. Not working: references to unnamed imported model
    
    * [incubator-kie-issues#908] WIP. Working: references to unnamed imported 
model
    
    * [incubator-kie-issues#908] WIP. Implemented validation/evaluation for 
DateRangeLoop, listreplace, unnamed import
    
    * [incubator-kie-issues#908] Validate DMN 1.5 features. Moved shared models 
to kie-dmn-test-resources
    
    * [incubator-kie-issues#908] Fixed model.
    
    * [incubator-kie-issues#908] Add empty model name test
    
    ---------
    
    Co-authored-by: Gabriele-Cardosi <[email protected]>
---
 .../kie/dmn/core/compiler/UnnamedImportUtils.java  |  14 +-
 .../java/org/kie/dmn/core/DMNCompilerTest.java     |   4 +-
 .../dmn/core/compiler/UnnamedImportUtilsTest.java  |  87 ++++++-----
 .../org/kie/dmn/core/Imported_Model_Unamed.dmn     |  69 ---------
 .../kie/dmn/core/Importing_EmptyNamed_Model.dmn    |  79 ----------
 .../org/kie/dmn/core/Importing_Named_Model.dmn     |  79 ----------
 .../core/Importing_OverridingEmptyNamed_Model.dmn  |  93 ------------
 .../org/kie/dmn/feel/parser/feel11/FEELParser.java |  19 ++-
 .../AllowedValuesChecksInsideCollection.dmn        |   4 +-
 .../src/test/resources}/DateToDateTimeFunction.dmn |   9 +-
 .../src/test/resources/ForLoopDatesEvaluate.dmn    |  47 ++++++
 .../src/test/resources/Imported_Model_Unamed.dmn   |  63 ++++++++
 .../test/resources/Importing_EmptyNamed_Model.dmn  |  79 ++++++++++
 .../src/test/resources/Importing_Named_Model.dmn   |  79 ++++++++++
 .../Importing_OverridingEmptyNamed_Model.dmn       |  94 ++++++++++++
 .../src/test/resources/ListReplaceEvaluate.dmn     |  47 ++++++
 .../test/resources/NegationOfDurationEvaluate.dmn  |  41 ++++++
 .../src/test/resources/TypeConstraintsChecks.dmn   |   4 +-
 kie-dmn/kie-dmn-validation/pom.xml                 |  13 ++
 .../org/kie/dmn/validation/DMNValidatorImpl.java   |  20 ++-
 .../dmn/validation/DMNv1x/dmn-validation-rules.drl |  11 ++
 .../java/org/kie/dmn/validation/ValidatorTest.java |   7 +
 .../dmn/validation/v1_5/DMN15ValidationsTest.java  | 162 +++++++++++++++++++++
 .../org/kie/dmn/validation/EmptyModelName.dmn      |  63 ++++++++
 kie-dmn/pom.xml                                    |   2 +-
 25 files changed, 809 insertions(+), 380 deletions(-)

diff --git 
a/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/UnnamedImportUtils.java
 
b/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/UnnamedImportUtils.java
index 3f22b334e0..1d3a963b12 100644
--- 
a/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/UnnamedImportUtils.java
+++ 
b/kie-dmn/kie-dmn-core/src/main/java/org/kie/dmn/core/compiler/UnnamedImportUtils.java
@@ -51,6 +51,17 @@ public class UnnamedImportUtils {
         // Here we try to put all the definitions from the "imported" model 
inside the parent one
         Definitions parentDefinitions = parentModel.getDefinitions();
         Definitions mergedDefinitions = mergedModel.getDefinitions();
+
+        mergeDefinitions(parentDefinitions, mergedDefinitions);
+
+        mergedModel.getTypeRegistry().getTypes().forEach((s, stringDMNTypeMap) 
->
+                                                                 
stringDMNTypeMap.values().
+                                                                         
forEach(dmnType -> parentModel.getTypeRegistry().registerType(dmnType)));
+    }
+
+    public static void mergeDefinitions(Definitions parentDefinitions, 
Definitions mergedDefinitions) {
+        // incubator-kie-issues#852: The idea is to not treat the anonymous 
models as import, but to "merge" them with original opne,
+        // Here we try to put all the definitions from the "imported" model 
inside the parent one
         
parentDefinitions.getArtifact().addAll(mergedDefinitions.getArtifact());
 
         addIfNotPresent(parentDefinitions.getDecisionService(), 
mergedDefinitions.getDecisionService());
@@ -59,9 +70,6 @@ public class UnnamedImportUtils {
         addIfNotPresent(parentDefinitions.getImport(), 
mergedDefinitions.getImport());
         addIfNotPresent(parentDefinitions.getItemDefinition(), 
mergedDefinitions.getItemDefinition());
         
mergedDefinitions.getChildren().forEach(parentDefinitions::addChildren);
-        mergedModel.getTypeRegistry().getTypes().forEach((s, stringDMNTypeMap) 
->
-                                                                 
stringDMNTypeMap.values().
-                                                                         
forEach(dmnType -> parentModel.getTypeRegistry().registerType(dmnType)));
     }
 
     static <T extends NamedElement> void addIfNotPresent(Collection<T> target, 
Collection<T> source) {
diff --git 
a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNCompilerTest.java 
b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNCompilerTest.java
index 4f4773bfc1..9f9617c56a 100644
--- a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNCompilerTest.java
+++ b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/DMNCompilerTest.java
@@ -278,7 +278,7 @@ public class DMNCompilerTest extends BaseVariantTest {
                                                                         
this.getClass(),
                                                                         
"Imported_Model_Unamed.dmn");
 
-        final DMNModel importedModel = 
runtime.getModel("http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df36";,
+        final DMNModel importedModel = 
runtime.getModel("http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44";,
                                                         "Imported Model");
         assertThat(importedModel).isNotNull();
         for (final DMNMessage message : importedModel.getMessages()) {
@@ -324,7 +324,7 @@ public class DMNCompilerTest extends BaseVariantTest {
                                                                         
this.getClass(),
                                                                         
"Imported_Model_Unamed.dmn");
 
-        final DMNModel importedModel = 
runtime.getModel("http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df36";,
+        final DMNModel importedModel = 
runtime.getModel("http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44";,
                                                         "Imported Model");
         assertThat(importedModel).isNotNull();
         for (final DMNMessage message : importedModel.getMessages()) {
diff --git 
a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/compiler/UnnamedImportUtilsTest.java
 
b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/compiler/UnnamedImportUtilsTest.java
index f92c8a1c93..24911180d0 100644
--- 
a/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/compiler/UnnamedImportUtilsTest.java
+++ 
b/kie-dmn/kie-dmn-core/src/test/java/org/kie/dmn/core/compiler/UnnamedImportUtilsTest.java
@@ -1,13 +1,12 @@
 package org.kie.dmn.core.compiler;
 
-import java.io.File;
 import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
+import java.io.InputStream;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collection;
 
-import org.drools.util.FileUtils;
 import org.junit.Test;
 import org.kie.dmn.api.core.DMNModel;
 import org.kie.dmn.api.core.DMNRuntime;
@@ -18,7 +17,9 @@ import org.kie.dmn.model.api.Definitions;
 import org.kie.dmn.model.api.NamedElement;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 import static org.kie.dmn.core.compiler.UnnamedImportUtils.addIfNotPresent;
 import static org.kie.dmn.core.compiler.UnnamedImportUtils.isInUnnamedImport;
 
@@ -26,14 +27,12 @@ public class UnnamedImportUtilsTest {
 
     @Test
     public void isInUnnamedImportTrue() {
-        File importingModelFile = 
FileUtils.getFile("Importing_EmptyNamed_Model.dmn");
-        assertThat(importingModelFile).isNotNull().exists();
-        File importedModelFile = 
FileUtils.getFile("Imported_Model_Unamed.dmn");
-        assertThat(importedModelFile).isNotNull().exists();
-        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntimeWithAdditionalResources(importingModelFile,
-                                                                               
        importedModelFile);
+        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntimeWithAdditionalResources("Importing_EmptyNamed_Model"
 +
+                                                                               
                ".dmn",
+                                                                               
        this.getClass(),
+                                                                               
        "Imported_Model_Unamed.dmn");
 
-        final DMNModel importedModel = 
runtime.getModel("http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df36";,
+        final DMNModel importedModel = 
runtime.getModel("http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44";,
                                                         "Imported Model");
         assertThat(importedModel).isNotNull();
         final DMNModelImpl importingModel = 
(DMNModelImpl)runtime.getModel("http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";,
@@ -48,14 +47,11 @@ public class UnnamedImportUtilsTest {
 
     @Test
     public void isInUnnamedImportFalse() {
-        File importingModelFile = 
FileUtils.getFile("Importing_Named_Model.dmn");
-        assertThat(importingModelFile).isNotNull().exists();
-        File importedModelFile = 
FileUtils.getFile("Imported_Model_Unamed.dmn");
-        assertThat(importedModelFile).isNotNull().exists();
-        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntimeWithAdditionalResources(importingModelFile,
-                                                                               
        importedModelFile);
+        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntimeWithAdditionalResources("Importing_Named_Model.dmn",
+                                                                               
        this.getClass(),
+                                                                               
        "Imported_Model_Unamed.dmn");
 
-        final DMNModel importedModel = 
runtime.getModel("http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df36";,
+        final DMNModel importedModel = 
runtime.getModel("http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44";,
                                                         "Imported Model");
         assertThat(importedModel).isNotNull();
         final DMNModelImpl importingModel = 
(DMNModelImpl)runtime.getModel("http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";,
@@ -70,40 +66,43 @@ public class UnnamedImportUtilsTest {
 
     @Test
     public void addIfNotPresentTrue() throws IOException {
-        File importedModelFile = 
FileUtils.getFile("Imported_Model_Unamed.dmn");
-        assertThat(importedModelFile).isNotNull().exists();
-
-        String xml = new 
String(Files.readAllBytes(Paths.get(importedModelFile.toURI())));
-        Definitions definitions = 
DMNMarshallerFactory.newDefaultMarshaller().unmarshal(xml);
-        definitions.getDecisionService().forEach(definition ->  
assertTrue(added(definition)));
-        definitions.getBusinessContextElement().forEach(definition ->  
assertTrue(added(definition)));
-        definitions.getDrgElement().forEach(definition ->  
assertTrue(added(definition)));
-        definitions.getImport().forEach(definition ->  
assertTrue(added(definition)));
-        definitions.getItemDefinition().forEach(definition ->  
assertTrue(added(definition)));
+        URL importedModelFileResource = 
Thread.currentThread().getContextClassLoader().getResource(
+                "Imported_Model_Unamed.dmn");
+        assertNotNull(importedModelFileResource);
+        try (InputStream is = importedModelFileResource.openStream()) {
+            String xml = new String(is.readAllBytes(), StandardCharsets.UTF_8);
+            Definitions definitions = 
DMNMarshallerFactory.newDefaultMarshaller().unmarshal(xml);
+            definitions.getDecisionService().forEach(definition ->  
assertTrue(added(definition)));
+            definitions.getBusinessContextElement().forEach(definition ->  
assertTrue(added(definition)));
+            definitions.getDrgElement().forEach(definition ->  
assertTrue(added(definition)));
+            definitions.getImport().forEach(definition ->  
assertTrue(added(definition)));
+            definitions.getItemDefinition().forEach(definition ->  
assertTrue(added(definition)));
+        }
     }
 
     @Test
     public void addIfNotPresentFalse() throws IOException {
-        File importingModelFile = 
FileUtils.getFile("Importing_OverridingEmptyNamed_Model.dmn");
-        assertThat(importingModelFile).isNotNull().exists();
-        File importedModelFile = 
FileUtils.getFile("Imported_Model_Unamed.dmn");
-        assertThat(importedModelFile).isNotNull().exists();
-        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntimeWithAdditionalResources(importingModelFile,
-                                                                               
        importedModelFile);
-
+        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntimeWithAdditionalResources("Importing_EmptyNamed_Model.dmn",
+                                                                               
        this.getClass(),
+                                                                               
        "Imported_Model_Unamed.dmn");
         final DMNModelImpl importingModel = 
(DMNModelImpl)runtime.getModel("http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";,
                                                                            
"Importing empty-named Model");
         assertThat(importingModel).isNotNull();
 
         Definitions importingDefinitions = importingModel.getDefinitions();
-
-        String importedXml = new 
String(Files.readAllBytes(Paths.get(importedModelFile.toURI())));
-        Definitions importedDefinitions = 
DMNMarshallerFactory.newDefaultMarshaller().unmarshal(importedXml);
-        importedDefinitions.getDecisionService().forEach(definition ->  
assertFalse(added(importingDefinitions.getDecisionService(), definition)));
-        importedDefinitions.getBusinessContextElement().forEach(definition ->  
assertFalse(added(importingDefinitions.getBusinessContextElement(), 
definition)));
-        importedDefinitions.getDrgElement().forEach(definition -> 
assertFalse(added(importingDefinitions.getDrgElement(), definition)));
-        importedDefinitions.getImport().forEach(definition ->  
assertFalse(added(importingDefinitions.getImport(), definition)));
-        importedDefinitions.getItemDefinition().forEach(definition ->  
assertFalse(added(importingDefinitions.getItemDefinition(), definition)));
+        URL importedModelFileResource = 
Thread.currentThread().getContextClassLoader().getResource(
+                "Imported_Model_Unamed.dmn");
+        assertNotNull(importedModelFileResource);
+        try (InputStream is = importedModelFileResource.openStream()) {
+            String importedXml = new String(is.readAllBytes(), 
StandardCharsets.UTF_8);
+            Definitions importedDefinitions = 
DMNMarshallerFactory.newDefaultMarshaller().unmarshal(importedXml);
+            importedDefinitions.getDecisionService().forEach(definition -> 
assertFalse(added(importingDefinitions.getDecisionService(), definition)));
+            importedDefinitions.getBusinessContextElement().forEach(definition 
-> assertFalse(added(importingDefinitions.getBusinessContextElement(), 
definition)));
+            importedDefinitions.getDrgElement().forEach(definition -> 
assertFalse(added(importingDefinitions.getDrgElement(), definition)));
+            importedDefinitions.getImport().forEach(definition -> 
assertFalse(added(importingDefinitions.getImport(),
+                                                                               
     definition)));
+            importedDefinitions.getItemDefinition().forEach(definition -> 
assertFalse(added(importingDefinitions.getItemDefinition(), definition)));
+        }
     }
 
     private  <T extends NamedElement> boolean added(T source) {
diff --git 
a/kie-dmn/kie-dmn-core/src/test/resources/org/kie/dmn/core/Imported_Model_Unamed.dmn
 
b/kie-dmn/kie-dmn-core/src/test/resources/org/kie/dmn/core/Imported_Model_Unamed.dmn
deleted file mode 100644
index d32261f9d4..0000000000
--- 
a/kie-dmn/kie-dmn-core/src/test/resources/org/kie/dmn/core/Imported_Model_Unamed.dmn
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<semantic:definitions 
xmlns="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df36";
-                      xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
-                      xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
-                      
xmlns:dmndi="https://www.omg.org/spec/DMN/20230324/DMNDI/";
-                      xmlns:feel="https://www.omg.org/spec/DMN/20230324/FEEL/";
-                      
xmlns:semantic="https://www.omg.org/spec/DMN/20230324/MODEL/";
-                      xmlns:tc="http://www.omg.org/spec/DMN/20160719/testcase";
-                      xmlns:xsd="http://www.w3.org/2001/XMLSchema";
-                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-                      exporter="DMN Modeler"
-                      exporterVersion="6.0.3.201802231629"
-                      id="_f27bb64b-6fc7-4e1f-9848-11ba35e0df36"
-                      name="Imported Model"
-                      
namespace="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df36";>
-   <semantic:extensionElements>
-  </semantic:extensionElements>
-
-  <semantic:inputData id="_51190b90-924d-479b-872b-4c6f3486c2de" name="An 
Imported Person">
-    <semantic:variable id="_44a44de4-c0ab-408e-9ba9-983d8ec2f6c6"
-                       name="An Imported Person"
-                       typeRef="tPerson"/>
-  </semantic:inputData>
-  <semantic:decision id="_bf4a9628-15ae-4887-97f2-7099426cb61g" name="Remote 
Greeting">
-    <semantic:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c549"
-                       name="Remote Greeting"
-                       typeRef="string"/>
-    <semantic:informationRequirement>
-      <semantic:requiredInput href="#_51190b90-924d-479b-872b-4c6f3486c2de"/>
-    </semantic:informationRequirement>
-    <semantic:knowledgeRequirement>
-      <semantic:requiredKnowledge 
href="#_32543811-b499-4608-b784-6c6f294b1c58"/>
-    </semantic:knowledgeRequirement>
-    <semantic:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
-                                id="_d7e6836b-8491-487a-a653-5735daa85bf2"
-                                triso:unparsed="true">
-      <semantic:text>Say Hello( An Imported Person )</semantic:text>
-    </semantic:literalExpression>
-  </semantic:decision>
-
-  <semantic:decisionService id="_70386614-9838-420b-a2ae-ff901ada63fb"
-                            name="Remote Greeting Service">
-    <semantic:description>Remote Greeting Service</semantic:description>
-    <semantic:variable name="Remote Greeting Hello" typeRef="string"/>
-    <semantic:encapsulatedDecision 
href="#_bf4a9628-15ae-4887-97f2-7099426cb61g"/>
-  </semantic:decisionService>
-
-   <semantic:itemDefinition label="tPerson" name="tPerson">
-      <semantic:itemComponent id="_9bb0759c-b3c1-482f-87f5-c047dc65cef0" 
name="name">
-         <semantic:typeRef>string</semantic:typeRef>
-      </semantic:itemComponent>
-      <semantic:itemComponent id="_929acc15-101c-4e49-9b11-494fff411e50" 
name="age">
-         <semantic:typeRef>number</semantic:typeRef>
-      </semantic:itemComponent>
-   </semantic:itemDefinition>
-   <semantic:businessKnowledgeModel id="_32543811-b499-4608-b784-6c6f294b1c58" 
name="Say Hello">
-      <semantic:variable id="_a8eb10e1-30e6-40d8-a564-a868f4e0af34"
-                         name="Say Hello"
-                         typeRef="string"/>
-      <semantic:encapsulatedLogic kind="FEEL" 
id="_acbb96c9-34a3-4628-8179-dfc5f583e695">
-         <semantic:formalParameter id="_4a626f74-2ecc-4759-b76a-04baec6b795d"
-                                   name="Person"
-                                   typeRef="tPerson"/>
-         <semantic:literalExpression 
id="_c173a894-3719-4d2f-a365-25850e217310">
-            <semantic:text>"Hello " + Person.name + "!"</semantic:text>
-         </semantic:literalExpression>
-      </semantic:encapsulatedLogic>
-   </semantic:businessKnowledgeModel>
-</semantic:definitions>
diff --git 
a/kie-dmn/kie-dmn-core/src/test/resources/org/kie/dmn/core/Importing_EmptyNamed_Model.dmn
 
b/kie-dmn/kie-dmn-core/src/test/resources/org/kie/dmn/core/Importing_EmptyNamed_Model.dmn
deleted file mode 100644
index ff2d5d2720..0000000000
--- 
a/kie-dmn/kie-dmn-core/src/test/resources/org/kie/dmn/core/Importing_EmptyNamed_Model.dmn
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<semantic:definitions 
xmlns="http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";
-                      xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
-                      xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
-                      xmlns:dmndi="http://www.omg.org/spec/DMN/20180521/DMNDI/";
-                      xmlns:feel="http://www.omg.org/spec/DMN/20180521/FEEL/";
-                      
xmlns:semantic="http://www.omg.org/spec/DMN/20180521/MODEL/";
-                      xmlns:tc="http://www.omg.org/spec/DMN/20160719/testcase";
-                      xmlns:xsd="http://www.w3.org/2001/XMLSchema";
-                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-                      exporter="DMN Modeler"
-                      exporterVersion="6.0.3.201802231629"
-                      id="_f79aa7a4-f9a3-410a-ac95-bea496edabgc"
-                      name="Importing empty-named Model"
-                      
namespace="http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";>
-   <semantic:extensionElements>
-  </semantic:extensionElements>
-   <semantic:import xmlns:drools="http://www.drools.org/kie/dmn/1.1";
-                    xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
-                    
importType="http://www.omg.org/spec/DMN1-2Alpha/20160929/MODEL";
-                    
namespace="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df36";
-                    name=""
-                    drools:modelName="Imported Model"
-                    
triso:fileId="eyJmIjp7InNrdSI6IjEwMmM0MDQ3LTg5NjctNGI3ZS1hODgxLTBhY2ZkNWJjOTAwMiIsIm5hbWUiOiJJbXBvcnRlZCBNb2RlbCJ9fQ=="
-                    triso:fileName="Edson Tirelli/Imported Model"/>
-   <semantic:inputData id="_51190b90-924d-479b-872b-4c6f3486c2cb" name="A 
Person">
-      <semantic:variable id="_44a44de4-c0ab-408e-9ba9-983d8ec2f6b5"
-                         name="A Person"
-                         typeRef="tPerson"/>
-   </semantic:inputData>
-   <semantic:decision id="_bf4a9628-15ae-4887-97f2-7099426cb60f" name="Local 
Greeting">
-      <semantic:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c538"
-                         name="Local Greeting"
-                         typeRef="string"/>
-      <semantic:informationRequirement>
-         <semantic:requiredInput 
href="#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
-      </semantic:informationRequirement>
-     <semantic:knowledgeRequirement>
-       <semantic:requiredKnowledge 
href="#_42543811-b499-4608-b784-6c6f294b1c59"/>
-     </semantic:knowledgeRequirement>
-      <semantic:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
-                                  id="_d7e6836b-8491-487a-a653-5735daa85be1"
-                                  triso:unparsed="true">
-         <semantic:text>Local Hello( A Person )</semantic:text>
-      </semantic:literalExpression>
-   </semantic:decision>
-
-  <semantic:decision id="_bf4a9628-15ae-4887-97f2-7099426cb60g" name="Imported 
Greeting">
-    <semantic:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c539"
-                       name="Imported Greeting"
-                       typeRef="string"/>
-    <semantic:informationRequirement>
-      <semantic:requiredInput href="#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
-    </semantic:informationRequirement>
-    <semantic:knowledgeRequirement>
-      <semantic:requiredKnowledge 
href="#_32543811-b499-4608-b784-6c6f294b1c58"/>
-    </semantic:knowledgeRequirement>
-    <semantic:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
-                                id="_d7e6836b-8491-487a-a653-5735daa85be2"
-                                triso:unparsed="true">
-      <semantic:text>Say Hello( A Person )</semantic:text>
-    </semantic:literalExpression>
-  </semantic:decision>
-
-  <semantic:businessKnowledgeModel id="_42543811-b499-4608-b784-6c6f294b1c59" 
name="Local Hello">
-    <semantic:variable id="_a8eb10e1-30e6-40d8-a564-a868f4e0af45"
-                       name="Local Hello"
-                       typeRef="string"/>
-    <semantic:encapsulatedLogic kind="FEEL" 
id="_acbb96c9-34a3-4628-8179-dfc5f583e695">
-      <semantic:formalParameter id="_4a626f74-2ecc-4759-b76a-04baec6b795d"
-                                name="Person"
-                                typeRef="tPerson"/>
-      <semantic:literalExpression id="_c173a894-3719-4d2f-a365-25850e217310">
-        <semantic:text>"Local Hello " + Person.name + "!"</semantic:text>
-      </semantic:literalExpression>
-    </semantic:encapsulatedLogic>
-  </semantic:businessKnowledgeModel>
-
-</semantic:definitions>
diff --git 
a/kie-dmn/kie-dmn-core/src/test/resources/org/kie/dmn/core/Importing_Named_Model.dmn
 
b/kie-dmn/kie-dmn-core/src/test/resources/org/kie/dmn/core/Importing_Named_Model.dmn
deleted file mode 100644
index e83912d76f..0000000000
--- 
a/kie-dmn/kie-dmn-core/src/test/resources/org/kie/dmn/core/Importing_Named_Model.dmn
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<semantic:definitions 
xmlns="http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";
-                      xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
-                      xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
-                      xmlns:dmndi="http://www.omg.org/spec/DMN/20180521/DMNDI/";
-                      xmlns:feel="http://www.omg.org/spec/DMN/20180521/FEEL/";
-                      
xmlns:semantic="http://www.omg.org/spec/DMN/20180521/MODEL/";
-                      xmlns:tc="http://www.omg.org/spec/DMN/20160719/testcase";
-                      xmlns:xsd="http://www.w3.org/2001/XMLSchema";
-                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-                      exporter="DMN Modeler"
-                      exporterVersion="6.0.3.201802231629"
-                      id="_f79aa7a4-f9a3-410a-ac95-bea496edabgc"
-                      name="Importing named Model"
-                      
namespace="http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";>
-   <semantic:extensionElements>
-  </semantic:extensionElements>
-   <semantic:import xmlns:drools="http://www.drools.org/kie/dmn/1.1";
-                    xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
-                    
importType="http://www.omg.org/spec/DMN1-2Alpha/20160929/MODEL";
-                    
namespace="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df36";
-                    name="Imported Model"
-                    drools:modelName="Imported Model"
-                    
triso:fileId="eyJmIjp7InNrdSI6IjEwMmM0MDQ3LTg5NjctNGI3ZS1hODgxLTBhY2ZkNWJjOTAwMiIsIm5hbWUiOiJJbXBvcnRlZCBNb2RlbCJ9fQ=="
-                    triso:fileName="Edson Tirelli/Imported Model"/>
-   <semantic:inputData id="_51190b90-924d-479b-872b-4c6f3486c2cb" name="A 
Person">
-      <semantic:variable id="_44a44de4-c0ab-408e-9ba9-983d8ec2f6b5"
-                         name="A Person"
-                         typeRef="Imported Model.tPerson"/>
-   </semantic:inputData>
-   <semantic:decision id="_bf4a9628-15ae-4887-97f2-7099426cb60f" name="Local 
Greeting">
-      <semantic:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c538"
-                         name="Local Greeting"
-                         typeRef="string"/>
-      <semantic:informationRequirement>
-         <semantic:requiredInput 
href="#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
-      </semantic:informationRequirement>
-     <semantic:knowledgeRequirement>
-       <semantic:requiredKnowledge 
href="#_42543811-b499-4608-b784-6c6f294b1c59"/>
-     </semantic:knowledgeRequirement>
-      <semantic:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
-                                  id="_d7e6836b-8491-487a-a653-5735daa85be1"
-                                  triso:unparsed="true">
-         <semantic:text>Local Hello( A Person )</semantic:text>
-      </semantic:literalExpression>
-   </semantic:decision>
-
-  <semantic:decision id="_bf4a9628-15ae-4887-97f2-7099426cb60g" name="Imported 
Greeting">
-    <semantic:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c539"
-                       name="Imported Greeting"
-                       typeRef="string"/>
-    <semantic:informationRequirement>
-      <semantic:requiredInput href="#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
-    </semantic:informationRequirement>
-    <semantic:knowledgeRequirement>
-      <semantic:requiredKnowledge 
href="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df36#_32543811-b499-4608-b784-6c6f294b1c58"/>
-    </semantic:knowledgeRequirement>
-    <semantic:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
-                                id="_d7e6836b-8491-487a-a653-5735daa85be2"
-                                triso:unparsed="true">
-      <semantic:text>Imported Model.Say Hello( A Person )</semantic:text>
-    </semantic:literalExpression>
-  </semantic:decision>
-
-  <semantic:businessKnowledgeModel id="_42543811-b499-4608-b784-6c6f294b1c59" 
name="Local Hello">
-    <semantic:variable id="_a8eb10e1-30e6-40d8-a564-a868f4e0af45"
-                       name="Local Hello"
-                       typeRef="string"/>
-    <semantic:encapsulatedLogic kind="FEEL" 
id="_acbb96c9-34a3-4628-8179-dfc5f583e695">
-      <semantic:formalParameter id="_4a626f74-2ecc-4759-b76a-04baec6b795d"
-                                name="Person"
-                                typeRef="Imported Model.tPerson"/>
-      <semantic:literalExpression id="_c173a894-3719-4d2f-a365-25850e217310">
-        <semantic:text>"Local Hello " + Person.name + "!"</semantic:text>
-      </semantic:literalExpression>
-    </semantic:encapsulatedLogic>
-  </semantic:businessKnowledgeModel>
-
-</semantic:definitions>
diff --git 
a/kie-dmn/kie-dmn-core/src/test/resources/org/kie/dmn/core/Importing_OverridingEmptyNamed_Model.dmn
 
b/kie-dmn/kie-dmn-core/src/test/resources/org/kie/dmn/core/Importing_OverridingEmptyNamed_Model.dmn
deleted file mode 100644
index 63ef659ae0..0000000000
--- 
a/kie-dmn/kie-dmn-core/src/test/resources/org/kie/dmn/core/Importing_OverridingEmptyNamed_Model.dmn
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<semantic:definitions 
xmlns="http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";
-                      xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
-                      xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
-                      xmlns:dmndi="http://www.omg.org/spec/DMN/20180521/DMNDI/";
-                      xmlns:feel="http://www.omg.org/spec/DMN/20180521/FEEL/";
-                      
xmlns:semantic="http://www.omg.org/spec/DMN/20180521/MODEL/";
-                      xmlns:tc="http://www.omg.org/spec/DMN/20160719/testcase";
-                      xmlns:xsd="http://www.w3.org/2001/XMLSchema";
-                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-                      exporter="DMN Modeler"
-                      exporterVersion="6.0.3.201802231629"
-                      id="_f79aa7a4-f9a3-410a-ac95-bea496edabgc"
-                      name="Importing empty-named Model"
-                      
namespace="http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";>
-   <semantic:extensionElements>
-  </semantic:extensionElements>
-   <semantic:import xmlns:drools="http://www.drools.org/kie/dmn/1.1";
-                    xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
-                    
importType="http://www.omg.org/spec/DMN1-2Alpha/20160929/MODEL";
-                    
namespace="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df36";
-                    name=""
-                    drools:modelName="Imported Model"
-                    
triso:fileId="eyJmIjp7InNrdSI6IjEwMmM0MDQ3LTg5NjctNGI3ZS1hODgxLTBhY2ZkNWJjOTAwMiIsIm5hbWUiOiJJbXBvcnRlZCBNb2RlbCJ9fQ=="
-                    triso:fileName="Edson Tirelli/Imported Model"/>
-   <semantic:inputData id="_51190b90-924d-479b-872b-4c6f3486c2cb" name="A 
Person">
-      <semantic:variable id="_44a44de4-c0ab-408e-9ba9-983d8ec2f6b5"
-                         name="A Person"
-                         typeRef="tPerson"/>
-   </semantic:inputData>
-  <semantic:itemDefinition label="tPerson" name="tPerson">
-    <semantic:itemComponent id="_9bb0759c-b3c1-482f-87f5-c047dc65ceg1" 
name="name">
-      <semantic:typeRef>string</semantic:typeRef>
-    </semantic:itemComponent>
-    <semantic:itemComponent id="_929acc15-101c-4e49-9b11-494fff411e61" 
name="age">
-      <semantic:typeRef>number</semantic:typeRef>
-    </semantic:itemComponent>
-  </semantic:itemDefinition>
-   <semantic:decision id="_bf4a9628-15ae-4887-97f2-7099426cb60f" name="Local 
Greeting">
-      <semantic:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c538"
-                         name="Local Greeting"
-                         typeRef="string"/>
-      <semantic:informationRequirement>
-         <semantic:requiredInput 
href="#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
-      </semantic:informationRequirement>
-     <semantic:knowledgeRequirement>
-       <semantic:requiredKnowledge 
href="#_42543811-b499-4608-b784-6c6f294b1c59"/>
-     </semantic:knowledgeRequirement>
-      <semantic:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
-                                  id="_d7e6836b-8491-487a-a653-5735daa85be1"
-                                  triso:unparsed="true">
-         <semantic:text>Local Hello( A Person )</semantic:text>
-      </semantic:literalExpression>
-   </semantic:decision>
-
-  <semantic:decision id="_bf4a9628-15ae-4887-97f2-7099426cb60g" name="Imported 
Greeting">
-    <semantic:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c539"
-                       name="Imported Greeting"
-                       typeRef="string"/>
-    <semantic:informationRequirement>
-      <semantic:requiredInput href="#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
-    </semantic:informationRequirement>
-    <semantic:knowledgeRequirement>
-      <semantic:requiredKnowledge 
href="#_32543811-b499-4608-b784-6c6f294b1c58"/>
-    </semantic:knowledgeRequirement>
-    <semantic:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
-                                id="_d7e6836b-8491-487a-a653-5735daa85be2"
-                                triso:unparsed="true">
-      <semantic:text>Say Hello( A Person )</semantic:text>
-    </semantic:literalExpression>
-  </semantic:decision>
-  <semantic:decisionService id="_70386614-9838-420b-a2ae-ff901ada63gc"
-                            name="Remote Greeting Service">
-    <semantic:description>Remote Greeting Service</semantic:description>
-    <semantic:variable name="Remote Greeting Hello" typeRef="string"/>
-    <semantic:encapsulatedDecision 
href="#_bf4a9628-15ae-4887-97f2-7099426cb60g"/>
-  </semantic:decisionService>
-
-  <semantic:businessKnowledgeModel id="_42543811-b499-4608-b784-6c6f294b1c59" 
name="Local Hello">
-    <semantic:variable id="_a8eb10e1-30e6-40d8-a564-a868f4e0af45"
-                       name="Local Hello"
-                       typeRef="string"/>
-    <semantic:encapsulatedLogic kind="FEEL" 
id="_acbb96c9-34a3-4628-8179-dfc5f583e695">
-      <semantic:formalParameter id="_4a626f74-2ecc-4759-b76a-04baec6b795d"
-                                name="Person"
-                                typeRef="tPerson"/>
-      <semantic:literalExpression id="_c173a894-3719-4d2f-a365-25850e217310">
-        <semantic:text>"Local Hello " + Person.name + "!"</semantic:text>
-      </semantic:literalExpression>
-    </semantic:encapsulatedLogic>
-  </semantic:businessKnowledgeModel>
-
-</semantic:definitions>
diff --git 
a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/parser/feel11/FEELParser.java
 
b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/parser/feel11/FEELParser.java
index ace7bcb3bd..e78a39c251 100644
--- 
a/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/parser/feel11/FEELParser.java
+++ 
b/kie-dmn/kie-dmn-feel/src/main/java/org/kie/dmn/feel/parser/feel11/FEELParser.java
@@ -95,11 +95,15 @@ public class FEELParser {
         return isVariableNameValid(namePart);
     }
 
+    public static boolean isVariableNameEmpty( String source ) {
+        return checkVariableNameEmpty( source ).isEmpty();
+    }
+
     public static boolean isVariableNameValid( String source ) {
         return checkVariableName( source ).isEmpty();
     }
 
-    public static List<FEELEvent> checkVariableName( String source ) {
+    public static List<FEELEvent> checkVariableNameEmpty( String source ) {
         if( source == null || source.isEmpty() ) {
             return Collections.singletonList( new SyntaxErrorEvent( 
FEELEvent.Severity.ERROR,
                                                                     
Msg.createMessage( Msg.INVALID_VARIABLE_NAME_EMPTY ),
@@ -107,6 +111,15 @@ public class FEELParser {
                                                                     0,
                                                                     0,
                                                                     null ) );
+        } else {
+            return Collections.emptyList();
+        }
+    }
+
+    public static List<FEELEvent> checkVariableName( String source ) {
+        if( source == null || source.isEmpty() ) {
+            // We check validity of empty name with checkVariableNameEmpty
+            return Collections.emptyList();
         }
         CharStream input = CharStreams.fromString(source);
         FEEL_1_1Lexer lexer = new FEEL_1_1Lexer( input );
@@ -120,8 +133,8 @@ public class FEELParser {
         FEEL_1_1Parser.NameDefinitionWithEOFContext nameDef = 
parser.nameDefinitionWithEOF(); // be sure to align below 
parser.getRuleInvocationStack().contains("nameDefinition...
 
         if( ! errorChecker.hasErrors() &&
-            nameDef != null &&
-            source.trim().equals( parser.getHelper().getOriginalText( nameDef 
) ) ) {
+                nameDef != null &&
+                source.trim().equals( parser.getHelper().getOriginalText( 
nameDef ) ) ) {
             return Collections.emptyList();
         }
         return errorChecker.getErrors();
diff --git 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/AllowedValuesChecksInsideCollection.dmn
 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/AllowedValuesChecksInsideCollection.dmn
index 81b3738abf..fca927bc70 100644
--- 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/AllowedValuesChecksInsideCollection.dmn
+++ 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/AllowedValuesChecksInsideCollection.dmn
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <semantic:definitions 
xmlns="http://www.trisotech.com/definitions/_238bd96d-47cd-4746-831b-504f3e77b442";
-                      xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
-                      xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
+                      xmlns:dc="http://www.omg.org/spec/DMN/20230324/DC/";
+                      xmlns:di="http://www.omg.org/spec/DMN/20230324/DI/";
                       
xmlns:dmndi="https://www.omg.org/spec/DMN/20230324/DMNDI/";
                       xmlns:feel="https://www.omg.org/spec/DMN/20230324/FEEL/";
                       
xmlns:semantic="https://www.omg.org/spec/DMN/20230324/MODEL/";
diff --git 
a/kie-dmn/kie-dmn-core/src/test/resources/org/kie/dmn/core/DateToDateTimeFunction.dmn
 b/kie-dmn/kie-dmn-test-resources/src/test/resources/DateToDateTimeFunction.dmn
similarity index 67%
rename from 
kie-dmn/kie-dmn-core/src/test/resources/org/kie/dmn/core/DateToDateTimeFunction.dmn
rename to 
kie-dmn/kie-dmn-test-resources/src/test/resources/DateToDateTimeFunction.dmn
index b947dfd7f7..69986be5fa 100644
--- 
a/kie-dmn/kie-dmn-core/src/test/resources/org/kie/dmn/core/DateToDateTimeFunction.dmn
+++ 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/DateToDateTimeFunction.dmn
@@ -1,4 +1,11 @@
-<dmn:definitions xmlns:dmn="http://www.omg.org/spec/DMN/20180521/MODEL/"; 
xmlns="https://kiegroup.org/dmn/_A7F17D7B-F0AB-4C0B-B521-02EA26C2FBEE"; 
xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/"; 
xmlns:kie="http://www.drools.org/kie/dmn/1.2"; 
xmlns:dmndi="http://www.omg.org/spec/DMN/20180521/DMNDI/"; 
xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/"; 
xmlns:feel="http://www.omg.org/spec/DMN/20180521/FEEL/"; 
id="_14BDA5CA-C87F-448D-AF75-F976A9E0EF83" name="new-file" 
typeLanguage="http://www. [...]
+<dmn:definitions xmlns:dmn="http://www.omg.org/spec/DMN/20180521/MODEL/";
+                 
xmlns="https://kiegroup.org/dmn/_A7F17D7B-F0AB-4C0B-B521-02EA26C2FBEE";
+                 xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
+                 xmlns:kie="http://www.drools.org/kie/dmn/1.2";
+                 xmlns:dmndi="http://www.omg.org/spec/DMN/20180521/DMNDI/";
+                 xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
+                 xmlns:feel="http://www.omg.org/spec/DMN/20180521/FEEL/";
+                 id="_14BDA5CA-C87F-448D-AF75-F976A9E0EF83" name="new-file" 
typeLanguage="http://www.omg.org/spec/DMN/20180521/FEEL/"; 
namespace="https://kiegroup.org/dmn/_A7F17D7B-F0AB-4C0B-B521-02EA26C2FBEE";>
   <dmn:extensionElements/>
   <dmn:businessKnowledgeModel id="_80847A66-F03E-4B81-B406-0E3B8D177EC8" 
name="normal">
     <dmn:extensionElements/>
diff --git 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/ForLoopDatesEvaluate.dmn 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/ForLoopDatesEvaluate.dmn
new file mode 100644
index 0000000000..39b2fb4e16
--- /dev/null
+++ b/kie-dmn/kie-dmn-test-resources/src/test/resources/ForLoopDatesEvaluate.dmn
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+  <dmn:definitions 
xmlns="http://www.trisotech.com/dmn/definitions/_09E8A38A-AD24-4C3D-8307-029C0C4D373F";
+                   xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
+                   xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
+                   xmlns:dmndi="https://www.omg.org/spec/DMN/20230324/DMNDI/";
+                   xmlns:feel="https://www.omg.org/spec/DMN/20230324/FEEL/";
+                   xmlns:dmn="https://www.omg.org/spec/DMN/20230324/MODEL/";
+                   xmlns:kie="http://www.drools.org/kie/dmn/1.2";
+                   id="_A064B2A1-5F58-4C94-9B25-11A5C43E1749"
+                   name="For Loop Dates Evaluate"
+                   typeLanguage="http://www.omg.org/spec/DMN/20230324/FEEL/";
+                   
namespace="http://www.trisotech.com/dmn/definitions/_09E8A38A-AD24-4C3D-8307-029C0C4D373F";>
+  <dmn:extensionElements/>
+  <dmn:itemDefinition id="_C0D7B89C-EC6A-4F03-B397-90225007E578" name="Insert 
a name" isCollection="false">
+    <dmn:typeRef>Any</dmn:typeRef>
+  </dmn:itemDefinition>
+  <dmn:itemDefinition isCollection="true" label="tDates" name="tDates">
+    <dmn:typeRef>date</dmn:typeRef>
+  </dmn:itemDefinition>
+  <dmn:decision id="_4FC2D161-03F2-43D0-86EA-5653C13AFD52" name="forloopdates">
+    <dmn:extensionElements/>
+    <dmn:variable id="_4608E42A-977F-4786-AD2A-DE62804DECBA" 
name="forloopdates" typeRef="tDates"/>
+    <dmn:literalExpression id="_3BC54643-D567-4148-8931-7A5892E5863F">
+      <dmn:text>for x in @"2021-01-01"..@"2021-01-03" return x+1</dmn:text>
+    </dmn:literalExpression>
+  </dmn:decision>
+  <dmndi:DMNDI>
+    <dmndi:DMNDiagram id="_F5A87DF2-BE2E-4509-AD80-353EA8891F42" name="DRG">
+      <di:extension>
+        <kie:ComponentsWidthsExtension>
+          <kie:ComponentWidths 
dmnElementRef="_3BC54643-D567-4148-8931-7A5892E5863F">
+            <kie:width>338</kie:width>
+          </kie:ComponentWidths>
+        </kie:ComponentsWidthsExtension>
+      </di:extension>
+      <dmndi:DMNShape id="dmnshape-drg-_4FC2D161-03F2-43D0-86EA-5653C13AFD52" 
dmnElementRef="_4FC2D161-03F2-43D0-86EA-5653C13AFD52" isCollapsed="false">
+        <dmndi:DMNStyle>
+          <dmndi:FillColor red="255" green="255" blue="255"/>
+          <dmndi:StrokeColor red="0" green="0" blue="0"/>
+          <dmndi:FontColor red="0" green="0" blue="0"/>
+        </dmndi:DMNStyle>
+        <dc:Bounds x="386" y="114" width="100" height="50"/>
+        <dmndi:DMNLabel/>
+      </dmndi:DMNShape>
+    </dmndi:DMNDiagram>
+  </dmndi:DMNDI>
+</dmn:definitions>
\ No newline at end of file
diff --git 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/Imported_Model_Unamed.dmn 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/Imported_Model_Unamed.dmn
new file mode 100644
index 0000000000..2c900040e2
--- /dev/null
+++ 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/Imported_Model_Unamed.dmn
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dmn:definitions 
xmlns="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44";
+                 xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
+                 xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
+                 xmlns:dmndi="https://www.omg.org/spec/DMN/20230324/DMNDI/";
+                 xmlns:feel="https://www.omg.org/spec/DMN/20230324/FEEL/";
+                 xmlns:dmn="https://www.omg.org/spec/DMN/20230324/MODEL/";
+                 xmlns:tc="http://www.omg.org/spec/DMN/20160719/testcase";
+                 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
+                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+                 exporter="DMN Modeler"
+                 exporterVersion="6.0.3.201802231629"
+                 id="_f27bb64b-6fc7-4e1f-9848-11ba35e0df44"
+                 name="Imported Model"
+                 
namespace="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44";>
+  <dmn:extensionElements>
+  </dmn:extensionElements>
+  <dmn:itemDefinition id="_63824D3F-9173-446D-A940-6A7F0FA056BB" 
name="tPerson" isCollection="false">
+    <dmn:itemComponent id="_9bb0759c-b3c1-482f-87f5-c047dc65cef0" name="name">
+      <dmn:typeRef>string</dmn:typeRef>
+    </dmn:itemComponent>
+    <dmn:itemComponent id="_929acc15-101c-4e49-9b11-494fff411e50" name="age">
+      <dmn:typeRef>number</dmn:typeRef>
+    </dmn:itemComponent>
+  </dmn:itemDefinition>
+
+  <dmn:inputData id="_51190b90-924d-479b-872b-4c6f3486c2de" name="An Imported 
Person">
+    <dmn:variable id="_44a44de4-c0ab-408e-9ba9-983d8ec2f6c6"
+                       name="An Imported Person"
+                       typeRef="tPerson"/>
+  </dmn:inputData>
+  <dmn:decision id="_bf4a9628-15ae-4887-97f2-7099426cb61g" name="Remote 
Greeting">
+    <dmn:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c549"
+                       name="Remote Greeting"
+                       typeRef="string"/>
+    <dmn:informationRequirement>
+      <dmn:requiredInput href="#_51190b90-924d-479b-872b-4c6f3486c2de"/>
+    </dmn:informationRequirement>
+    <dmn:knowledgeRequirement>
+      <dmn:requiredKnowledge href="#_32543811-b499-4608-b784-6c6f294b1c58"/>
+    </dmn:knowledgeRequirement>
+    <dmn:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
+                                id="_d7e6836b-8491-487a-a653-5735daa85bf2"
+                                triso:unparsed="true">
+      <dmn:text>Say Hello( An Imported Person )</dmn:text>
+    </dmn:literalExpression>
+  </dmn:decision>
+
+  <dmn:businessKnowledgeModel id="_32543811-b499-4608-b784-6c6f294b1c58" 
name="Say Hello">
+    <dmn:variable id="_a8eb10e1-30e6-40d8-a564-a868f4e0af34"
+                       name="Say Hello"
+                       typeRef="string"/>
+    <dmn:encapsulatedLogic kind="FEEL" 
id="_acbb96c9-34a3-4628-8179-dfc5f583e695">
+      <dmn:formalParameter id="_4a626f74-2ecc-4759-b76a-04baec6b795d"
+                                name="Person"
+                                typeRef="tPerson"/>
+      <dmn:literalExpression id="_c173a894-3719-4d2f-a365-25850e217310">
+        <dmn:text>"Hello " + Person.name + "!"</dmn:text>
+      </dmn:literalExpression>
+    </dmn:encapsulatedLogic>
+  </dmn:businessKnowledgeModel>
+
+</dmn:definitions>
diff --git 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/Importing_EmptyNamed_Model.dmn
 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/Importing_EmptyNamed_Model.dmn
new file mode 100644
index 0000000000..ae2fa55bdc
--- /dev/null
+++ 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/Importing_EmptyNamed_Model.dmn
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dmn:definitions 
xmlns="http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";
+                      xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
+                      xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
+                      xmlns:dmndi="http://www.omg.org/spec/DMN/20180521/DMNDI/";
+                      xmlns:feel="https://www.omg.org/spec/DMN/20230324/FEEL/";
+                      xmlns:dmn="https://www.omg.org/spec/DMN/20230324/MODEL/";
+                      xmlns:tc="http://www.omg.org/spec/DMN/20160719/testcase";
+                      xmlns:xsd="http://www.w3.org/2001/XMLSchema";
+                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+                      exporter="DMN Modeler"
+                      exporterVersion="6.0.3.201802231629"
+                      id="_f79aa7a4-f9a3-410a-ac95-bea496edabgc"
+                      name="Importing empty-named Model"
+                      
namespace="http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";>
+   <dmn:extensionElements>
+  </dmn:extensionElements>
+   <dmn:import xmlns:drools="http://www.drools.org/kie/dmn/1.1";
+                    xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
+                    
importType="http://www.omg.org/spec/DMN1-2Alpha/20160929/MODEL";
+                    
namespace="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44";
+                    name=""
+                    drools:modelName="Imported Model"
+                    
triso:fileId="eyJmIjp7InNrdSI6IjEwMmM0MDQ3LTg5NjctNGI3ZS1hODgxLTBhY2ZkNWJjOTAwMiIsIm5hbWUiOiJJbXBvcnRlZCBNb2RlbCJ9fQ=="
+                    triso:fileName="Edson Tirelli/Imported Model"/>
+   <dmn:inputData id="_51190b90-924d-479b-872b-4c6f3486c2cb" name="A Person">
+      <dmn:variable id="_44a44de4-c0ab-408e-9ba9-983d8ec2f6b5"
+                         name="A Person"
+                         typeRef="tPerson"/>
+   </dmn:inputData>
+   <dmn:decision id="_bf4a9628-15ae-4887-97f2-7099426cb60f" name="Local 
Greeting">
+      <dmn:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c538"
+                         name="Local Greeting"
+                         typeRef="string"/>
+      <dmn:informationRequirement>
+         <dmn:requiredInput href="#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
+      </dmn:informationRequirement>
+     <dmn:knowledgeRequirement>
+       <dmn:requiredKnowledge href="#_42543811-b499-4608-b784-6c6f294b1c59"/>
+     </dmn:knowledgeRequirement>
+      <dmn:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
+                                  id="_d7e6836b-8491-487a-a653-5735daa85be1"
+                                  triso:unparsed="true">
+         <dmn:text>Local Hello( A Person )</dmn:text>
+      </dmn:literalExpression>
+   </dmn:decision>
+
+  <dmn:decision id="_bf4a9628-15ae-4887-97f2-7099426cb60g" name="Imported 
Greeting">
+    <dmn:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c539"
+                       name="Imported Greeting"
+                       typeRef="string"/>
+    <dmn:informationRequirement>
+      <dmn:requiredInput href="#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
+    </dmn:informationRequirement>
+    <dmn:knowledgeRequirement>
+      <dmn:requiredKnowledge href="#_32543811-b499-4608-b784-6c6f294b1c58"/>
+    </dmn:knowledgeRequirement>
+    <dmn:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
+                                id="_d7e6836b-8491-487a-a653-5735daa85be2"
+                                triso:unparsed="true">
+      <dmn:text>Say Hello( A Person )</dmn:text>
+    </dmn:literalExpression>
+  </dmn:decision>
+
+  <dmn:businessKnowledgeModel id="_42543811-b499-4608-b784-6c6f294b1c59" 
name="Local Hello">
+    <dmn:variable id="_a8eb10e1-30e6-40d8-a564-a868f4e0af45"
+                       name="Local Hello"
+                       typeRef="string"/>
+    <dmn:encapsulatedLogic kind="FEEL" 
id="_acbb96c9-34a3-4628-8179-dfc5f583e695">
+      <dmn:formalParameter id="_4a626f74-2ecc-4759-b76a-04baec6b795d"
+                                name="Person"
+                                typeRef="tPerson"/>
+      <dmn:literalExpression id="_c173a894-3719-4d2f-a365-25850e217310">
+        <dmn:text>"Local Hello " + Person.name + "!"</dmn:text>
+      </dmn:literalExpression>
+    </dmn:encapsulatedLogic>
+  </dmn:businessKnowledgeModel>
+
+</dmn:definitions>
diff --git 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/Importing_Named_Model.dmn 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/Importing_Named_Model.dmn
new file mode 100644
index 0000000000..cca7992ae5
--- /dev/null
+++ 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/Importing_Named_Model.dmn
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dmn:definitions 
xmlns="http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";
+                      xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
+                      xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
+                      xmlns:dmndi="http://www.omg.org/spec/DMN/20180521/DMNDI/";
+                      xmlns:feel="http://www.omg.org/spec/DMN/20180521/FEEL/";
+                      xmlns:dmn="http://www.omg.org/spec/DMN/20180521/MODEL/";
+                      xmlns:tc="http://www.omg.org/spec/DMN/20160719/testcase";
+                      xmlns:xsd="http://www.w3.org/2001/XMLSchema";
+                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+                      exporter="DMN Modeler"
+                      exporterVersion="6.0.3.201802231629"
+                      id="_f79aa7a4-f9a3-410a-ac95-bea496edabgc"
+                      name="Importing named Model"
+                      
namespace="http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";>
+   <dmn:extensionElements>
+  </dmn:extensionElements>
+   <dmn:import xmlns:drools="http://www.drools.org/kie/dmn/1.1";
+                    xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
+                    
importType="http://www.omg.org/spec/DMN1-2Alpha/20160929/MODEL";
+                    
namespace="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44";
+                    name="Imported Model"
+                    drools:modelName="Imported Model"
+                    
triso:fileId="eyJmIjp7InNrdSI6IjEwMmM0MDQ3LTg5NjctNGI3ZS1hODgxLTBhY2ZkNWJjOTAwMiIsIm5hbWUiOiJJbXBvcnRlZCBNb2RlbCJ9fQ=="
+                    triso:fileName="Edson Tirelli/Imported Model"/>
+   <dmn:inputData id="_51190b90-924d-479b-872b-4c6f3486c2cb" name="A Person">
+      <dmn:variable id="_44a44de4-c0ab-408e-9ba9-983d8ec2f6b5"
+                         name="A Person"
+                         typeRef="Imported Model.tPerson"/>
+   </dmn:inputData>
+   <dmn:decision id="_bf4a9628-15ae-4887-97f2-7099426cb60f" name="Local 
Greeting">
+      <dmn:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c538"
+                         name="Local Greeting"
+                         typeRef="string"/>
+      <dmn:informationRequirement>
+         <dmn:requiredInput href="#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
+      </dmn:informationRequirement>
+     <dmn:knowledgeRequirement>
+       <dmn:requiredKnowledge href="#_42543811-b499-4608-b784-6c6f294b1c59"/>
+     </dmn:knowledgeRequirement>
+      <dmn:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
+                                  id="_d7e6836b-8491-487a-a653-5735daa85be1"
+                                  triso:unparsed="true">
+         <dmn:text>Local Hello( A Person )</dmn:text>
+      </dmn:literalExpression>
+   </dmn:decision>
+
+  <dmn:decision id="_bf4a9628-15ae-4887-97f2-7099426cb60g" name="Imported 
Greeting">
+    <dmn:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c539"
+                       name="Imported Greeting"
+                       typeRef="string"/>
+    <dmn:informationRequirement>
+      <dmn:requiredInput href="#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
+    </dmn:informationRequirement>
+    <dmn:knowledgeRequirement>
+      <dmn:requiredKnowledge 
href="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44#_32543811-b499-4608-b784-6c6f294b1c58"/>
+    </dmn:knowledgeRequirement>
+    <dmn:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
+                                id="_d7e6836b-8491-487a-a653-5735daa85be2"
+                                triso:unparsed="true">
+      <dmn:text>Imported Model.Say Hello( A Person )</dmn:text>
+    </dmn:literalExpression>
+  </dmn:decision>
+
+  <dmn:businessKnowledgeModel id="_42543811-b499-4608-b784-6c6f294b1c59" 
name="Local Hello">
+    <dmn:variable id="_a8eb10e1-30e6-40d8-a564-a868f4e0af45"
+                       name="Local Hello"
+                       typeRef="string"/>
+    <dmn:encapsulatedLogic kind="FEEL" 
id="_acbb96c9-34a3-4628-8179-dfc5f583e695">
+      <dmn:formalParameter id="_4a626f74-2ecc-4759-b76a-04baec6b795d"
+                                name="Person"
+                                typeRef="Imported Model.tPerson"/>
+      <dmn:literalExpression id="_c173a894-3719-4d2f-a365-25850e217310">
+        <dmn:text>"Local Hello " + Person.name + "!"</dmn:text>
+      </dmn:literalExpression>
+    </dmn:encapsulatedLogic>
+  </dmn:businessKnowledgeModel>
+
+</dmn:definitions>
diff --git 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/Importing_OverridingEmptyNamed_Model.dmn
 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/Importing_OverridingEmptyNamed_Model.dmn
new file mode 100644
index 0000000000..c75a39b44a
--- /dev/null
+++ 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/Importing_OverridingEmptyNamed_Model.dmn
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dmn:definitions 
xmlns="http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";
+                      xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
+                      xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
+                      xmlns:dmndi="http://www.omg.org/spec/DMN/20180521/DMNDI/";
+                      xmlns:feel="https://www.omg.org/spec/DMN/20230324/FEEL/";
+                      xmlns:dmn="https://www.omg.org/spec/DMN/20230324/MODEL/";
+                      xmlns:tc="http://www.omg.org/spec/DMN/20160719/testcase";
+                      xmlns:xsd="http://www.w3.org/2001/XMLSchema";
+                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+                      exporter="DMN Modeler"
+                      exporterVersion="6.0.3.201802231629"
+                      id="_f79aa7a4-f9a3-410a-ac95-bea496edabgc"
+                      name="Importing empty-named Model"
+                      
namespace="http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";>
+   <dmn:extensionElements>
+  </dmn:extensionElements>
+   <dmn:import xmlns:drools="http://www.drools.org/kie/dmn/1.1";
+                    xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
+                    
importType="http://www.omg.org/spec/DMN1-2Alpha/20160929/MODEL";
+                    
namespace="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44";
+                    name=""
+                    drools:modelName="Imported Model"
+                    
triso:fileId="eyJmIjp7InNrdSI6IjEwMmM0MDQ3LTg5NjctNGI3ZS1hODgxLTBhY2ZkNWJjOTAwMiIsIm5hbWUiOiJJbXBvcnRlZCBNb2RlbCJ9fQ=="
+                    triso:fileName="Edson Tirelli/Imported Model"/>
+  <dmn:itemDefinition label="tPerson" name="tPerson">
+    <dmn:itemComponent id="_9bb0759c-b3c1-482f-87f5-c047dc65ceg1" name="name">
+      <dmn:typeRef>string</dmn:typeRef>
+    </dmn:itemComponent>
+    <dmn:itemComponent id="_929acc15-101c-4e49-9b11-494fff411e61" name="age">
+      <dmn:typeRef>number</dmn:typeRef>
+    </dmn:itemComponent>
+  </dmn:itemDefinition>
+  <dmn:inputData id="_51190b90-924d-479b-872b-4c6f3486c2cb" name="A Person">
+      <dmn:variable id="_44a44de4-c0ab-408e-9ba9-983d8ec2f6b5"
+                         name="A Person"
+                         typeRef="tPerson"/>
+   </dmn:inputData>
+
+   <dmn:decision id="_bf4a9628-15ae-4887-97f2-7099426cb60f" name="Local 
Greeting">
+      <dmn:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c538"
+                         name="Local Greeting"
+                         typeRef="string"/>
+      <dmn:informationRequirement>
+         <dmn:requiredInput href="#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
+      </dmn:informationRequirement>
+     <dmn:knowledgeRequirement>
+       <dmn:requiredKnowledge href="#_42543811-b499-4608-b784-6c6f294b1c59"/>
+     </dmn:knowledgeRequirement>
+      <dmn:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
+                                  id="_d7e6836b-8491-487a-a653-5735daa85be1"
+                                  triso:unparsed="true">
+         <dmn:text>Local Hello( A Person )</dmn:text>
+      </dmn:literalExpression>
+   </dmn:decision>
+
+  <dmn:decision id="_bf4a9628-15ae-4887-97f2-7099426cb60g" name="Imported 
Greeting">
+    <dmn:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c539"
+                       name="Imported Greeting"
+                       typeRef="string"/>
+    <dmn:informationRequirement>
+      <dmn:requiredInput href="#_51190b90-924d-479b-872b-4c6f3486c2cb"/>
+    </dmn:informationRequirement>
+    <dmn:knowledgeRequirement>
+      <dmn:requiredKnowledge href="#_32543811-b499-4608-b784-6c6f294b1c58"/>
+    </dmn:knowledgeRequirement>
+    <dmn:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
+                                id="_d7e6836b-8491-487a-a653-5735daa85be2"
+                                triso:unparsed="true">
+      <dmn:text>Say Hello( A Person )</dmn:text>
+    </dmn:literalExpression>
+  </dmn:decision>
+  <dmn:decisionService id="_70386614-9838-420b-a2ae-ff901ada63gc"
+                            name="Remote Greeting Service">
+    <dmn:description>Remote Greeting Service</dmn:description>
+    <dmn:variable name="Remote Greeting Hello" typeRef="string"/>
+    <dmn:outputDecision href="#_bf4a9628-15ae-4887-97f2-7099426cb60g"/>
+  </dmn:decisionService>
+
+  <dmn:businessKnowledgeModel id="_42543811-b499-4608-b784-6c6f294b1c59" 
name="Local Hello">
+    <dmn:variable id="_a8eb10e1-30e6-40d8-a564-a868f4e0af45"
+                       name="Local Hello"
+                       typeRef="string"/>
+    <dmn:encapsulatedLogic kind="FEEL" 
id="_acbb96c9-34a3-4628-8179-dfc5f583e695">
+      <dmn:formalParameter id="_4a626f74-2ecc-4759-b76a-04baec6b795d"
+                                name="Person"
+                                typeRef="tPerson"/>
+      <dmn:literalExpression id="_c173a894-3719-4d2f-a365-25850e217310">
+        <dmn:text>"Local Hello " + Person.name + "!"</dmn:text>
+      </dmn:literalExpression>
+    </dmn:encapsulatedLogic>
+  </dmn:businessKnowledgeModel>
+
+</dmn:definitions>
diff --git 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/ListReplaceEvaluate.dmn 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/ListReplaceEvaluate.dmn
new file mode 100644
index 0000000000..cb2141e1d6
--- /dev/null
+++ b/kie-dmn/kie-dmn-test-resources/src/test/resources/ListReplaceEvaluate.dmn
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+  <dmn:definitions 
xmlns="http://www.trisotech.com/dmn/definitions/_09E8A38A-AD24-4C3D-8307-029C0C4D373F";
+                   xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
+                   xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
+                   xmlns:dmndi="https://www.omg.org/spec/DMN/20230324/DMNDI/";
+                   xmlns:feel="https://www.omg.org/spec/DMN/20230324/FEEL/";
+                   xmlns:dmn="https://www.omg.org/spec/DMN/20230324/MODEL/";
+                   xmlns:kie="http://www.drools.org/kie/dmn/1.2";
+                   id="_A064B2A1-5F58-4C94-9B25-11A5C43E1749"
+                   name="List Replace Evaluate"
+                   typeLanguage="http://www.omg.org/spec/DMN/20230324/FEEL/";
+                   
namespace="http://www.trisotech.com/dmn/definitions/_09E8A38A-AD24-4C3D-8307-029C0C4D373F";>
+  <dmn:extensionElements/>
+  <dmn:itemDefinition id="_C0D7B89C-EC6A-4F03-B397-90225007E578" name="Insert 
a name" isCollection="false">
+    <dmn:typeRef>Any</dmn:typeRef>
+  </dmn:itemDefinition>
+  <dmn:itemDefinition isCollection="true" label="tNumbers" name="tNumbers">
+    <dmn:typeRef>number</dmn:typeRef>
+  </dmn:itemDefinition>
+  <dmn:decision id="_4FC2D161-03F2-43D0-86EA-5653C13AFD52" 
name="listreplacenumbers">
+    <dmn:extensionElements/>
+    <dmn:variable id="_4608E42A-977F-4786-AD2A-DE62804DECBA" 
name="listreplacenumbers" typeRef="tNumbers"/>
+    <dmn:literalExpression id="_3BC54643-D567-4148-8931-7A5892E5863F">
+      <dmn:text>list replace ( [2, 4, 7, 8], 3, 6)</dmn:text>
+    </dmn:literalExpression>
+  </dmn:decision>
+  <dmndi:DMNDI>
+    <dmndi:DMNDiagram id="_F5A87DF2-BE2E-4509-AD80-353EA8891F42" name="DRG">
+      <di:extension>
+        <kie:ComponentsWidthsExtension>
+          <kie:ComponentWidths 
dmnElementRef="_3BC54643-D567-4148-8931-7A5892E5863F">
+            <kie:width>338</kie:width>
+          </kie:ComponentWidths>
+        </kie:ComponentsWidthsExtension>
+      </di:extension>
+      <dmndi:DMNShape id="dmnshape-drg-_4FC2D161-03F2-43D0-86EA-5653C13AFD52" 
dmnElementRef="_4FC2D161-03F2-43D0-86EA-5653C13AFD52" isCollapsed="false">
+        <dmndi:DMNStyle>
+          <dmndi:FillColor red="255" green="255" blue="255"/>
+          <dmndi:StrokeColor red="0" green="0" blue="0"/>
+          <dmndi:FontColor red="0" green="0" blue="0"/>
+        </dmndi:DMNStyle>
+        <dc:Bounds x="386" y="114" width="100" height="50"/>
+        <dmndi:DMNLabel/>
+      </dmndi:DMNShape>
+    </dmndi:DMNDiagram>
+  </dmndi:DMNDI>
+</dmn:definitions>
\ No newline at end of file
diff --git 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/NegationOfDurationEvaluate.dmn
 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/NegationOfDurationEvaluate.dmn
new file mode 100644
index 0000000000..b7bdcce546
--- /dev/null
+++ 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/NegationOfDurationEvaluate.dmn
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+  <dmn:definitions 
xmlns="http://www.trisotech.com/dmn/definitions/_09E8A38A-AD24-4C3D-8307-029C0C4D373F";
+                   xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
+                   xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
+                   xmlns:dmndi="https://www.omg.org/spec/DMN/20230324/DMNDI/";
+                   xmlns:feel="https://www.omg.org/spec/DMN/20230324/FEEL/";
+                   xmlns:dmn="https://www.omg.org/spec/DMN/20230324/MODEL/";
+                   xmlns:kie="http://www.drools.org/kie/dmn/1.2";
+                   id="_A064B2A1-5F58-4C94-9B25-11A5C43E1749"
+                   name="Negation of Duration Evaluate"
+                   typeLanguage="http://www.omg.org/spec/DMN/20230324/FEEL/";
+                   
namespace="http://www.trisotech.com/dmn/definitions/_09E8A38A-AD24-4C3D-8307-029C0C4D373F";>
+  <dmn:extensionElements/>
+  <dmn:decision id="_4FC2D161-03F2-43D0-86EA-5653C13AFD52" 
name="durationnegation">
+    <dmn:extensionElements/>
+    <dmn:variable id="_4608E42A-977F-4786-AD2A-DE62804DECBA" 
name="durationnegation" typeRef="boolean"/>
+    <dmn:literalExpression id="_3BC54643-D567-4148-8931-7A5892E5863F">
+      <dmn:text>-duration("P1Y6M") = (duration("P1Y6M")*-1)</dmn:text>
+    </dmn:literalExpression>
+  </dmn:decision>
+  <dmndi:DMNDI>
+    <dmndi:DMNDiagram id="_F5A87DF2-BE2E-4509-AD80-353EA8891F42" name="DRG">
+      <di:extension>
+        <kie:ComponentsWidthsExtension>
+          <kie:ComponentWidths 
dmnElementRef="_3BC54643-D567-4148-8931-7A5892E5863F">
+            <kie:width>338</kie:width>
+          </kie:ComponentWidths>
+        </kie:ComponentsWidthsExtension>
+      </di:extension>
+      <dmndi:DMNShape id="dmnshape-drg-_4FC2D161-03F2-43D0-86EA-5653C13AFD52" 
dmnElementRef="_4FC2D161-03F2-43D0-86EA-5653C13AFD52" isCollapsed="false">
+        <dmndi:DMNStyle>
+          <dmndi:FillColor red="255" green="255" blue="255"/>
+          <dmndi:StrokeColor red="0" green="0" blue="0"/>
+          <dmndi:FontColor red="0" green="0" blue="0"/>
+        </dmndi:DMNStyle>
+        <dc:Bounds x="386" y="114" width="100" height="50"/>
+        <dmndi:DMNLabel/>
+      </dmndi:DMNShape>
+    </dmndi:DMNDiagram>
+  </dmndi:DMNDI>
+</dmn:definitions>
\ No newline at end of file
diff --git 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/TypeConstraintsChecks.dmn 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/TypeConstraintsChecks.dmn
index f2ece77a60..4de97f9564 100644
--- 
a/kie-dmn/kie-dmn-test-resources/src/test/resources/TypeConstraintsChecks.dmn
+++ 
b/kie-dmn/kie-dmn-test-resources/src/test/resources/TypeConstraintsChecks.dmn
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <semantic:definitions 
xmlns="http://www.trisotech.com/definitions/_238bd96d-47cd-4746-831b-504f3e77b442";
-                      xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
-                      xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
+                      xmlns:dc="http://www.omg.org/spec/DMN/20230324/DC/";
+                      xmlns:di="http://www.omg.org/spec/DMN/20230324/DI/";
                       
xmlns:dmndi="https://www.omg.org/spec/DMN/20230324/DMNDI/";
                       xmlns:feel="https://www.omg.org/spec/DMN/20230324/FEEL/";
                       
xmlns:semantic="https://www.omg.org/spec/DMN/20230324/MODEL/";
diff --git a/kie-dmn/kie-dmn-validation/pom.xml 
b/kie-dmn/kie-dmn-validation/pom.xml
index 1e19a9f2a2..838b319802 100644
--- a/kie-dmn/kie-dmn-validation/pom.xml
+++ b/kie-dmn/kie-dmn-validation/pom.xml
@@ -63,6 +63,13 @@
         <optional>true</optional>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+        <groupId>org.kie</groupId>
+        <artifactId>kie-dmn-test-resources</artifactId>
+        <version>${project.version}</version>
+        <classifier>tests</classifier>
+        <scope>test</scope>
+      </dependency>
     </dependencies>
   </dependencyManagement>
 
@@ -133,6 +140,12 @@
       <scope>provided</scope>
     </dependency>
 
+    <dependency>
+      <groupId>org.kie</groupId>
+      <artifactId>kie-dmn-test-resources</artifactId>
+      <classifier>tests</classifier>
+      <scope>test</scope>
+    </dependency>
     <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
diff --git 
a/kie-dmn/kie-dmn-validation/src/main/java/org/kie/dmn/validation/DMNValidatorImpl.java
 
b/kie-dmn/kie-dmn-validation/src/main/java/org/kie/dmn/validation/DMNValidatorImpl.java
index 2f7cfb291e..9c7bcbb673 100644
--- 
a/kie-dmn/kie-dmn-validation/src/main/java/org/kie/dmn/validation/DMNValidatorImpl.java
+++ 
b/kie-dmn/kie-dmn-validation/src/main/java/org/kie/dmn/validation/DMNValidatorImpl.java
@@ -73,6 +73,7 @@ import org.kie.dmn.feel.util.ClassLoaderUtil;
 import org.kie.dmn.model.api.DMNModelInstrumentedBase;
 import org.kie.dmn.model.api.DecisionService;
 import org.kie.dmn.model.api.Definitions;
+import org.kie.dmn.model.api.Import;
 import org.kie.dmn.validation.dtanalysis.InternalDMNDTAnalyser;
 import org.kie.dmn.validation.dtanalysis.InternalDMNDTAnalyserFactory;
 import org.kie.dmn.validation.dtanalysis.model.DTAnalysis;
@@ -84,6 +85,7 @@ import org.slf4j.LoggerFactory;
 import org.xml.sax.SAXException;
 
 import static java.util.stream.Collectors.toList;
+import static org.kie.dmn.core.compiler.UnnamedImportUtils.mergeDefinitions;
 import static 
org.kie.dmn.validation.DMNValidator.Validation.ANALYZE_DECISION_TABLE;
 import static 
org.kie.dmn.validation.DMNValidator.Validation.VALIDATE_COMPILATION;
 import static org.kie.dmn.validation.DMNValidator.Validation.VALIDATE_MODEL;
@@ -546,7 +548,8 @@ public class DMNValidatorImpl implements DMNValidator {
             Source s = new StreamSource(new StringReader(xml));
             validateSchema(s, usingSchema);
         } catch (Exception e) {
-            problems.add(new DMNMessageImpl(DMNMessage.Severity.ERROR, 
MsgUtil.createMessage(Msg.FAILED_XML_VALIDATION, e.getMessage()), 
Msg.FAILED_XML_VALIDATION.getType(), null, e).withPath(path));
+            String errorMessage = String.format("%s - %s", path, 
e.getMessage());
+            problems.add(new DMNMessageImpl(DMNMessage.Severity.ERROR, 
MsgUtil.createMessage(Msg.FAILED_XML_VALIDATION, errorMessage), 
Msg.FAILED_XML_VALIDATION.getType(), null, e).withPath(path));
         }
         return problems;
     }
@@ -580,6 +583,19 @@ public class DMNValidatorImpl implements DMNValidator {
     
     private List<DMNMessage> validateModel(DMNResource mainModel, 
List<DMNResource> otherModels) {
         Definitions mainDefinitions = mainModel.getDefinitions();
+        List<String> unnamedImports = mainDefinitions.getImport().stream()
+                .filter(anImport -> anImport.getName() == null || 
anImport.getName().isEmpty())
+                .map(Import::getNamespace)
+                .toList();
+        List<Definitions> otherModelsDefinitions = new ArrayList<>();
+        otherModels.forEach(dmnResource -> {
+            Definitions other = dmnResource.getDefinitions();
+            if 
(unnamedImports.contains(dmnResource.getModelID().getNamespaceURI())) {
+                mergeDefinitions(mainDefinitions, other);
+            }
+            otherModelsDefinitions.add(other);
+        });
+
         StatelessKieSession kieSession = mainDefinitions instanceof 
org.kie.dmn.model.v1_1.KieDMNModelInstrumentedBase ? 
kb11.newStatelessKieSession() : kb12.newStatelessKieSession();
         MessageReporter reporter = new MessageReporter(mainModel);
         kieSession.setGlobal( "reporter", reporter );
@@ -589,7 +605,7 @@ public class DMNValidatorImpl implements DMNValidator {
                        .filter(d -> !(d instanceof DecisionService &&
                                
Boolean.parseBoolean(d.getAdditionalAttributes().get(new 
QName("http://www.trisotech.com/2015/triso/modeling";, 
"dynamicDecisionService")))))
                        .collect(toList());
-        List<Definitions> otherModelsDefinitions = 
otherModels.stream().map(DMNResource::getDefinitions).collect(Collectors.toList());
+
         BatchExecutionCommand batch = 
CommandFactory.newBatchExecution(Arrays.asList(CommandFactory.newInsertElements(dmnModelElements,
 "DEFAULT", false, "DEFAULT"),
                                                                                
      CommandFactory.newInsertElements(otherModelsDefinitions, "DMNImports", 
false, "DMNImports")));
         kieSession.execute(batch);
diff --git 
a/kie-dmn/kie-dmn-validation/src/main/resources/org/kie/dmn/validation/DMNv1x/dmn-validation-rules.drl
 
b/kie-dmn/kie-dmn-validation/src/main/resources/org/kie/dmn/validation/DMNv1x/dmn-validation-rules.drl
index 5d584f588b..565c916b21 100644
--- 
a/kie-dmn/kie-dmn-validation/src/main/resources/org/kie/dmn/validation/DMNv1x/dmn-validation-rules.drl
+++ 
b/kie-dmn/kie-dmn-validation/src/main/resources/org/kie/dmn/validation/DMNv1x/dmn-validation-rules.drl
@@ -68,6 +68,17 @@ then
                      $b.getParentDRDElement().getIdentifierString() );
 end
 
+rule NAME_EMPTY
+when
+    $ne : NamedElement( !(this instanceof Import),
+                        !FEELParser.isVariableNameEmpty( name ) )
+then
+    java.util.List<FEELEvent> errors = FEELParser.checkVariableNameEmpty( 
$ne.getName() );
+    if ( ! errors.isEmpty() ) {
+        reporter.report( DMNMessage.Severity.ERROR,  $ne , Msg.INVALID_NAME, 
$ne.getName(), errors.get( 0 ).getMessage() );
+    }
+end
+
 rule NAME_INVALID
 when
     $ne : NamedElement( parent != null,
diff --git 
a/kie-dmn/kie-dmn-validation/src/test/java/org/kie/dmn/validation/ValidatorTest.java
 
b/kie-dmn/kie-dmn-validation/src/test/java/org/kie/dmn/validation/ValidatorTest.java
index c3ce093772..f19151aa40 100644
--- 
a/kie-dmn/kie-dmn-validation/src/test/java/org/kie/dmn/validation/ValidatorTest.java
+++ 
b/kie-dmn/kie-dmn-validation/src/test/java/org/kie/dmn/validation/ValidatorTest.java
@@ -138,6 +138,13 @@ public class ValidatorTest extends AbstractValidatorTest {
         assertThat(validate.stream().anyMatch(p -> 
p.getMessageType().equals(DMNMessageType.INVALID_NAME) && 
p.getSourceId().equals("_5e43b55c-888e-443c-b1b9-80e4aa6746bd"))).isTrue();
         assertThat(validate.stream().anyMatch(p -> 
p.getMessageType().equals(DMNMessageType.INVALID_NAME) && 
p.getSourceId().equals("_b1e4588e-9ce1-4474-8e4e-48dbcdb7524b"))).isTrue();
     }
+
+    @Test
+    public void testNAME_EMPTY_empty_model_name() {
+        List<DMNMessage> validate = validator.validate( getReader( 
"EmptyModelName.dmn" ), VALIDATE_SCHEMA, VALIDATE_MODEL, VALIDATE_COMPILATION);
+        
assertThat(validate).withFailMessage(ValidatorUtil.formatMessages(validate)).hasSize(1);
+        assertThat(validate.stream().anyMatch(p -> 
p.getMessageType().equals(DMNMessageType.INVALID_NAME) && 
p.getSourceId().equals("_f27bb64b-6fc7-4e1f-9848-11ba35e0df44"))).isTrue();
+    }
     
     @Test
     public void testDRGELEM_NOT_UNIQUE() {
diff --git 
a/kie-dmn/kie-dmn-validation/src/test/java/org/kie/dmn/validation/v1_5/DMN15ValidationsTest.java
 
b/kie-dmn/kie-dmn-validation/src/test/java/org/kie/dmn/validation/v1_5/DMN15ValidationsTest.java
new file mode 100644
index 0000000000..90326b19a9
--- /dev/null
+++ 
b/kie-dmn/kie-dmn-validation/src/test/java/org/kie/dmn/validation/v1_5/DMN15ValidationsTest.java
@@ -0,0 +1,162 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.kie.dmn.validation.v1_5;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.drools.io.ClassPathResource;
+import org.junit.Test;
+import org.kie.api.io.Resource;
+import org.kie.dmn.api.core.DMNContext;
+import org.kie.dmn.api.core.DMNMessage;
+import org.kie.dmn.api.core.DMNModel;
+import org.kie.dmn.api.core.DMNResult;
+import org.kie.dmn.api.core.DMNRuntime;
+import org.kie.dmn.core.compiler.profiles.ExtendedDMNProfile;
+import org.kie.dmn.core.util.DMNRuntimeUtil;
+import org.kie.dmn.validation.DMNValidator;
+import org.kie.dmn.validation.DMNValidatorFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.kie.dmn.core.util.DynamicTypeUtils.entry;
+import static org.kie.dmn.core.util.DynamicTypeUtils.prototype;
+
+public class DMN15ValidationsTest {
+
+    public static final Logger LOG = 
LoggerFactory.getLogger(DMN15ValidationsTest.class);
+
+    static final DMNValidator validator = 
DMNValidatorFactory.newValidator(List.of(new ExtendedDMNProfile()));
+    static final DMNValidator.ValidatorBuilder validatorBuilder = 
validator.validateUsing(DMNValidator.Validation.VALIDATE_SCHEMA, 
DMNValidator.Validation.VALIDATE_MODEL);
+
+
+    @Test
+    public void overridingUnnamedImportValidation() {
+        String importedModelFileName = "Imported_Model_Unamed.dmn";
+        String importingModelFileName = 
"Importing_OverridingEmptyNamed_Model.dmn";
+        String modelName = "Importing empty-named Model";
+        String modelNamespace = 
"http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";;
+        validate(importedModelFileName, importingModelFileName);
+        Map<String, Object> inputData = Map.of("A Person", 
prototype(entry("name", "Hugh"), entry("age", 32)));
+        evaluate(modelNamespace, modelName, importingModelFileName, inputData, 
importedModelFileName);
+    }
+
+    @Test
+    public void namedImportValidation() {
+        String importedModelFileName = "Imported_Model_Unamed.dmn";
+        String importingModelFileName = "Importing_Named_Model.dmn";
+        String modelName = "Importing named Model";
+        String modelNamespace = 
"http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";;
+        validate(importedModelFileName, importingModelFileName);
+        Map<String, Object> inputData = Map.of("A Person", 
prototype(entry("name", "Hugh"), entry("age", 32)));
+        evaluate(modelNamespace, modelName, importingModelFileName, inputData, 
importedModelFileName);
+    }
+
+    @Test
+    public void unnamedImportValidation() {
+        String importedModelFileName = "Imported_Model_Unamed.dmn";
+        String importingModelFileName = "Importing_EmptyNamed_Model.dmn";
+        String modelName = "Importing empty-named Model";
+        String modelNamespace = 
"http://www.trisotech.com/dmn/definitions/_f79aa7a4-f9a3-410a-ac95-bea496edabgc";;
+        validate(importedModelFileName, importingModelFileName);
+        Map<String, Object> inputData = Map.of("A Person", 
prototype(entry("name", "Hugh"), entry("age", 32)));
+        evaluate(modelNamespace, modelName, importingModelFileName, inputData, 
importedModelFileName);
+    }
+
+    @Test
+    public void forLoopDatesEvaluateValidation() {
+        String modelFileName = "ForLoopDatesEvaluate.dmn";
+        String modelName = "For Loop Dates Evaluate";
+        String modelNamespace = 
"http://www.trisotech.com/dmn/definitions/_09E8A38A-AD24-4C3D-8307-029C0C4D373F";;
+        validate(modelFileName);
+        evaluate(modelNamespace, modelName, modelFileName, 
Collections.EMPTY_MAP);
+    }
+
+    @Test
+    public void listReplaceEvaluateValidation() {
+        String modelFileName = "ListReplaceEvaluate.dmn";
+        String modelName = "List Replace Evaluate";
+        String modelNamespace = 
"http://www.trisotech.com/dmn/definitions/_09E8A38A-AD24-4C3D-8307-029C0C4D373F";;
+        validate(modelFileName);
+        evaluate(modelNamespace, modelName, modelFileName, 
Collections.EMPTY_MAP);
+    }
+
+    @Test
+    public void negationOfDurationEvaluateValidation() {
+        String modelFileName = "NegationOfDurationEvaluate.dmn";
+        String modelName = "Negation of Duration Evaluate";
+        String modelNamespace = 
"http://www.trisotech.com/dmn/definitions/_09E8A38A-AD24-4C3D-8307-029C0C4D373F";;
+        validate(modelFileName);
+        evaluate(modelNamespace, modelName, modelFileName, 
Collections.EMPTY_MAP);
+    }
+
+    @Test
+    public void dateToDateTimeFunctionValidation() {
+        String modelFileName = "DateToDateTimeFunction.dmn";
+        String modelName = "new-file";
+        String modelNamespace = 
"https://kiegroup.org/dmn/_A7F17D7B-F0AB-4C0B-B521-02EA26C2FBEE";;
+        validate(modelFileName);
+        evaluate(modelNamespace, modelName, modelFileName, 
Collections.EMPTY_MAP);
+    }
+
+    @Test
+    public void typeConstraintsChecksValidation() {
+        String modelFileName = "TypeConstraintsChecks.dmn";
+        String modelName = "TypeConstraintsChecks";
+        String modelNamespace = 
"http://www.trisotech.com/definitions/_238bd96d-47cd-4746-831b-504f3e77b442";;
+        validate(modelFileName);
+        Map<String, Object> inputData = Map.of("p1", prototype(entry("Name", 
"P1"), entry("Interests", Collections.singletonList("Golf"))));
+        evaluate(modelNamespace, modelName, modelFileName, inputData);
+    }
+
+    private void validate(String modelFileName, String... otherFileNames) {
+        List<String> allModelsFileNames = new ArrayList<>();
+        allModelsFileNames.add(modelFileName);
+        allModelsFileNames.addAll(List.of(otherFileNames));
+        Resource[] resources = allModelsFileNames.stream()
+                .map(fileName -> new ClassPathResource(fileName,
+                                                       this.getClass()))
+                .toArray(value -> new Resource[allModelsFileNames.size()]);
+        List<DMNMessage> dmnMessages = validatorBuilder.theseModels(resources);
+        assertNotNull(dmnMessages);
+        dmnMessages.forEach(dmnMessage -> LOG.error(dmnMessage.toString()));
+        assertTrue(dmnMessages.isEmpty());
+    }
+
+    private void evaluate(String modelNamespace, String modelName, String 
modelFileName,
+                          Map<String, Object> inputData, String... 
otherFileNames) {
+        final DMNRuntime runtime = 
DMNRuntimeUtil.createRuntimeWithAdditionalResources(modelFileName,
+                                                                               
        this.getClass(),
+                                                                               
        otherFileNames);
+        final DMNModel dmnModel = runtime.getModel(modelNamespace,
+                                                   modelName);
+        assertThat(dmnModel).isNotNull();
+        
assertThat(dmnModel.hasErrors()).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).isFalse();
+        final DMNContext ctx = runtime.newContext();
+        inputData.forEach(ctx::set);
+        DMNResult toReturn = runtime.evaluateAll(dmnModel, ctx);
+        
assertThat(toReturn.hasErrors()).as(DMNRuntimeUtil.formatMessages(toReturn.getMessages())).isFalse();
+    }
+}
diff --git 
a/kie-dmn/kie-dmn-validation/src/test/resources/org/kie/dmn/validation/EmptyModelName.dmn
 
b/kie-dmn/kie-dmn-validation/src/test/resources/org/kie/dmn/validation/EmptyModelName.dmn
new file mode 100644
index 0000000000..69a239b267
--- /dev/null
+++ 
b/kie-dmn/kie-dmn-validation/src/test/resources/org/kie/dmn/validation/EmptyModelName.dmn
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dmn:definitions 
xmlns="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44";
+                 xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/";
+                 xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/";
+                 xmlns:dmndi="https://www.omg.org/spec/DMN/20230324/DMNDI/";
+                 xmlns:feel="https://www.omg.org/spec/DMN/20230324/FEEL/";
+                 xmlns:dmn="https://www.omg.org/spec/DMN/20230324/MODEL/";
+                 xmlns:tc="http://www.omg.org/spec/DMN/20160719/testcase";
+                 xmlns:xsd="http://www.w3.org/2001/XMLSchema";
+                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+                 exporter="DMN Modeler"
+                 exporterVersion="6.0.3.201802231629"
+                 id="_f27bb64b-6fc7-4e1f-9848-11ba35e0df44"
+                 name=""
+                 
namespace="http://www.trisotech.com/dmn/definitions/_f27bb64b-6fc7-4e1f-9848-11ba35e0df44";>
+  <dmn:extensionElements>
+  </dmn:extensionElements>
+  <dmn:itemDefinition id="_63824D3F-9173-446D-A940-6A7F0FA056BB" 
name="tPerson" isCollection="false">
+    <dmn:itemComponent id="_9bb0759c-b3c1-482f-87f5-c047dc65cef0" name="name">
+      <dmn:typeRef>string</dmn:typeRef>
+    </dmn:itemComponent>
+    <dmn:itemComponent id="_929acc15-101c-4e49-9b11-494fff411e50" name="age">
+      <dmn:typeRef>number</dmn:typeRef>
+    </dmn:itemComponent>
+  </dmn:itemDefinition>
+
+  <dmn:inputData id="_51190b90-924d-479b-872b-4c6f3486c2de" name="An Imported 
Person">
+    <dmn:variable id="_44a44de4-c0ab-408e-9ba9-983d8ec2f6c6"
+                  name="An Imported Person"
+                  typeRef="tPerson"/>
+  </dmn:inputData>
+  <dmn:decision id="_bf4a9628-15ae-4887-97f2-7099426cb61g" name="Remote 
Greeting">
+    <dmn:variable id="_ecc6e0bb-a0af-4e99-aac6-5b8bed09c549"
+                  name="Remote Greeting"
+                  typeRef="string"/>
+    <dmn:informationRequirement>
+      <dmn:requiredInput href="#_51190b90-924d-479b-872b-4c6f3486c2de"/>
+    </dmn:informationRequirement>
+    <dmn:knowledgeRequirement>
+      <dmn:requiredKnowledge href="#_32543811-b499-4608-b784-6c6f294b1c58"/>
+    </dmn:knowledgeRequirement>
+    <dmn:literalExpression 
xmlns:triso="http://www.trisotech.com/2015/triso/modeling";
+                           id="_d7e6836b-8491-487a-a653-5735daa85bf2"
+                           triso:unparsed="true">
+      <dmn:text>Say Hello( An Imported Person )</dmn:text>
+    </dmn:literalExpression>
+  </dmn:decision>
+
+  <dmn:businessKnowledgeModel id="_32543811-b499-4608-b784-6c6f294b1c58" 
name="Say Hello">
+    <dmn:variable id="_a8eb10e1-30e6-40d8-a564-a868f4e0af34"
+                  name="Say Hello"
+                  typeRef="string"/>
+    <dmn:encapsulatedLogic kind="FEEL" 
id="_acbb96c9-34a3-4628-8179-dfc5f583e695">
+      <dmn:formalParameter id="_4a626f74-2ecc-4759-b76a-04baec6b795d"
+                           name="Person"
+                           typeRef="tPerson"/>
+      <dmn:literalExpression id="_c173a894-3719-4d2f-a365-25850e217310">
+        <dmn:text>"Hello " + Person.name + "!"</dmn:text>
+      </dmn:literalExpression>
+    </dmn:encapsulatedLogic>
+  </dmn:businessKnowledgeModel>
+
+</dmn:definitions>
diff --git a/kie-dmn/pom.xml b/kie-dmn/pom.xml
index 1b7c2de291..b875a0445d 100644
--- a/kie-dmn/pom.xml
+++ b/kie-dmn/pom.xml
@@ -39,6 +39,7 @@
   <modules>
     <module>kie-dmn-api</module>
     <module>kie-dmn-model</module>
+    <module>kie-dmn-test-resources</module>
     <module>kie-dmn-feel</module>
     <module>kie-dmn-core</module>
     <module>kie-dmn-backend</module>
@@ -54,7 +55,6 @@
     <module>kie-dmn-core-jsr223-jq</module>
     <module>kie-dmn-core-jsr223</module>
     <module>kie-dmn-ruleset2dmn-parent</module>
-    <module>kie-dmn-test-resources</module>
   </modules>
 
   <dependencyManagement>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to