diff --git a/lib/config-template.php b/lib/config-template.php
index 8a47e403376782b1f3c9e6d03326fae7754583aa..f2cd131bd6778bf06447bbc5bc4e7f2d60a24520 100644
--- a/lib/config-template.php
+++ b/lib/config-template.php
@@ -17,8 +17,7 @@ define('DB_HOST','localhost');
 define('DB_DATABASE','edugain');
 
 // Validator locations
-define('VALIDATOR_SCRIPTS', '/srv/edugain.config/validator_scripts');
-define('VALIDATOR_SCHEMAS_LOG', '/srv/edugain.config/validator_scripts/logs');
+define('VALIDATOR_REQ','http://localhost:5000/validate?r=');
 define('VALIDATOR_TMP', '/srv/edugain.config/mds/tmp');
 
 // details of simpleSAMLphp for management login
diff --git a/lib/validatorClass.php b/lib/validatorClass.php
index bd5abb3caf229f14a9a844ff64e2ca53237e3507..b9bc1ddb2556c155adf8a5001f4b4276e7043c4d 100644
--- a/lib/validatorClass.php
+++ b/lib/validatorClass.php
@@ -1,13 +1,11 @@
 <?php
 class Validator {
     public $params;
-    private $validatordir;
     private $edugain;
     private $logger;
 
     public function __construct($params = array()) {
           
-        $this->validatordir = VALIDATOR_SCRIPTS;
         if (empty($params)) {
         $this->params = array(
                         'url' => '',
@@ -280,84 +278,35 @@ class Validator {
     public function checkmetadata() {
         $params = $this->params;
         $schres = 0;
-        $certidx = -1;
+        $certidx = 0;
         if ( ($params['validate'] || $params['entities']) && ($params['url'] != "") ) {
         $ret = $this->get_data();
         if ($ret[0] == 304) {
-            $result = array();
-            $result['global']['required']['passed'] = array();
-            $result['global']['required']['failed'] = array();
-            $result['global']['required']['code'][] = 304;
-            $result['global']['recommended']['passed'] = array();
-            $result['global']['recommended']['failed'] = array();
-            $result['entities'] = array();
-            $result['sources'] = $params['url'];
-            $f = fopen($this->params['filename'], 'w');
-            fputs($f, json_encode($result));
-            fclose($f);
             $res = $schres = 304;
+            $printres = "<div class='noticeerr'>URL fetching failed<br></div>";
         } elseif ($ret[0] > 0) {
-            $result = array();
-            $result['global']['required']['passed'] = array();
-            $result['global']['required']['failed'][] = $ret[1];
-            $result['global']['required']['code'][] = 14;
-            $result['global']['recommended']['passed'] = array();
-            $result['global']['recommended']['failed'] = array();
-            $result['entities'] = array();
-            $result['sources'] = $url;
-            $f = fopen($params['filename'], 'w');
-            fputs($f, json_encode($result));
-            fclose($f);
             $res = $schres = 14;
-            $aggres = 0;
-            $pyffres = 0;
+            $printres = "<div class='noticeerr'>URL fetching failed<br>" . $ret[1] . '</div>';
         } elseif ($ret[0] == 0) {
             $f = fopen($params['filename'].'-metadata.xml', 'w');
             fputs($f, $ret[1]);
             fclose($f);
-            $aggres = 0;
-            $pyffres = 0;
-            $args = "\"".$params['url']."\" \"".$params['regauth']."\" ".$params['filename']." \"".$params['langsetting']."\" ".$params['validate']." ".$params['onlyone']." ".$params['weakkeys']." ".$params['xmlout']." ".$params['edugain']." ".base64_encode($params['fedname']);
-            system($this->validatordir."/schemas.py $args",$schres);
-            if ($params['onlyone'] && !$schres) {
-                $params['onlyone'] = 0;
-                unset($_REQUEST['oneentity']);
+            $this->params['feed'] = substr($this->params['filename'], strrpos($this->params['filename'], '/')+1);
+            $this->params['fedname'] = base64_encode($this->params['fedname']);
+            $f = fopen($this->params['filename'].'-params.json', 'w');
+            fputs($f, json_encode($this->params));
+	    fclose($f);
+            $ch = curl_init();
+            curl_setopt($ch, CURLOPT_URL, VALIDATOR_REQ . $this->params['feed']);
+            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+            $response = curl_exec($ch);
+            if (file_exists($params['filename'] . '-result')) {
+              $printres = file_get_contents($params['filename'] . '-result');
+            } else {
+              $printres = '<b>A problem occured.</b><p>Please let us know: <a href="mailto:edugain-ot@lists.geant.org">edugain-ot@lists.geant.org</a>';
+              $printres = '<p>'.$params['filename'] . '-result';
             }
-            if ($params['validate'] && !$params['onlyone'] && ($schres<2)) {
-                if ($params['edugain'] || $params['gobetween'])  $fromdb = 1;
-                else $fromdb = 0;
-                system($this->validatordir."/aggregator.py ".$params['filename']." $schres $fromdb >".$params['filename']."-aggregator.log 2>&1",$aggres);
-                $certidx = trim(file_get_contents($params['filename']."-aggregator.log"));
-                if ($certidx == '') {
-                  $certidx = 0;
-                }
-                system($this->validatordir."/mda.sh --verbose ".$params['filename'].".xml main > ".$params['filename']."-mda.log 2>&1", $res);
-                $searchfor = "Unable to validate signature";
-                $matches = array();
-                $handle = @fopen($params['filename']."-mda.log", "r");
-                if ($handle) {
-                  while (!feof($handle)) {
-                    $buffer = fgets($handle);
-                    if (strpos($buffer, $searchfor) !== FALSE) {
-                      $matches[] = $buffer;
-                      break;
-                    }
-                  }
-                  fclose($handle);
-                }
-                if (count($matches)) {
-                  system($this->validatordir."/aggregator.py ".$params['filename']." $schres $fromdb 1 >".$params['filename']."-aggregator2.log 2>&1",$aggres);
-                  system($this->validatordir."/mda.sh --verbose ".$params['filename']."_1.xml main > ".$params['filename']."-mda.log 2>&1", $res);
-                  $certidx = trim(file_get_contents($params['filename']."-aggregator2.log"));
-                  if ($certidx == '') {
-                    $certidx = 1;
-                  }
-                }
-                system($this->validatordir."/pyff.sh ".$params['filename'].'>'.$params['filename']."-pyff.log 2>&1", $pyffres);
-            } else $res = $schres;
         }
-        $args = $params['filename']." \"".$params['langsetting']."\" ".$params['validate']." ".$params['onlyone']." ".$params['xmlout']." ".$params['gobetween']." ".$params['edugain'];
-        $printres = shell_exec($this->validatordir."/printresults.py $args $res $schres $aggres $pyffres $certidx");
     } else
         $printres = "<span class='noticeerr'>URL fetching failed ".$ret[1]."</span>";
     if (!$params['gobetween']) {