diff --git a/src/mapfile.py b/src/mapfile.py
index 7da06a6a05d3d8da1f4c2b5442cba1f40831f4f9..0576a1ad9872779938f7d18f9a78f1373540926c 100644
--- a/src/mapfile.py
+++ b/src/mapfile.py
@@ -80,6 +80,7 @@ class Layer(MetadataMixin):
 
     def enable(self, enabled=True):
         requests = ["GetCapabilities", "GetMap", "GetFeatureInfo", "GetLegendGraphic"]
+        self.ms.status = mapscript.MS_ON if enabled else mapscript.MS_OFF
         self.ms.setMetaData("wms_enable_request",  " ".join(('%s' if enabled else "!%s") % c for c in requests))
 
     def get_type_name(self):
@@ -796,7 +797,6 @@ class Mapfile(MetadataMixin):
         # but everything should be configured() anyway.
         layer = Layer(model.ms.clone())
         layer.ms.name = l_name
-        layer.ms.status = mapscript.MS_ON
         layer.ms.dump = mapscript.MS_TRUE
         layer.ms.tolerance = 6
         layer.ms.toleranceunits = mapscript.MS_PIXELS
diff --git a/src/server.py b/src/server.py
index 180799cd7f5765d4723be9e8292b5508b2c60dad..5c0ed2c5c0471e2e406dbcca4df963f4b680fe04 100755
--- a/src/server.py
+++ b/src/server.py
@@ -672,8 +672,9 @@ class layers(object):
 
     @HTTPCompatible()
     def POST(self, map_name, format):
-        data = get_data(name="layer", mandatory=["name", "resource"],
-                        authorized=["name", "title", "abstract", "resource"])
+        data = get_data(name="layer",
+                        mandatory=["name", "resource"],
+                        authorized=["name", "title", "abstract", "resource", "enabled"])
 
         l_name = data.pop("name")
         l_enabled = data.pop("enabled", True)