diff --git a/src/libs/routes/city.js b/src/libs/routes/city.js
index 733da6f341cc37a7b6b792b8f5383076eae75067..d324330ebecb8434fa4329cea499744be312e361 100644
--- a/src/libs/routes/city.js
+++ b/src/libs/routes/city.js
@@ -12,27 +12,42 @@ const response = require(`${libs}/middlewares/response`);
 
 // Return all cities
 cityApp.get('/', (req, res, next) => {
-    req.sql.from('municipios');
+    req.sql.from('municipio')
+        .field('pk_cod_ibge', 'pk_municipio_id')
+        .field('nome')
+        .field('pk_cod_ibge', 'codigo_ibge')
+        .field('fk_estado_id');
     next();
 }, query, response('city'));
 
 // Return a specific city by it's id
 cityApp.get('/:id', (req, res, next) => {
-    req.sql.from('municipios')
-        .where('pk_municipio_id = ?', parseInt(req.params.id, 10));
+    req.sql.from('municipio')
+        .field('pk_cod_ibge', 'pk_municipio_id')
+        .field('nome', 'nome')
+        .field('pk_cod_ibge', 'codigo_ibge')
+        .field('fk_estado_id')
+        .where('pk_cod_ibge = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('city'));
 
 // Return a specific city by it's IBGE code
+// TODO: this route becomes obsolete in the new schema, deprecate it
 cityApp.get('/ibge/:id', (req, res, next) => {
-    req.sql.from('municipios')
-        .where('codigo_ibge = ?', req.params.id);
+    req.sql.from('municipio')
+        .field('pk_cod_ibge', 'pk_municipio_id')
+        .field('nome')
+        .field('fk_estado_id')
+        .where('pk_cod_ibge = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('city'));
 
 // Return all the cities from a specific state
 cityApp.get('/state/:id', (req, res, next) => {
-    req.sql.from('municipios')
+    req.sql.from('municipio')
+        .field('pk_cod_ibge', 'pk_municipio_id')
+        .field('nome')
+        .field('pk_cod_ibge', 'codigo_ibge')
         .where('fk_estado_id = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('city'));
diff --git a/src/libs/routes/enrollment.js b/src/libs/routes/enrollment.js
index 446d7aca2fd0a3b10d43894f81e3fea7c0365e2d..0c9500446b22a5178103aef6001212bc16bfe0bb 100644
--- a/src/libs/routes/enrollment.js
+++ b/src/libs/routes/enrollment.js
@@ -21,9 +21,9 @@ const parseParams = require(`${libs}/middlewares/parseParams`);
 // Returns a tuple of start and ending years of the complete enrollments dataset.
 enrollmentApp.get('/year_range', (req, res, next) => {
     req.sql = squel.select()
-        .from('turmas')
-        .field('MIN(turmas.ano_censo)', 'start_year')
-        .field('MAX(turmas.ano_censo)', 'end_year');
+        .from('turma')
+        .field('MIN(turma.ano_censo)', 'start_year')
+        .field('MAX(turma.ano_censo)', 'end_year');
 
     next();
 }, query, response('range'));
@@ -41,7 +41,7 @@ enrollmentApp.get('/education_level', (req, res, next) => {
 // Returns all adm dependencies
 enrollmentApp.get('/adm_dependency', (req, res, next) => {
     req.sql = squel.select()
-        .from('dependencia_adms')
+        .from('dependencia_adm')
         .field('pk_dependencia_adm_id', 'id')
         .field('nome', 'name');
 
@@ -74,27 +74,28 @@ enrollmentApp.use('/', parseParams('filter', [
     // Do the joins
     if(typeof req.filter.adm_dependency !== 'undefined'
         || typeof req.dims.adm_dependency !== 'undefined') {
-        req.sql.join('dependencia_adms', null, 'fk_dependencia_adm_id=dependencia_adms.pk_dependencia_adm_id');
+        req.sql.join('dependencia_adm', null,
+            'turma.fk_dependencia_adm_id = dependencia_adm.pk_dependencia_adm_id');
     }
 
     if(typeof req.filter.education_level !== 'undefined'
         || typeof req.dims.education_level !== 'undefined') {
-        req.sql.join('etapa_ensino', null, 'fk_etapa_ensino_id=etapa_ensino.pk_etapa_ensino_id');
+        req.sql.join('etapa_ensino', null,
+            'turma.fk_etapa_ensino_id = etapa_ensino.pk_etapa_ensino_id');
     }
 
     if(typeof req.filter.region !== 'undefined'
         || typeof req.dims.region !== 'undefined') {
-            req.sql.join('municipios', null, 'fk_municipio_id=municipios.pk_municipio_id')
-                .join('estados', null, 'municipios.fk_estado_id=estados.pk_estado_id')
-                .join('regioes', null, 'estados.fk_regiao_id=regioes.pk_regiao_id');
+            req.sql.join('regiao', null,
+                'turma.fk_regiao_id = regiao.pk_regiao_id');
     }
 
     if((typeof req.filter.state !== 'undefined'
         || typeof req.dims.state !== 'undefined')
         && (typeof req.filter.region === 'undefined'
         && typeof req.dims.region === 'undefined')) {
-            req.sql.join('municipios', null, 'fk_municipio_id=municipios.pk_municipio_id')
-                .join('estados', null, 'municipios.fk_estado_id=estados.pk_estado_id');
+            req.sql.join('estado',
+                null, 'turma.fk_estado_id = estado.pk_estado_id');
     }
 
     if((typeof req.filter.city !== 'undefined'
@@ -103,11 +104,12 @@ enrollmentApp.use('/', parseParams('filter', [
         && typeof req.dims.state === 'undefined')
         && (typeof req.filter.region === 'undefined'
         && typeof req.dims.region === 'undefined')) {
-        req.sql.join('municipios', null, 'fk_municipio_id=municipios.pk_municipio_id');
+        req.sql.join('municipio', null,
+            'turma.fk_municipio_id = municipio.pk_cod_ibge');
     }
 
     if(typeof req.dims.school !== 'undefined') {
-        req.sql.join('escolas', null, 'fk_escola_id=escolas.pk_escola_id');
+        req.sql.join('escolas', null, 'turma.cod_entidade = escola.cod_entidade');
     }
 
     // Dimensions (add fields)
@@ -119,39 +121,48 @@ enrollmentApp.use('/', parseParams('filter', [
     }
 
     if(typeof req.dims.region !== 'undefined') {
-        req.sql.field('regioes.nome', 'region_name')
-            .group('regioes.nome')
-            .order('regioes.nome');
+        req.sql.field('regiao.nome', 'region_name')
+            .group('regiao.nome')
+            .order('regiao.nome');
     }
 
     if(typeof req.dims.state !== 'undefined') {
-        req.sql.field('estados.nome', 'state_name')
-            .group('estados.nome')
-            .order('estados.nome');
+        req.sql.field('estado.nome', 'state_name')
+            .group('estado.nome')
+            .order('estado.nome');
     }
 
     if(typeof req.dims.city !== 'undefined') {
         req.sql.field('municipios.nome', 'city_name')
-            .group('municipios.nome')
-            .order('municipios.nome');
+            .group('municipio.nome')
+            .order('municipio.nome');
     }
 
+    /**
+     * TODO: field nome_entidade is not present in the new schema, remove this part
     if(typeof req.dims.school !== 'undefined') {
-        req.sql.field('escolas.nome_entidade', 'school_name')
-            .group('escolas.nome_entidade')
-            .order('escolas.nome_entidade');
+        req.sql.field('escola.nome_entidade', 'school_name')
+            .group('escola.nome_entidade')
+            .order('escola.nome_entidade');
+    }
+    */
+
+    if(typeof req.dims.school !== 'undefined') {
+        req.sql.field('escola.cod_entidade', 'school_code')
+            .group('escola.cod_entidade')
+            .order('escola.cod_entidade');
     }
 
     if(typeof req.dims.adm_dependency !== 'undefined') {
-        req.sql.field('dependencia_adms.nome', 'adm_dependency_name')
-            .group('dependencia_adms.nome')
-            .order('dependencia_adms.nome');
+        req.sql.field('dependencia_adm.nome', 'adm_dependency_name')
+            .group('dependencia_adm.nome')
+            .order('dependencia_adm.nome');
     }
 
     if(typeof req.dims.location !== 'undefined') {
-        req.sql.field('turmas.id_localizacao', 'location_name')
-            .group('turmas.id_localizacao')
-            .order('turmas.id_localizacao');
+        req.sql.field('turma.id_localizacao', 'location_name')
+            .group('turma.id_localizacao')
+            .order('turma.id_localizacao');
     }
 
     if(typeof req.dims.region === 'undefined'
@@ -164,39 +175,39 @@ enrollmentApp.use('/', parseParams('filter', [
     // Filter (add where)
 
     if (typeof req.filter.min_year !== 'undefined') {
-        req.sql.where('turmas.ano_censo>=?', parseInt(req.filter.min_year, 10));
+        req.sql.where('turma.ano_censo >= ?', parseInt(req.filter.min_year, 10));
     }
 
     if (typeof req.filter.max_year !== 'undefined') {
-        req.sql.where('turmas.ano_censo<=?', parseInt(req.filter.max_year, 10));
+        req.sql.where('turma.ano_censo <= ?', parseInt(req.filter.max_year, 10));
     }
 
     if (typeof req.filter.adm_dependency !== 'undefined') {
-        req.sql.where('pk_dependencia_adm_id=?', parseInt(req.filter.adm_dependency, 10));
+        req.sql.where('turma.fk_dependencia_adm_id = ?', parseInt(req.filter.adm_dependency, 10));
     }
 
     if (typeof req.filter.location !== 'undefined') {
-        req.sql.where('turmas.id_localizacao=?', parseInt(req.filter.location, 10));
+        req.sql.where('turma.id_localizacao = ?', parseInt(req.filter.location, 10));
     }
 
     if (typeof req.filter.education_level !== 'undefined') {
-        req.sql.where('pk_etapa_ensino_id=?', parseInt(req.filter.education_level, 10));
+        req.sql.where('turma.fk_etapa_ensino_id = ?', parseInt(req.filter.education_level, 10));
     }
 
     if (typeof req.filter.region !== 'undefined') {
-        req.sql.where('pk_regiao_id=?', parseInt(req.filter.region, 10));
+        req.sql.where('turma.fk_regiao_id = ?', parseInt(req.filter.region, 10));
     }
 
     if (typeof req.filter.state !== 'undefined') {
-        req.sql.where('pk_estado_id=?', parseInt(req.filter.state, 10));
+        req.sql.where('turma.fk_estado_id = ?', parseInt(req.filter.state, 10));
     }
 
     if (typeof req.filter.city !== 'undefined') {
-        req.sql.where('turmas.fk_municipio_id=?', parseInt(req.filter.city, 10));
+        req.sql.where('turma.fk_municipio_id = ?', parseInt(req.filter.city, 10));
     }
 
     if (typeof req.filter.school !== 'undefined') {
-        req.sql.where('turmas.fk_escola_id=?', parseInt(req.filter.school, 10));
+        req.sql.where('turma.cod_entidade = ?', parseInt(req.filter.school, 10));
     }
     log.debug(req.sql.toParam());
     next();
@@ -204,10 +215,10 @@ enrollmentApp.use('/', parseParams('filter', [
 
 enrollmentApp.get('/', (req, res, next) => {
     req.sql.field('COALESCE(SUM(num_matriculas), 0)', 'total')
-        .field('turmas.ano_censo', 'year')
-        .from('turmas')
-        .group('turmas.ano_censo')
-        .order('turmas.ano_censo');
+        .field('turma.ano_censo', 'year')
+        .from('turma')
+        .group('turma.ano_censo')
+        .order('turma.ano_censo');
     next();
 }, query, (req, res, next) => {
     // 'Sanitize' result
diff --git a/src/libs/routes/region.js b/src/libs/routes/region.js
index 773ad347959049dd2137d96abb255a3bc809a2d4..0a8b65f860655e71e7aaf4f1b6211a37d481199c 100644
--- a/src/libs/routes/region.js
+++ b/src/libs/routes/region.js
@@ -12,13 +12,13 @@ const response = require(`${libs}/middlewares/response`);
 
 // Get all regions
 regionApp.get('/', (req, res, next) => {
-    req.sql.from('regioes');
+    req.sql.from('regiao');
     next();
 }, query, response('region'));
 
 // Get a region by it's id
 regionApp.get('/:id', (req, res, next) => {
-    req.sql.from('regioes')
+    req.sql.from('regiao')
         .where('pk_regiao_id = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('region'));
diff --git a/src/libs/routes/school.js b/src/libs/routes/school.js
index 6c92430b425d3b9fde8c682216c8f6a10f07b75f..ec415a868b1cd4bac133813b7c3a3c2a9fa9ef5a 100644
--- a/src/libs/routes/school.js
+++ b/src/libs/routes/school.js
@@ -28,32 +28,35 @@ const response = require(`${libs}/middlewares/response`);
 
 // Get a school by it's id
 schoolApp.get('/:id', (req, res, next) => {
-    req.sql.from('escolas')
-        .where('pk_escola_id = ?', parseInt(req.params.id, 10));
+    req.sql.from('escola')
+        .field('cod_entidade', 'pk_escola_id')
+        .field('cod_entidade')
+        .field('ano_censo')
+        .field('fk_municipio_id')
+        .field('fk_estado_id')
+        .where('cod_entidade = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('school'));
 
 // Get all schools from a state
 schoolApp.get('/state/:id', (req, res, next) => {
-    req.sql.from('escolas')
-        .field('pk_escola_id')
-        .field('nome_entidade')
+    req.sql.from('escola')
+        .field('cod_entidade', 'pk_escola_id')
+        .field('cod_entidade')
         .field('ano_censo')
-        .field('fk_cod_estado')
-        .field('fk_cod_municipio')
-        .where('fk_cod_estado = ?', parseInt(req.params.id, 10));
+        .field('fk_municipio_id')
+        .where('fk_estado_id = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('school'));
 
 // Get all schools from a city
 schoolApp.get('/city/:id', (req, res, next) => {
-    req.sql.from('escolas')
-        .field('pk_escola_id')
-        .field('nome_entidade')
+    req.sql.from('escola')
+        .field('cod_entidade', 'pk_escola_id')
+        .field('cod_entidade')
         .field('ano_censo')
-        .field('fk_cod_estado')
-        .field('fk_cod_municipio')
-        .where('fk_cod_municipio = ?', parseInt(req.params.id, 10));
+        .field('fk_estado_id')
+        .where('fk_municipio_id = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('school'));
 
diff --git a/src/libs/routes/simulation.js b/src/libs/routes/simulation.js
new file mode 100644
index 0000000000000000000000000000000000000000..d197b39d1c107935bef0775bcfce31ca4b7b75b5
--- /dev/null
+++ b/src/libs/routes/simulation.js
@@ -0,0 +1,47 @@
+const express = require('express');
+
+const libs = `${process.cwd()}/libs`;
+
+const squel = require('squel');
+
+const query = require(`${libs}/middlewares/query`);
+
+const response = require(`${libs}/middlewares/response`);
+
+const simulationApp = express();
+
+simulationApp.get('/', (req, res, next) => {
+    req.sql = squel.select().from('simulacao').toParam();
+    next();
+}, query, response('simulacao'));
+
+simulationApp.get('/:uid:/all', (req, res, next) => {
+    // TODO: implement user checking
+
+    req.sql = squel.select().from('simulacao').toParam();
+    next();
+}, query, response('simulacao'));
+
+simulationApp.get('/:uid:/:simulation_id:/view', (req, res, next) => {
+    // TODO: implement checking if the simulation belongs to the current user
+
+    req.sql = squel.select().from('simulacao').toParam();
+    next();
+});
+
+simulationApp.get('/:uid:/:simulation_id:/delete', (req, res, next) => {
+    // TODO: implement checking if the simulation belongs to the current user
+
+    req.sql = squel.select().from('simulacao').toParam();
+    next();
+});
+
+simulationApp.get('/:uid:/:simulation_id:/edit', (req, res, next) => {
+    // TODO: implement checking if the simulation belongs to the current user
+
+    req.sql = squel.select().from('simulacao').toParam();
+    next();
+});
+
+module.exports = simulationApp;
+
diff --git a/src/libs/routes/state.js b/src/libs/routes/state.js
index 75e1c0b7835901804ea78e459b1fe0050ec03631..8567ec05f7448fcbf3ebe00fefbc9d5e6e48de27 100644
--- a/src/libs/routes/state.js
+++ b/src/libs/routes/state.js
@@ -12,20 +12,20 @@ const response = require(`${libs}/middlewares/response`);
 
 // Get all states
 stateApp.get('/', (req, res, next) => {
-    req.sql.from('estados');
+    req.sql.from('estado');
     next();
 }, query, response('state'));
 
 // Get a state
 stateApp.get('/:id', (req, res, next) => {
-    req.sql.from('estados')
+    req.sql.from('estado')
         .where('pk_estado_id = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('state'));
 
 // Get all states from a region
 stateApp.get('/region/:id', (req, res, next) => {
-    req.sql.from('estados')
+    req.sql.from('estado')
         .where('fk_regiao_id = ?', parseInt(req.params.id, 10));
     next();
 }, query, response('state'));
diff --git a/src/test/test.js b/src/test/test.js
index 110be7d6273b1e9f2b33e1ba115c556ac25106cd..ddd1f8974182a9b6b42b9fe989c61f464325ffbd 100644
--- a/src/test/test.js
+++ b/src/test/test.js
@@ -96,7 +96,7 @@ describe('request enrollments', () => {
 
     it('should list enrollments with valid filters', (done) => {
         chai.request(server)
-            .get('/api/v1/enrollment?filter=min_year:2010,state:41')
+            .get('/api/v1/enrollment?filter=min_year:2014,state:41')
             .end((err, res) => {
                 res.should.have.status(200);
                 res.should.be.json;
@@ -292,7 +292,7 @@ describe('request cities', () => {
 
     it('should list a city by id', (done) => {
         chai.request(server)
-            .get('/api/v1/city/1')
+            .get('/api/v1/city/4102802')
             .end((err, res) => {
                 res.should.have.status(200);
                 res.should.be.json;
@@ -317,7 +317,6 @@ describe('request cities', () => {
                 res.body.result[0].should.have.property('pk_municipio_id');
                 res.body.result[0].should.have.property('fk_estado_id');
                 res.body.result[0].should.have.property('nome');
-                res.body.result[0].should.have.property('codigo_ibge');
                 done();
             });
     });
@@ -331,7 +330,6 @@ describe('request cities', () => {
                 res.body.should.have.property('result');
                 res.body.result.should.be.a('array');
                 res.body.result[0].should.have.property('pk_municipio_id');
-                res.body.result[0].should.have.property('fk_estado_id');
                 res.body.result[0].should.have.property('nome');
                 res.body.result[0].should.have.property('codigo_ibge');
                 done();
@@ -342,7 +340,7 @@ describe('request cities', () => {
 describe('request schools', () => {
     it('should list a school by id', (done) => {
         chai.request(server)
-            .get('/api/v1/school/185588')
+            .get('/api/v1/school/11000023')
             .end((err, res) => {
                 res.should.have.status(200);
                 res.should.be.json;
@@ -351,7 +349,8 @@ describe('request schools', () => {
                 res.body.result[0].should.have.property('pk_escola_id');
                 res.body.result[0].should.have.property('ano_censo');
                 res.body.result[0].should.have.property('cod_entidade');
-                res.body.result[0].should.have.property('nome_entidade');
+                res.body.result[0].should.have.property('fk_municipio_id');
+                res.body.result[0].should.have.property('fk_estado_id');
                 done();
             });
     });
@@ -366,14 +365,15 @@ describe('request schools', () => {
                 res.body.result.should.be.a('array');
                 res.body.result[0].should.have.property('pk_escola_id');
                 res.body.result[0].should.have.property('ano_censo');
-                res.body.result[0].should.have.property('nome_entidade');
+                res.body.result[0].should.have.property('cod_entidade');
+                res.body.result[0].should.have.property('fk_municipio_id');
                 done();
             });
     });
 
     it('should list all schools from a city', (done) => {
         chai.request(server)
-            .get('/api/v1/school/city/3287')
+            .get('/api/v1/school/city/4102802')
             .end((err, res) => {
                 res.should.have.status(200);
                 res.should.be.json;
@@ -381,7 +381,8 @@ describe('request schools', () => {
                 res.body.result.should.be.a('array');
                 res.body.result[0].should.have.property('pk_escola_id');
                 res.body.result[0].should.have.property('ano_censo');
-                res.body.result[0].should.have.property('nome_entidade');
+                res.body.result[0].should.have.property('cod_entidade');
+                res.body.result[0].should.have.property('fk_estado_id');
                 done();
             })
     })