diff --git a/MetaAnalytic.py b/MetaAnalytic.py
index 901393ca6efe15590f44f0831ce1a532840279a3_TWV0YUFuYWx5dGljLnB5..7d24f8d4d5d0d058b69ccd42f7d5a1549ba8d51f_TWV0YUFuYWx5dGljLnB5 100644
--- a/MetaAnalytic.py
+++ b/MetaAnalytic.py
@@ -1,6 +1,6 @@
 from openerp import SUPERUSER_ID
 from openerp import fields, api
-from openerp.tools import config
+from openerp.tools import config, frozendict
 
 from openerp.addons.oemetasl import OEMetaSL
 
@@ -182,7 +182,7 @@
             return res
 
         @AddMethod(superclass)
-        @api.cr_uid_context
+        @api.cr_uid_ids_context
         def unlink(self, cr, uid, ids, context=None):
             """When removing this object, remove all associated analytic
             codes referenced by this object.
@@ -223,6 +223,44 @@
             )
             return res
 
+        @AddMethod(superclass)
+        @api.cr_uid_context
+        @api.returns(orm_name)
+        def create(self, cr, uid, vals, context=None):
+            """Performs analytic field validation"""
+            res = super(superclass, self).create(
+                cr, uid, vals, context=context
+            )
+            # Throws in case of error
+            self._validate_analytic_fields(cr, uid, res, frozendict(analytic))
+
+            return res
+
+        @AddMethod(superclass)
+        @api.cr_uid_ids_context
+        def write(self, cr, uid, ids, vals, context=None):
+            """Performs analytic field validation"""
+            res = super(superclass, self).write(
+                cr, uid, ids, vals, context=context
+            )
+            # Throws in case of error
+            self._validate_analytic_fields(cr, uid, ids, frozendict(analytic))
+
+            return res
+
+        @AddMethod(superclass)
+        @api.cr_uid_ids_context
+        def _validate_analytic_fields(self, cr, uid, ids, analytic,
+                                      context=None):
+            """Validation function to validate analytic fields.
+            The base implementation doesn't actually do anything.
+            :param analytic: frozendict, analytic field parameters, such as
+                   they would appear in the '_analytic' in the expanded
+                   form, ie. as a prefix => model_name mapping.
+            :raises: Validation error when applicable.
+            """
+            pass
+
         return (superclass,)
 
     @classmethod