diff --git a/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ServiceArtifactInfo.java b/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ServiceArtifactInfo.java
index f763c31..5b15217 100644
--- a/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ServiceArtifactInfo.java
+++ b/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ServiceArtifactInfo.java
@@ -41,6 +41,7 @@
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.minilang.MiniLangException;
 import org.ofbiz.minilang.SimpleMethod;
+import org.ofbiz.minilang.artifact.ArtifactInfoContext;
 import org.ofbiz.service.ModelParam;
 import org.ofbiz.service.ModelService;
 import org.ofbiz.service.eca.ServiceEcaRule;
@@ -93,8 +94,9 @@
                 return;
             }
 
-            Set<String> allEntityNameSet = simpleMethodToCall.getAllEntityNamesUsed();
-            populateEntitiesFromNameSet(allEntityNameSet);
+            ArtifactInfoContext aic = new ArtifactInfoContext();
+            simpleMethodToCall.gatherArtifactInfo(aic);
+            populateEntitiesFromNameSet(aic.getEntityNames());
         } else if ("java".equals(this.modelService.engineName)) {
             String fullClassPathAndFile = UtilJavaParse.findRealPathAndFileForClass(this.modelService.location);
             if (fullClassPathAndFile != null) {
@@ -153,8 +155,9 @@
                 return;
             }
 
-            Set<String> allServiceNameSet = simpleMethodToCall.getAllServiceNamesCalled();
-            populateServicesFromNameSet(allServiceNameSet);
+            ArtifactInfoContext aic = new ArtifactInfoContext();
+            simpleMethodToCall.gatherArtifactInfo(aic);
+            populateServicesFromNameSet(aic.getServiceNames());
         } else if ("java".equals(this.modelService.engineName)) {
             String fullClassPathAndFile = UtilJavaParse.findRealPathAndFileForClass(this.modelService.location);
             if (fullClassPathAndFile != null) {
