diff --git a/AMDiS/src/Mesh.cc b/AMDiS/src/Mesh.cc
index d763d6612e7951b353a251ce7044f4dd8244da15..d56f11cc0ada8eeef4618e757e51d0d045346161 100644
--- a/AMDiS/src/Mesh.cc
+++ b/AMDiS/src/Mesh.cc
@@ -973,13 +973,17 @@ namespace AMDiS {
 
     node.serialize(out);
 
-    // write admins
+
+    // === Write admins. ===
+
     int size = static_cast<int>(admin.size());
     SerUtil::serialize(out, size);
     for (int i = 0; i < size; i++)
       admin[i]->serialize(out);
 
-    // write macroElements
+
+    // === Write macroElements. ===
+
     size = static_cast<int>(macroElements.size());
     SerUtil::serialize(out, size);
     for (int i = 0; i < size; i++)
@@ -988,6 +992,30 @@ namespace AMDiS {
     SerUtil::serialize(out, elementIndex);
     SerUtil::serialize(out, initialized);
 
+
+    // === Write periodic associations. ===
+    int mapSize = periodicAssociations.size();
+    SerUtil::serialize(out, mapSize);
+    for (std::map<BoundaryType, VertexVector*>::iterator it = periodicAssociations.begin();
+	 it != periodicAssociations.end(); ++it) {
+      BoundaryType b = it->first;
+
+      // Check which DOFAdmin is used for the current VertexVector we want to serialize.
+      int ithAdmin = -1;
+      for (int i = 0; i < static_cast<int>(admin.size()); i++) {
+	if (admin[i] == it->second->getAdmin()) {
+	  ithAdmin = i;
+	  break;
+	}
+      }
+      TEST_EXIT(ithAdmin >= 0)
+	("No DOFAdmin found for serialization of periodic associations!\n");
+
+      SerUtil::serialize(out, b);
+      SerUtil::serialize(out, ithAdmin);
+      it->second->serialize(out);
+    }
+
     serializedDOFs.clear();
   }
 
@@ -1027,7 +1055,9 @@ namespace AMDiS {
 
     node.deserialize(in);
 
-    // read admins
+
+    // === Read admins. ===
+
     int size;
     SerUtil::deserialize(in, size);
     admin.resize(size, NULL);
@@ -1092,6 +1122,22 @@ namespace AMDiS {
     }
 
     serializedDOFs.clear();
+
+    
+    /// === Read periodic assoications. ===
+
+    int mapSize = 0;
+    SerUtil::deserialize(in, mapSize);
+    for (int i = 0; i < mapSize; i++) {
+      BoundaryType b = 0;
+      int ithAdmin = 0;
+      SerUtil::deserialize(in, b);
+      SerUtil::deserialize(in, ithAdmin);
+
+      VertexVector *tmpvec = new VertexVector(admin[ithAdmin], "");
+      tmpvec->deserialize(in);
+      periodicAssociations[b] = tmpvec;      
+    }
   }
 
   void Mesh::initialize()