diff --git a/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/Base_updateCalendarEventList.xml b/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/Base_updateCalendarEventList.xml
index 58c960bddb48ebf05df0f499d5adcbb4034326b9..78377d35e87b4959e8794aa626b46446a7b5fe9f 100644
--- a/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/Base_updateCalendarEventList.xml
+++ b/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/Base_updateCalendarEventList.xml
@@ -60,6 +60,8 @@ from DateTime import DateTime\n
 import random\n
 \n
 def convertToERP5DateTime(date):\n
+  if not date:\n
+    return None\n
   date, hour = date.split()\n
   month, day, year = date.split("/")\n
   return DateTime("%s/%s/%s %s" % (month, day, year, hour))\n
@@ -116,7 +118,8 @@ if request_type == "list":\n
 \n
 elif request_type == "remove":\n
   title = form.get("title")\n
-  catalog_object = portal.portal_catalog.getResultValue(portal_type=portal_type_list, title=title)\n
+  catalog_object = portal.portal_catalog.getResultValue(portal_type=portal_type_list,\n
+                                                        title=title)\n
   event = context.restrictedTraverse(catalog_object.getPath())\n
   portal.event_module.deleteContent(event.getId())\n
   return dumps({"IsSuccess": True})\n
@@ -132,12 +135,25 @@ elif request_type == "update":\n
   catalog_object = portal.portal_catalog.getResultValue(portal_type=portal_type_list,\n
                                                         id=event_id)\n
   event = context.restrictedTraverse(catalog_object.getPath())\n
