private function installParsers(IngestParsersEvent $event)
    {
        $fs = new Filesystem();
        $finder = new Finder();

        try {
            $pluginsDir = __DIR__ . '/../../../';
            $namespaces = array();

            $iterator = $finder
                ->ignoreUnreadableDirs()
                ->files()
                ->name('*Parser.php')
                ->notName('AbstractParser.php')
                ->in(__DIR__  . '/../Parsers/');

            try {
                $iterator = $iterator
                    ->in($pluginsDir . '*/*/Parsers/IngestAdapters/');
            } catch(\Exception $e) {
                // Catch exception if no such directory exists
            }

            foreach ($iterator as $file) {
                $classNamespace = str_replace(realpath($pluginsDir), '', substr($file->getRealPath(), 0, -4));
                $namespace = str_replace('/', '\\', $classNamespace);
                $namespaces[] = (string) $namespace;

                $parserName = substr($file->getFilename(), 0, -4);

                $parser = $this->em->getRepository('Newscoop\IngestPluginBundle\Entity\Parser')
                    ->findOneByNamespace($namespace);

                $event->registerParser($parserName, array(
                    'class' => $namespace,
                ));

                if (!$parser) {
                    $parser = new Parser();
                }
                $parser
                    ->setName($namespace::getParserName())
                    ->setDescription($namespace::getParserDescription())
                    ->setDomain($namespace::getParserDomain())
                    ->setRequiresUrl($namespace::getRequiresUrl())
                    ->setSectionHandling($namespace::getHandlesSection())
                    ->setNamespace($namespace);

                $this->em->persist($parser);
            }

            // Remove parser which we didn't find anymore
            $parsersToRemove = $this->em
                ->createQuery('
                    DELETE FROM Newscoop\IngestPluginBundle\Entity\Parser AS p
                    WHERE p.namespace NOT IN (:namespaces)
                ')
                ->setParameter('namespaces', $namespaces)
                ->getResult();

            $this->em->flush();
        } catch (\Exception $e) {
            throw new \Exception($e->getMessage());
        }
    }