diff --git a/Redmine.cabal b/Redmine.cabal
--- a/Redmine.cabal
+++ b/Redmine.cabal
@@ -1,5 +1,5 @@
 name: Redmine
-version: 0.0.6
+version: 0.0.8
 cabal-version: >=1.10
 build-type: Simple
 license: MIT
@@ -18,10 +18,8 @@
 
 Library
     default-language: Haskell2010
-    build-depends: base >=2 && <5, old-locale -any,
-                   time -any, old-time -any, bytestring -any, http-conduit >= 2.1.0, http-types,
-                   aeson -any, HTTP -any, network -any, text,
-                   transformers, containers, http-client-tls,
+    build-depends: base >=2 && <5, time -any, bytestring -any, http-conduit >= 2.1.0, http-types,
+                   aeson >= 0.11.0, HTTP -any, network -any, text, transformers, containers, http-client-tls,
                    resourcet, connection, MissingH
     exposed-modules: Redmine.Types, Redmine.Manager, Redmine.Get, Redmine.JSON, Redmine.Rest, Redmine.Post, Redmine.Put
     buildable: True
@@ -29,8 +27,9 @@
 
 test-suite test-Redmine
     default-language: Haskell2010
-    build-depends: base >=2 && <5, HUnit, text, MissingH, resourcet, transformers, old-locale, time,
-                   http-conduit >= 2.1.0, http-client-tls, connection, network, bytestring, aeson, containers
+    build-depends: base >=2 && <5, HUnit, text, MissingH, resourcet, transformers, time,
+                   http-conduit >= 2.1.0, http-client-tls, connection, network, bytestring, aeson >= 0.11.0, containers,
+                   HTTP, http-types
     type: exitcode-stdio-1.0
     main-is: testGet.hs
     buildable: True
diff --git a/src/Redmine/JSON.hs b/src/Redmine/JSON.hs
--- a/src/Redmine/JSON.hs
+++ b/src/Redmine/JSON.hs
@@ -7,21 +7,18 @@
 
 import Data.Aeson
 import Data.Maybe
-import Data.Time.Clock      (UTCTime)
-import Data.Time.Format (parseTime)
 import Redmine.Types
 import Control.Applicative ((<$>), (<*>), pure)
-import Control.Monad (liftM)
-import Data.Time.Calendar (Day, showGregorian)
-import System.Locale        (defaultTimeLocale)
+import Data.Time (Day, UTCTime, showGregorian, defaultTimeLocale)
+import Data.Time.Format (parseTimeM)
 
 import qualified Data.Text  as T (pack, unpack)
 
 parseRHTime :: String -> Maybe UTCTime
-parseRHTime = parseTime defaultTimeLocale "%FT%X%QZ"
+parseRHTime = parseTimeM True defaultTimeLocale "%FT%X%QZ"
 
 parseShortTime :: String -> Maybe Day
-parseShortTime = parseTime defaultTimeLocale "%F"
+parseShortTime = parseTimeM True defaultTimeLocale "%F"
 
 instance FromJSON ObjRef where
   parseJSON (Object v) =
@@ -51,15 +48,15 @@
           <*> (v .:? "category")
           <*> (v .:? "fixed_version")
           <*> (v .: "subject")
-          <*> liftM (fromMaybe "") (v .:? "description")
-          <*> liftM (parseShortTime . fromMaybe "") (v .:? "start_date")
-          <*> liftM (parseShortTime . fromMaybe "") (v .:? "due_date")
+          <*> (v .:? "description" .!= "")
+          <*> fmap (parseShortTime . fromMaybe "") (v .:? "start_date")
+          <*> fmap (parseShortTime . fromMaybe "") (v .:? "due_date")
           <*> (v .: "done_ratio")
           <*> (v .:? "estimated_hours")
           <*> (v .:? "spent_hours")
           <*> (v .:? "custom_fields")
-          <*> liftM parseRHTime (v .: "created_on")
-          <*> liftM parseRHTime (v .: "updated_on")
+          <*> fmap parseRHTime (v .: "created_on")
+          <*> fmap parseRHTime (v .: "updated_on")
           <*> (v .:? "journals")
           <*> (v .:? "attachements")
           <*> (v .:? "changesets")
@@ -83,14 +80,14 @@
                 <*> (v .: "description")
                 <*> (v .: "content_url")
                 <*> (v .: "author_name")
-                <*> liftM (fromJust.parseRHTime) (v .: "created_on")
+                <*> fmap (fromJust.parseRHTime) (v .: "created_on")
 
 instance FromJSON ChangeSet where
   parseJSON (Object v) =
     ChangeSet <$> (v .: "revision")
               <*> (v .: "user")
               <*> (v .: "comments")
-              <*> liftM (fromJust.parseRHTime) (v .: "committed_on")
+              <*> fmap (fromJust.parseRHTime) (v .: "committed_on")
 
 instance FromJSON Watcher where
   parseJSON (Object v) =
@@ -99,14 +96,16 @@
 
 instance FromJSON CustomField where
   parseJSON (Object v) =
-    CustomField <$> (v .: "id") <*> (v .: "name") <*> (v .: "value")
+    CustomField <$> (v .: "id")
+                <*> (v .: "name")
+                <*> (v .:? "value" .!= "")
 
 instance FromJSON Journal where
   parseJSON (Object v) =
     Journal <$> (v .: "id")
             <*> (v .: "user")
             <*> (v .:? "notes" .!= "")
-            <*> liftM parseRHTime (v .: "created_on")
+            <*> fmap parseRHTime (v .: "created_on")
             <*> (v .: "details")
 
 instance FromJSON Detail where
@@ -126,8 +125,8 @@
             <*> (v .: "identifier")
             <*> (v .: "description")
             <*> (v .:? "custom_fields")