-  if title and event.getTitle() != title:\n
-    event.setTitle(title)\n
-  if text_content and event.getDescription() != text_content:\n
-    event.setDescription(text_content)\n
-  event.setStartDate(start_date)\n
-  event.setStopDate(end_date)\n
+  event_portal_type = form.get(\'event_portal_type\')\n
+  if event.getPortalType() != event_portal_type and event_portal_type in portal_type_list:\n
+    new_event = portal.event_module.newContent(portal_type=event_portal_type)\n
+    new_event.edit(start_date=start_date,\n
+                   end_date=end_date,\n
+                   title=title,\n
+                   description=text_content)\n
+    portal.event_module.deleteContent(event.getId())\n
+  else:\n
+    kw = {}\n
+    if title and event.getTitle() != title:\n
+      kw["title"] = title\n
+    if text_content and event.getDescription() != text_content:\n
+      kw["description"] = text_content\n
+    if start_date is not None:\n
+      kw["start_date"] = start_date\n
+    if end_date is not None:\n
+      kw["stop_date"] = end_date\n
+    event.edit(**kw)\n
   return dumps({"IsSuccess": True})\n
 \n
 elif request_type == "add":\n
diff --git a/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/ung_js/ung_calendar.js.xml b/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/ung_js/ung_calendar.js.xml
index 78b326a1e6d00f28bff45791233f3ebd7f7c4954..c5f1db1a42c470f750d5f067473c1f0c0b945b74 100644
--- a/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/ung_js/ung_calendar.js.xml
+++ b/bt5/erp5_web_ung_theme/SkinTemplateItem/portal_skins/erp5_web_ung_theme/ung_js/ung_calendar.js.xml
@@ -67,7 +67,7 @@ function Edit(data){\n
     title: "Update Event",\n
     buttons: {\n
       "Save": function(){\n
-        data = $("form#create_new_event").serializeArray();\n
+        var data = $("form#create_new_event").serializeArray();\n
         var dataHash = {};\n
         for (var i=0; i<data.length; i++)\n
           dataHash[data[i].name] = data[i].value;\n
@@ -84,6 +84,7 @@ function Edit(data){\n
                     dataHash.stop_date_minute;\n
 \n
         var paramList = [{name : \'CalendarEndTime\', \'value\': stop_date},\n
+                         {name : \'event_portal_type\', \'value\': dataHash.portal_type},\n
                          {name : \'CalendarStartTime\', \'value\': start_date},\n
                          {name : \'title\', \'value\': dataHash.title},\n
                          {name : \'request_type\', \'value\': \'update\'},\n
diff --git a/bt5/erp5_web_ung_theme/TestTemplateItem/testUNG.py b/bt5/erp5_web_ung_theme/TestTemplateItem/testUNG.py
index 0aed5757866d64c6a1a7d2702549d6ae88773f7e..3c53f6d38ab1420e1c85570bb3f4002c5b516f73 100644
--- a/bt5/erp5_web_ung_theme/TestTemplateItem/testUNG.py
+++ b/bt5/erp5_web_ung_theme/TestTemplateItem/testUNG.py
@@ -41,12 +41,12 @@ class TestUNG(ERP5TypeTestCase):
     return "UNG Tests"
 
   def getBusinessTemplateList(self):
-    return ('erp5_base',
+    return ('erp5_ingestion_mysql_innodb_catalog',
+            'erp5_base',
+            'erp5_jquery',
             'erp5_web',
-            'erp5_ingestion_mysql_innodb_catalog',
             'erp5_core_proxy_field_legacy',
             'erp5_ingestion',
-            'erp5_jquery',
             'erp5_jquery_ui',
             'erp5_dms',
             'erp5_crm',
@@ -268,14 +268,56 @@ class TestUNG(ERP5TypeTestCase):
     self.portal.Base_updateCalendarEventList("update")
     self.stepTic()
     self.assertEquals(web_message.getTitle(), "Buy Coffee")
-    self.portal.REQUEST.form.clear()
-    form_dict = dict(title=web_message.getTitle(),
-                     id=web_message.getId())
+    form_dict["event_portal_type"] = "Note"
     self.portal.REQUEST.form.update(form_dict)
-    self.portal.Base_updateCalendarEventList("remove")
+    self.portal.Base_updateCalendarEventList("update")
     self.stepTic()
     web_message = self.portal.portal_catalog.getResultValue(portal_type="Web Message")
     self.assertEquals(web_message, None)
+    note = self.portal.portal_catalog.getResultValue(portal_type="Note")
+    self.assertEquals(note.getTitle(), "Buy Coffee")
+    self.portal.REQUEST.form.clear()
+    form_dict = dict(title=note.getTitle(),
+                     id=note.getId())
+    self.portal.REQUEST.form.update(form_dict)
+    self.portal.Base_updateCalendarEventList("remove")
+    self.stepTic()
+    note = self.portal.portal_catalog.getResultValue(portal_type="Note",
+                                                     title="Buy Coffee")
+    self.assertEquals(note, None)
+    self.portal.REQUEST.form.clear()
+    start_date = DateTime()
+    end_date = DateTime() + 1
+    form_dict = dict(CalendarStartTime=start_date.strftime("%m/%d/%Y %H:%M"),
+                     CalendarEndTime=end_date.strftime("%m/%d/%Y %H:%M"),
+                     CalendarTitle="Another Sample",
+                     portal_type="Letter")
+    self.portal.REQUEST.form.update(form_dict)
+    self.portal.Base_updateCalendarEventList("add")
+    self.stepTic()
+    letter = self.portal.portal_catalog.getResultValue(portal_type="Letter",
+                                                       title="Another Sample")
+    self.assertEquals(letter.getPortalType(), "Letter")
+    self.assertEquals(letter.getTitle(), "Another Sample")
+    self.assertEquals(letter.getStartDate().hour(), start_date.hour())
+    self.assertEquals(letter.getStartDate().day(), start_date.day())
+    self.assertEquals(letter.getStopDate().hour(), end_date.hour())
+    self.assertEquals(letter.getStopDate().day(), end_date.day())
+    self.portal.REQUEST.form.clear()
+    form_dict = dict(title="Change only the Title of Sample",
+                     event_id=letter.getId())
+    self.portal.REQUEST.form.update(form_dict)
+    self.portal.Base_updateCalendarEventList("update")
+    self.stepTic()
+    letter = self.portal.portal_catalog.getResultValue(portal_type="Letter",
+                                                       title="Another Sample")
+    self.assertEquals(letter, None)
+    letter = self.portal.portal_catalog.getResultValue(portal_type="Letter",
+                                                       title="Change only the Title of Sample")
+    self.assertEquals(letter.getStartDate().hour(), start_date.hour())
+    self.assertEquals(letter.getStartDate().day(), start_date.day())
+    self.assertEquals(letter.getStopDate().hour(), end_date.hour())
+    self.assertEquals(letter.getStopDate().day(), end_date.day())
   
   def testERPSite_createUNGUser(self):
     """Test if script creates an user correctly"""
diff --git a/bt5/erp5_web_ung_theme/bt/revision b/bt5/erp5_web_ung_theme/bt/revision
index 235adf8bd8fe3b9844d65f77956d73f5fed04ede..0dbf139f8d1a85546880d56c8ff838638c454501 100644
--- a/bt5/erp5_web_ung_theme/bt/revision
+++ b/bt5/erp5_web_ung_theme/bt/revision
@@ -1 +1 @@
-349
\ No newline at end of file
+350
\ No newline at end of file