public function searchBeans($module, array $searchFields, $deleted = 0, $limit = 100)
    {
        global $db;
        // Search the related record ID
        $sugarBean = $this->getBean($module);
        // Make sure the fields criteras are set correctly
        $searchFields = array_map(function ($critera) {
            return array_replace(array(
                'value' => '',
                'operator' => '=',
            ), is_array($critera) ? $critera : array('value' => $critera));
        }, $searchFields);

        foreach ($searchFields as $searchField => $critera) {
            // Check the the fields are defined correctly
            if (!isset($sugarBean->field_defs[$searchField])) {
                $msg = "{$searchField} ({$critera['value']}) not in Sugar for module $module, can't search on it";
                throw new \RuntimeException($msg);
            }
        }

        // Try to get the records with the same DB ID
        // what is the parent sql table ? by default the normal one
        // but maybe the _cstm ?
        $whereCriteras = array();
        $moduleFields = $this->getModuleFields($module);
        foreach ($searchFields as $searchField => $critera) {
            // Search my field in the module fields
            $searchField = '`' . $moduleFields[$searchField]['Table'] . '`.`' . $searchField . '`';
            $whereCriteras[] = "$searchField " . $critera['operator'] . " " . $db->quoted($critera['value']);
        }

        $where = implode(' AND ', $whereCriteras);
        $msg = "Searching a record from '{$module}' with $where (deleted = {$deleted})";
        $this->getLogger()->info($this->logPrefix . $msg);
        $aList = $sugarBean->get_list('', $where, 0, $limit, $limit, $deleted);

        // Clean Memory
        $this->cleanMemory();

        return $aList['list'];
    }