-            <*> liftM parseRHTime (v .: "created_on")
-            <*> liftM parseRHTime (v .: "updated_on")
+            <*> fmap parseRHTime (v .: "created_on")
+            <*> fmap parseRHTime (v .: "updated_on")
 
 instance FromJSON TimeEntriesRsp where
   parseJSON (Object v) = TimeEntriesRsp <$> (v .: "time_entries")
@@ -144,9 +143,9 @@
               <*> (v .:? "activity")
               <*> (v .:? "hours")
               <*> (v .: "comments")
-              <*> liftM parseRHTime (v .: "created_on")
-              <*> liftM parseRHTime (v .: "updated_on")
-              <*> liftM (parseShortTime . fromMaybe "") (v .:? "spent_on")
+              <*> fmap parseRHTime (v .: "created_on")
+              <*> fmap parseRHTime (v .: "updated_on")
+              <*> fmap (parseShortTime . fromMaybe "") (v .:? "spent_on")
 
 instance FromJSON VersionsRsp where
   parseJSON (Object v) = VersionsRsp <$> (v .: "versions")
@@ -154,12 +153,6 @@
 instance FromJSON VersionRsp where
   parseJSON (Object v) = VersionRsp <$> (v .: "version")
 
-instance FromJSON Day where
-    parseJSON = withText "Day" $ \t ->
-        case parseTime defaultTimeLocale "%F" (T.unpack t) of
-          Just d -> pure d
-          _      -> fail "could not parse ISO-8601 date"
-
 instance FromJSON Version where
   parseJSON (Object v) =
     Version <$> (v .: "id")
@@ -169,9 +162,9 @@
             <*> (v .: "status")
             <*> (v .: "sharing")
             --FIXME avoid parsing an empty string
-            <*> liftM (parseShortTime . fromMaybe "") (v .:? "due_date")
-            <*> liftM parseRHTime (v .: "created_on")
-            <*> liftM parseRHTime (v .: "updated_on")
+            <*> fmap (parseShortTime . fromMaybe "") (v .:? "due_date")
+            <*> fmap parseRHTime (v .: "created_on")
+            <*> fmap parseRHTime (v .: "updated_on")
 
 instance FromJSON Relations where
   parseJSON (Object v) = Relations <$> (v .: "relations")
@@ -210,9 +203,9 @@
 instance FromJSON User where
   parseJSON (Object v) =
     User <$> (v .: "lastname")
-         <*> liftM parseRHTime (v .: "created_on")
+         <*> fmap parseRHTime (v .: "created_on")
          <*> (v .: "mail")
-         <*> liftM parseRHTime (v .: "last_login_on")
+         <*> fmap parseRHTime (v .: "last_login_on")
          <*> (v .: "firstname")
          <*> (v .: "id")
 
@@ -232,9 +225,6 @@
                 <*> (v .: "name")
                 <*> (v .: "is_default")
                 <*> (v .: "is_closed")
-
-instance ToJSON Day where
-  toJSON = String . T.pack . showGregorian
 
 instance ToJSON ObjRef where
   toJSON (ObjRef id name) = object [ "id" .= id, "name" .= name]
diff --git a/src/Redmine/Types.hs b/src/Redmine/Types.hs
--- a/src/Redmine/Types.hs
+++ b/src/Redmine/Types.hs
@@ -2,8 +2,7 @@
 
 module Redmine.Types where
 
-import Data.Time.Clock      (UTCTime)
-import Data.Time.Calendar (Day)
+import Data.Time      (Day, UTCTime)
 import Network.HTTP.Conduit
 import Data.Monoid
 import Data.Typeable
diff --git a/testsuite/testGet.hs b/testsuite/testGet.hs
--- a/testsuite/testGet.hs
+++ b/testsuite/testGet.hs
@@ -1,8 +1,13 @@
 {-# LANGUAGE OverloadedStrings #-}
 
 import Test.HUnit
+import Data.Aeson
 import Data.Map
+import Data.Time (Day, fromGregorian)
+
+
 import Redmine.Get
+import Redmine.Types
 
 test1 = TestCase (do let m   = fromList [("toto","a"),("offset","20"), ("limit","100")]
                          ref = "?toto=a&offset=20&limit=100&"
@@ -12,7 +17,20 @@
                          ref = fromList [("offset","120"), ("limit","100")]
                      assertEqual "increaseQueryRange a échouée" ref (increaseQueryRange m))
 
+test3 = TestCase $ assertEqual "Test de parsing d'un Day" (Just $ fromGregorian 1999 01 12) (decode "\"1999-01-12\"")
 
+test4 = TestCase $ assertEqual "Test de parsing d'un Day" "\"1999-01-12\"" (encode $ fromGregorian 1999 01 12)
+
+refCustomField = Just $ CustomField 1 "name" ""
+
+customFieldWithValue = "{\"id\":1,\"name\":\"name\",\"value\":\"\"}"
+testCustomFieldWithValue = TestCase $ assertEqual "Parse CustomField with value failed" refCustomField (decode customFieldWithValue)
+
+customFieldWithOutValue = "{\"id\":1,\"name\":\"name\"}"
+testCustomFieldWithOutValue = TestCase $ assertEqual "Parse CustomField without value failed" refCustomField (decode customFieldWithOutValue)
+
 --decodeIssue
+tests = TestList [TestLabel "test1" test1, TestLabel "test2" test2, TestLabel "test3" test3, TestLabel "test4" test4
+                 , TestLabel "testCustomFieldWithValue" testCustomFieldWithValue, TestLabel "testCustomFieldWithOutValue" testCustomFieldWithOutValue]
 
-main = runTestTT test2 --[test1,test2]
+main = runTestTT tests
