killbill-memoizeit

updates to remove codehaus.jackson; add external payment

5/22/2012 11:43:19 PM

Changes

account/pom.xml 5(+0 -5)

api/pom.xml 4(+2 -2)

catalog/pom.xml 12(+12 -0)

entitlement/pom.xml 12(+0 -12)

invoice/pom.xml 23(+14 -9)

jaxrs/pom.xml 12(+0 -12)

pom.xml 35(+20 -15)

util/pom.xml 16(+8 -8)

Details

account/pom.xml 5(+0 -5)

diff --git a/account/pom.xml b/account/pom.xml
index 86cb9f7..7062746 100644
--- a/account/pom.xml
+++ b/account/pom.xml
@@ -88,11 +88,6 @@
             <artifactId>commons-io</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-mapper-asl</artifactId>
-            <version>1.9.0</version>
-        </dependency>
     </dependencies>
     <build>
         <plugins>
diff --git a/account/src/main/java/com/ning/billing/account/api/DefaultChangedField.java b/account/src/main/java/com/ning/billing/account/api/DefaultChangedField.java
index c979fc6..89a65f6 100644
--- a/account/src/main/java/com/ning/billing/account/api/DefaultChangedField.java
+++ b/account/src/main/java/com/ning/billing/account/api/DefaultChangedField.java
@@ -16,9 +16,8 @@
 
 package com.ning.billing.account.api;
 
-
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import org.joda.time.DateTime;
 
 public class DefaultChangedField implements ChangedField {
diff --git a/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountChangeEvent.java b/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountChangeEvent.java
index 7b4c0d7..84f5995 100644
--- a/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountChangeEvent.java
+++ b/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountChangeEvent.java
@@ -16,6 +16,10 @@
 
 package com.ning.billing.account.api.user;
 
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.ning.billing.account.api.Account;
 import com.ning.billing.account.api.AccountChangeEvent;
 import com.ning.billing.account.api.ChangedField;
@@ -25,11 +29,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonDeserialize;
-
 public class DefaultAccountChangeEvent implements AccountChangeEvent {
 	
 	private final UUID userToken;
diff --git a/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountCreationEvent.java b/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountCreationEvent.java
index 5dabd40..1c20f44 100644
--- a/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountCreationEvent.java
+++ b/account/src/main/java/com/ning/billing/account/api/user/DefaultAccountCreationEvent.java
@@ -16,17 +16,16 @@
 
 package com.ning.billing.account.api.user;
 
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ning.billing.account.api.Account;
 import com.ning.billing.account.api.AccountCreationEvent;
 import com.ning.billing.account.api.AccountData;
-import com.ning.billing.account.api.DefaultAccount;
 import com.ning.billing.catalog.api.Currency;
 
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonProperty;
 import org.joda.time.DateTimeZone;
 
 public class DefaultAccountCreationEvent implements AccountCreationEvent {
diff --git a/account/src/test/java/com/ning/billing/account/api/user/TestEventJson.java b/account/src/test/java/com/ning/billing/account/api/user/TestEventJson.java
index 6518355..7cfe1ba 100644
--- a/account/src/test/java/com/ning/billing/account/api/user/TestEventJson.java
+++ b/account/src/test/java/com/ning/billing/account/api/user/TestEventJson.java
@@ -19,10 +19,8 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
 
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.SerializationConfig;
+import com.ning.billing.util.jackson.ObjectMapper;
 import org.testng.Assert;
-import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
 import com.ning.billing.account.api.AccountChangeEvent;
@@ -31,14 +29,7 @@ import com.ning.billing.account.api.DefaultChangedField;
 import com.ning.billing.account.api.user.DefaultAccountCreationEvent.DefaultAccountData;
 
 public class TestEventJson {
-    
-    private ObjectMapper mapper = new ObjectMapper();
-    
-    @BeforeTest(groups= {"fast"})
-    public void setup() {
-        mapper = new ObjectMapper();
-        mapper.disable(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS);
-    }
+    private final ObjectMapper mapper = new ObjectMapper();
 
     @Test(groups= {"fast"})
     public void testDefaultAccountChangeEvent() throws Exception {
diff --git a/analytics/pom.xml b/analytics/pom.xml
index d368d32..a37a034 100644
--- a/analytics/pom.xml
+++ b/analytics/pom.xml
@@ -31,6 +31,10 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+        </dependency>
+        <dependency>
             <groupId>com.ning.billing</groupId>
             <artifactId>killbill-api</artifactId>
         </dependency>
diff --git a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
index d478f69..d5e1813 100644
--- a/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
+++ b/analytics/src/test/java/com/ning/billing/analytics/api/TestAnalyticsService.java
@@ -279,7 +279,7 @@ public class TestAnalyticsService {
         invoiceCreationNotification = new DefaultInvoiceCreationEvent(invoice.getId(), account.getId(),
                 INVOICE_AMOUNT, ACCOUNT_CURRENCY, clock.getUTCNow(), null);
 
-        paymentInfoNotification = new DefaultPaymentInfoEvent.Builder().setId(UUID.randomUUID()).setPaymentMethod(PAYMENT_METHOD).setCardCountry(CARD_COUNTRY).build();
+        paymentInfoNotification = new DefaultPaymentInfoEvent.Builder().setId(UUID.randomUUID()).setExternalPaymentId("12345abcdef").setPaymentMethod(PAYMENT_METHOD).setCardCountry(CARD_COUNTRY).build();
         final PaymentAttempt paymentAttempt = new DefaultPaymentAttempt(UUID.randomUUID(), invoice.getId(), account.getId(), BigDecimal.TEN,
                 ACCOUNT_CURRENCY, clock.getUTCNow(), clock.getUTCNow(), paymentInfoNotification.getId(), 1, null, null);
         paymentDao.createPaymentAttempt(paymentAttempt, context);

api/pom.xml 4(+2 -2)

diff --git a/api/pom.xml b/api/pom.xml
index 5b8380c..1c26035 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -51,8 +51,8 @@
             <artifactId>config-magic</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-core-asl</artifactId>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
         </dependency>
         <dependency>
             <groupId>commons-lang</groupId>
diff --git a/api/src/main/java/com/ning/billing/payment/api/CreditCardPaymentMethodInfo.java b/api/src/main/java/com/ning/billing/payment/api/CreditCardPaymentMethodInfo.java
index bc3d372..dcffe18 100644
--- a/api/src/main/java/com/ning/billing/payment/api/CreditCardPaymentMethodInfo.java
+++ b/api/src/main/java/com/ning/billing/payment/api/CreditCardPaymentMethodInfo.java
@@ -16,9 +16,8 @@
 
 package com.ning.billing.payment.api;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
-
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
 
 public final class CreditCardPaymentMethodInfo extends PaymentMethodInfo {
     private final String cardHolderName;
diff --git a/api/src/main/java/com/ning/billing/payment/api/Either.java b/api/src/main/java/com/ning/billing/payment/api/Either.java
index c71c5b1..a4ae71f 100644
--- a/api/src/main/java/com/ning/billing/payment/api/Either.java
+++ b/api/src/main/java/com/ning/billing/payment/api/Either.java
@@ -16,8 +16,8 @@
 
 package com.ning.billing.payment.api;
 
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonValue;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonValue;
 
 public abstract class Either<T, V> {
     public static <T, V> Either<T, V> left(T value) {
diff --git a/api/src/main/java/com/ning/billing/payment/api/PaymentInfoEvent.java b/api/src/main/java/com/ning/billing/payment/api/PaymentInfoEvent.java
index c4cabb9..3c40746 100644
--- a/api/src/main/java/com/ning/billing/payment/api/PaymentInfoEvent.java
+++ b/api/src/main/java/com/ning/billing/payment/api/PaymentInfoEvent.java
@@ -23,6 +23,8 @@ import org.joda.time.DateTime;
 import com.ning.billing.util.bus.BusEvent;
 
 public interface PaymentInfoEvent extends Entity, BusEvent {
+    public String getExternalPaymentId();
+
     public BigDecimal getAmount();
 
     public String getBankIdentificationNumber();
diff --git a/api/src/main/java/com/ning/billing/payment/api/PaypalPaymentMethodInfo.java b/api/src/main/java/com/ning/billing/payment/api/PaypalPaymentMethodInfo.java
index 3b2ebed..18f61d2 100644
--- a/api/src/main/java/com/ning/billing/payment/api/PaypalPaymentMethodInfo.java
+++ b/api/src/main/java/com/ning/billing/payment/api/PaypalPaymentMethodInfo.java
@@ -16,12 +16,10 @@
 
 package com.ning.billing.payment.api;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
-
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.google.common.base.Strings;
 
-
 public final class PaypalPaymentMethodInfo extends PaymentMethodInfo {
     public static final String TYPE = "PayPal";
 

catalog/pom.xml 12(+12 -0)

diff --git a/catalog/pom.xml b/catalog/pom.xml
index e6d767f..aee6792 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -48,6 +48,18 @@
             <artifactId>guice</artifactId>
             <scope>provided</scope>
         </dependency>
+        <dependency>
+            <groupId>joda-time</groupId>
+            <artifactId>joda-time</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.skife.config</groupId>
+            <artifactId>config-magic</artifactId>
+        </dependency>
     </dependencies>
      <build>
         <plugins>

entitlement/pom.xml 12(+0 -12)

diff --git a/entitlement/pom.xml b/entitlement/pom.xml
index 808876b..bbf2371 100644
--- a/entitlement/pom.xml
+++ b/entitlement/pom.xml
@@ -63,18 +63,6 @@
             <artifactId>slf4j-log4j12</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-core-asl</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-jaxrs</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-mapper-asl</artifactId>
-        </dependency>
-        <dependency>
             <groupId>org.antlr</groupId>
             <artifactId>stringtemplate</artifactId>
             <scope>runtime</scope>
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/timeline/DefaultRepairEntitlementEvent.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/timeline/DefaultRepairEntitlementEvent.java
index 938f99f..b1cc31c 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/timeline/DefaultRepairEntitlementEvent.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/timeline/DefaultRepairEntitlementEvent.java
@@ -17,13 +17,11 @@ package com.ning.billing.entitlement.api.timeline;
 
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import org.joda.time.DateTime;
 
-import com.ning.billing.entitlement.api.timeline.RepairEntitlementEvent;
-
 public class DefaultRepairEntitlementEvent implements RepairEntitlementEvent {
 
     private final UUID userToken;
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultSubscriptionEvent.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultSubscriptionEvent.java
index 3cf74ec..333cc4e 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultSubscriptionEvent.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/DefaultSubscriptionEvent.java
@@ -17,9 +17,9 @@ package com.ning.billing.entitlement.api.user;
 
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import org.joda.time.DateTime;
 
 import com.ning.billing.entitlement.api.SubscriptionTransitionType;
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransitionData.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransitionData.java
index d5885d5..4a8d90b 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransitionData.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/user/SubscriptionTransitionData.java
@@ -18,8 +18,6 @@ package com.ning.billing.entitlement.api.user;
 
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonProperty;
 import org.joda.time.DateTime;
 
 import com.ning.billing.catalog.api.Plan;
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/AuditedEntitlementDao.java b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/AuditedEntitlementDao.java
index 656a128..b6a2f01 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/AuditedEntitlementDao.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/engine/dao/AuditedEntitlementDao.java
@@ -216,7 +216,7 @@ public class AuditedEntitlementDao implements EntitlementDao {
                 transactional.insertEvent(nextPhase, context);
 
                 Long recordId = transactional.getRecordId(nextPhase.getId().toString());
-                EntityAudit audit = new EntityAudit(TableName.ENTITLEMENT_EVENTS, recordId, ChangeType.INSERT);
+                EntityAudit audit = new EntityAudit(TableName.SUBSCRIPTION_EVENTS, recordId, ChangeType.INSERT);
                 transactional.insertAuditFromTransaction(audit, context);
 
                 recordFutureNotificationFromTransaction(transactional,
@@ -286,7 +286,7 @@ public class AuditedEntitlementDao implements EntitlementDao {
                 for (final EntitlementEvent cur : initialEvents) {
                     eventsDaoFromSameTransaction.insertEvent(cur, context);
                     Long recordId = eventsDaoFromSameTransaction.getRecordId(cur.getId().toString());
-                    audits.add(new EntityAudit(TableName.ENTITLEMENT_EVENTS, recordId, ChangeType.INSERT));
+                    audits.add(new EntityAudit(TableName.SUBSCRIPTION_EVENTS, recordId, ChangeType.INSERT));
                     recordFutureNotificationFromTransaction(transactional,
                             cur.getEffectiveDate(),
                             new EntitlementNotificationKey(cur.getId()));
@@ -311,7 +311,7 @@ public class AuditedEntitlementDao implements EntitlementDao {
                 for (final EntitlementEvent cur : recreateEvents) {
                     transactional.insertEvent(cur, context);
                     Long recordId = transactional.getRecordId(cur.getId().toString());
-                    audits.add(new EntityAudit(TableName.ENTITLEMENT_EVENTS, recordId, ChangeType.INSERT));
+                    audits.add(new EntityAudit(TableName.SUBSCRIPTION_EVENTS, recordId, ChangeType.INSERT));
                     recordFutureNotificationFromTransaction(transactional,
                             cur.getEffectiveDate(),
                             new EntitlementNotificationKey(cur.getId()));
@@ -338,7 +338,7 @@ public class AuditedEntitlementDao implements EntitlementDao {
                 String cancelEventId = cancelEvent.getId().toString();
 
                 Long recordId = transactional.getRecordId(cancelEventId);
-                EntityAudit audit = new EntityAudit(TableName.ENTITLEMENT_EVENTS, recordId, ChangeType.INSERT);
+                EntityAudit audit = new EntityAudit(TableName.SUBSCRIPTION_EVENTS, recordId, ChangeType.INSERT);
                 transactional.insertAuditFromTransaction(audit, context);
 
                 recordFutureNotificationFromTransaction(transactional,
@@ -377,12 +377,12 @@ public class AuditedEntitlementDao implements EntitlementDao {
                     String cancelledEventId = cancelledEvent.getId().toString();
                     transactional.unactiveEvent(cancelledEventId, context);
                     Long cancelledRecordId = transactional.getRecordId(cancelledEventId);
-                    eventAudits.add(new EntityAudit(TableName.ENTITLEMENT_EVENTS, cancelledRecordId, ChangeType.UPDATE));
+                    eventAudits.add(new EntityAudit(TableName.SUBSCRIPTION_EVENTS, cancelledRecordId, ChangeType.UPDATE));
 
                     for (final EntitlementEvent cur : uncancelEvents) {
                         transactional.insertEvent(cur, context);
                         Long recordId = transactional.getRecordId(cur.getId().toString());
-                        eventAudits.add(new EntityAudit(TableName.ENTITLEMENT_EVENTS, recordId, ChangeType.INSERT));
+                        eventAudits.add(new EntityAudit(TableName.SUBSCRIPTION_EVENTS, recordId, ChangeType.INSERT));
                         recordFutureNotificationFromTransaction(transactional,
                                 cur.getEffectiveDate(),
                                 new EntitlementNotificationKey(cur.getId()));
@@ -407,7 +407,7 @@ public class AuditedEntitlementDao implements EntitlementDao {
                 for (final EntitlementEvent cur : changeEvents) {
                     transactional.insertEvent(cur, context);
                     Long recordId = transactional.getRecordId(cur.getId().toString());
-                    eventAudits.add(new EntityAudit(TableName.ENTITLEMENT_EVENTS, recordId, ChangeType.INSERT));
+                    eventAudits.add(new EntityAudit(TableName.SUBSCRIPTION_EVENTS, recordId, ChangeType.INSERT));
 
                     recordFutureNotificationFromTransaction(transactional,
                             cur.getEffectiveDate(),
@@ -455,7 +455,7 @@ public class AuditedEntitlementDao implements EntitlementDao {
             String eventId = futureEvent.getId().toString();
             dao.unactiveEvent(eventId, context);
             Long recordId = dao.getRecordId(eventId);
-            EntityAudit audit = new EntityAudit(TableName.ENTITLEMENT_EVENTS, recordId, ChangeType.UPDATE);
+            EntityAudit audit = new EntityAudit(TableName.SUBSCRIPTION_EVENTS, recordId, ChangeType.UPDATE);
             dao.insertAuditFromTransaction(audit, context);
         }
     }
@@ -576,7 +576,7 @@ public class AuditedEntitlementDao implements EntitlementDao {
                         for (final EntitlementEvent curEvent : curSubscription.getInitialEvents()) {
                             transactional.insertEvent(curEvent, context);
                             recordId = transactional.getRecordId(curEvent.getId().toString());
-                            audits.add(new EntityAudit(TableName.ENTITLEMENT_EVENTS, recordId, ChangeType.INSERT));
+                            audits.add(new EntityAudit(TableName.SUBSCRIPTION_EVENTS, recordId, ChangeType.INSERT));
 
                             recordFutureNotificationFromTransaction(transactional,
                                     curEvent.getEffectiveDate(),
diff --git a/entitlement/src/main/resources/com/ning/billing/entitlement/ddl.sql b/entitlement/src/main/resources/com/ning/billing/entitlement/ddl.sql
index f86f170..f69a20d 100644
--- a/entitlement/src/main/resources/com/ning/billing/entitlement/ddl.sql
+++ b/entitlement/src/main/resources/com/ning/billing/entitlement/ddl.sql
@@ -1,6 +1,7 @@
 DROP TABLE IF EXISTS events;
 DROP TABLE IF EXISTS entitlement_events;
-CREATE TABLE entitlement_events (
+DROP TABLE IF EXISTS subscription_events;
+CREATE TABLE subscription_events (
     record_id int(11) unsigned NOT NULL AUTO_INCREMENT,
     id char(36) NOT NULL,
     event_type varchar(9) NOT NULL,
@@ -20,9 +21,9 @@ CREATE TABLE entitlement_events (
     updated_date datetime NOT NULL,
     PRIMARY KEY(record_id)
 ) ENGINE=innodb;
-CREATE UNIQUE INDEX entitlement_events_id ON entitlement_events(id);
-CREATE INDEX idx_ent_1 ON entitlement_events(subscription_id,is_active,effective_date);
-CREATE INDEX idx_ent_2 ON entitlement_events(subscription_id,effective_date,created_date,requested_date,id);
+CREATE UNIQUE INDEX subscription_events_id ON subscription_events(id);
+CREATE INDEX idx_ent_1 ON subscription_events(subscription_id, is_active, effective_date);
+CREATE INDEX idx_ent_2 ON subscription_events(subscription_id, effective_date, created_date, requested_date,id);
 
 DROP TABLE IF EXISTS subscriptions;
 CREATE TABLE subscriptions (
diff --git a/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/EntitlementEventSqlDao.sql.stg b/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/EntitlementEventSqlDao.sql.stg
index f4472f9..09bf42d 100644
--- a/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/EntitlementEventSqlDao.sql.stg
+++ b/entitlement/src/main/resources/com/ning/billing/entitlement/engine/dao/EntitlementEventSqlDao.sql.stg
@@ -21,14 +21,14 @@ fields(prefix) ::= <<
 
 getEventById() ::= <<
   select record_id, <fields()>
-  from entitlement_events
+  from subscription_events
   where
       id = :id
   ;
 >>
 
 insertEvent() ::= <<
-    insert into entitlement_events (<fields()>)
+    insert into subscription_events (<fields()>)
     values (
     :id
     , :eventType
@@ -50,7 +50,7 @@ insertEvent() ::= <<
 >>
 
 updateVersion() ::= <<
-    update entitlement_events
+    update subscription_events
     set
       current_version = :currentVersion
     where
@@ -59,7 +59,7 @@ updateVersion() ::= <<
 >>
 
 unactiveEvent() ::= <<
-    update entitlement_events
+    update subscription_events
     set
       is_active = 0
       , updated_by = :userName
@@ -70,7 +70,7 @@ unactiveEvent() ::= <<
 >>
 
 reactiveEvent() ::= <<
-    update entitlement_events
+    update subscription_events
     set
       is_active = 1
       , updated_by = :userName
@@ -83,7 +83,7 @@ reactiveEvent() ::= <<
 
 getFutureActiveEventForSubscription() ::= <<
     select record_id, <fields()>
-    from entitlement_events
+    from subscription_events
     where
       subscription_id = :subscriptionId
       and is_active = 1
@@ -98,7 +98,7 @@ getFutureActiveEventForSubscription() ::= <<
 
 getEventsForSubscription() ::= <<
     select record_id, <fields()>
-    from entitlement_events
+    from subscription_events
     where
       subscription_id = :subscriptionId
     order by
@@ -111,7 +111,7 @@ getEventsForSubscription() ::= <<
 
 getRecordId() ::= <<
     SELECT record_id
-    FROM entitlement_events
+    FROM subscription_events
     WHERE id = :id;
 >>
 
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/TestEventJson.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/TestEventJson.java
index 49e9ed7..e50fd41 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/TestEventJson.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/TestEventJson.java
@@ -17,11 +17,9 @@ package com.ning.billing.entitlement.api;
 
 import java.util.UUID;
 
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.SerializationConfig;
+import com.ning.billing.util.jackson.ObjectMapper;
 import org.joda.time.DateTime;
 import org.testng.Assert;
-import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
 import com.ning.billing.entitlement.api.timeline.DefaultRepairEntitlementEvent;
@@ -31,15 +29,7 @@ import com.ning.billing.entitlement.api.user.Subscription.SubscriptionState;
 import com.ning.billing.entitlement.api.user.SubscriptionEvent;
 
 public class TestEventJson {
-
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    @BeforeTest(groups= {"fast"})
-    public void setup() {
-        mapper = new ObjectMapper();
-        mapper.disable(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS);
-    }
+    private final ObjectMapper mapper = new ObjectMapper();
 
     @Test(groups= {"fast"})
     public void testSubscriptionEvent() throws Exception {
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoSql.java b/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoSql.java
index c197434..71f3168 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoSql.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/engine/dao/MockEntitlementDaoSql.java
@@ -61,7 +61,7 @@ public class MockEntitlementDaoSql extends AuditedEntitlementDao implements Mock
 
     public static interface ResetSqlDao extends Transactional<ResetSqlDao>, CloseMe {
 
-        @SqlUpdate("truncate table entitlement_events")
+        @SqlUpdate("truncate table subscription_events")
         public void resetEvents();
 
         @SqlUpdate("truncate table subscriptions")

invoice/pom.xml 23(+14 -9)

diff --git a/invoice/pom.xml b/invoice/pom.xml
index 6b5a555..1465c98 100644
--- a/invoice/pom.xml
+++ b/invoice/pom.xml
@@ -48,19 +48,24 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-core-asl</artifactId>
-            <version>1.9.5</version>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-jaxrs</artifactId>
-            <version>1.9.5</version>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-mapper-asl</artifactId>
-            <version>1.9.5</version>
+            <groupId>joda-time</groupId>
+            <artifactId>joda-time</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.skife.config</groupId>
+            <artifactId>config-magic</artifactId>
         </dependency>
        <!-- TEST SCOPE -->
         <dependency>
diff --git a/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultEmptyInvoiceEvent.java b/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultEmptyInvoiceEvent.java
index 6ce30f6..97b32ae 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultEmptyInvoiceEvent.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultEmptyInvoiceEvent.java
@@ -13,23 +13,22 @@
  * License for the specific language governing permissions and limitations
  * under the License.
  */
+
 package com.ning.billing.invoice.api.user;
 
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import org.joda.time.DateTime;
 
 import com.ning.billing.invoice.api.EmptyInvoiceEvent;
 
 public class DefaultEmptyInvoiceEvent implements EmptyInvoiceEvent {
-
     private final UUID accountId;
     private final DateTime processingDate;
     private final UUID userToken;
-
     
     @JsonCreator
     public DefaultEmptyInvoiceEvent(@JsonProperty("accountId") final UUID accountId,
diff --git a/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceCreationEvent.java b/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceCreationEvent.java
index de89f16..7ba10fb 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceCreationEvent.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/api/user/DefaultInvoiceCreationEvent.java
@@ -19,14 +19,13 @@ package com.ning.billing.invoice.api.user;
 import java.math.BigDecimal;
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import org.joda.time.DateTime;
 
 import com.ning.billing.catalog.api.Currency;
 import com.ning.billing.invoice.api.InvoiceCreationEvent;
-import com.ning.billing.util.bus.BusEvent.BusEventType;
 
 public class DefaultInvoiceCreationEvent implements InvoiceCreationEvent {
 	
diff --git a/invoice/src/test/java/com/ning/billing/invoice/api/user/TestEventJson.java b/invoice/src/test/java/com/ning/billing/invoice/api/user/TestEventJson.java
index eb991dd..f2d9282 100644
--- a/invoice/src/test/java/com/ning/billing/invoice/api/user/TestEventJson.java
+++ b/invoice/src/test/java/com/ning/billing/invoice/api/user/TestEventJson.java
@@ -18,11 +18,9 @@ package com.ning.billing.invoice.api.user;
 import java.math.BigDecimal;
 import java.util.UUID;
 
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.SerializationConfig;
+import com.ning.billing.util.jackson.ObjectMapper;
 import org.joda.time.DateTime;
 import org.testng.Assert;
-import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
 import com.ning.billing.catalog.api.Currency;
@@ -30,14 +28,7 @@ import com.ning.billing.invoice.api.EmptyInvoiceEvent;
 import com.ning.billing.invoice.api.InvoiceCreationEvent;
 
 public class TestEventJson {
-
-    private ObjectMapper mapper = new ObjectMapper();
-
-    @BeforeTest(groups= {"fast"})
-    public void setup() {
-        mapper = new ObjectMapper();
-        mapper.disable(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS);
-    }
+    private final ObjectMapper mapper = new ObjectMapper();
 
     @Test(groups= {"fast"})
     public void testInvoiceCreationEvent() throws Exception {

jaxrs/pom.xml 12(+0 -12)

diff --git a/jaxrs/pom.xml b/jaxrs/pom.xml
index caa3692..4f7a04a 100644
--- a/jaxrs/pom.xml
+++ b/jaxrs/pom.xml
@@ -62,18 +62,6 @@
             <artifactId>slf4j-log4j12</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-core-asl</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-jaxrs</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-mapper-asl</artifactId>
-        </dependency>
-        <dependency>
             <groupId>org.testng</groupId>
             <artifactId>testng</artifactId>
             <scope>test</scope>
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountJson.java
index 82645a5..7d3a663 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountJson.java
@@ -16,9 +16,9 @@
 
 package com.ning.billing.jaxrs.json;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonView;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonView;
 import org.joda.time.DateTimeZone;
 
 import com.ning.billing.account.api.Account;
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountJsonSimple.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountJsonSimple.java
index d7e1b2d..eef25be 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountJsonSimple.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountJsonSimple.java
@@ -15,9 +15,9 @@
  */
 package com.ning.billing.jaxrs.json;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonView;
+import com.fasterxml.jackson.annotation.JsonView;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
 
 public class AccountJsonSimple {
 
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java
index 881745a..c9f627a 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/AccountTimelineJson.java
@@ -22,9 +22,9 @@ import java.util.List;
 import java.util.Set;
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonView;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonView;
 
 import com.ning.billing.account.api.Account;
 import com.ning.billing.entitlement.api.timeline.BundleTimeline;
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BundleJsonSimple.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BundleJsonSimple.java
index 8c2d836..b20f435 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BundleJsonSimple.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BundleJsonSimple.java
@@ -15,9 +15,9 @@
  */
 package com.ning.billing.jaxrs.json;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonView;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonView;
 
 public class BundleJsonSimple {
     
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BundleJsonWithSubscriptions.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BundleJsonWithSubscriptions.java
index fa45cdd..10c90db 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BundleJsonWithSubscriptions.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BundleJsonWithSubscriptions.java
@@ -19,9 +19,9 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonView;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonView;
 
 import com.ning.billing.entitlement.api.timeline.BundleTimeline;
 import com.ning.billing.entitlement.api.timeline.SubscriptionTimeline;
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BundleTimelineJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BundleTimelineJson.java
index 099d837..11fc814 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BundleTimelineJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/BundleTimelineJson.java
@@ -18,9 +18,9 @@ package com.ning.billing.jaxrs.json;
 
 import java.util.List;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonView;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonView;
 
 public class BundleTimelineJson {
 
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CustomFieldJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CustomFieldJson.java
index cb9e36b..88d1ae3 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CustomFieldJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/CustomFieldJson.java
@@ -15,7 +15,7 @@
  */
 package com.ning.billing.jaxrs.json;
 
-import org.codehaus.jackson.annotate.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonCreator;
 
 import com.ning.billing.util.customfield.CustomField;
 
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonSimple.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonSimple.java
index be2516d..e96179e 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonSimple.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonSimple.java
@@ -18,9 +18,9 @@ package com.ning.billing.jaxrs.json;
 
 import java.math.BigDecimal;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonView;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonView;
 import org.joda.time.DateTime;
 
 import com.ning.billing.invoice.api.Invoice;
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithBundleKeys.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithBundleKeys.java
index cc15072..98e2844 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithBundleKeys.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/InvoiceJsonWithBundleKeys.java
@@ -1,8 +1,8 @@
 package com.ning.billing.jaxrs.json;
 import java.math.BigDecimal;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import org.joda.time.DateTime;
 
 import com.ning.billing.invoice.api.Invoice;
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonSimple.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonSimple.java
index c0a6d7c..93cd5a0 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonSimple.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonSimple.java
@@ -19,9 +19,9 @@ package com.ning.billing.jaxrs.json;
 import java.math.BigDecimal;
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonView;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonView;
 import org.joda.time.DateTime;
 
 import com.ning.billing.util.clock.DefaultClock;
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonWithBundleKeys.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonWithBundleKeys.java
index e322a59..bd11782 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonWithBundleKeys.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/PaymentJsonWithBundleKeys.java
@@ -19,8 +19,8 @@ package com.ning.billing.jaxrs.json;
 import java.math.BigDecimal;
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import org.joda.time.DateTime;
 
 public class PaymentJsonWithBundleKeys extends PaymentJsonSimple {
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonNoEvents.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonNoEvents.java
index 95a5e09..c28c6b4 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonNoEvents.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonNoEvents.java
@@ -20,9 +20,9 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonView;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonView;
 import org.joda.time.DateTime;
 
 import com.ning.billing.catalog.api.PlanPhaseSpecifier;
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonSimple.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonSimple.java
index 5fb782e..7d1d018 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonSimple.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonSimple.java
@@ -15,9 +15,9 @@
  */
 package com.ning.billing.jaxrs.json;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonView;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonView;
 
 public class SubscriptionJsonSimple {
     
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonWithEvents.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonWithEvents.java
index be5ba2c..27f05e4 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonWithEvents.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/SubscriptionJsonWithEvents.java
@@ -19,9 +19,9 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.map.annotate.JsonView;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonView;
 import org.joda.time.DateTime;
 
 import com.ning.billing.catalog.api.PlanPhaseSpecifier;
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/TagDefinitionJson.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/TagDefinitionJson.java
index 25ef04c..d620d0f 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/json/TagDefinitionJson.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/json/TagDefinitionJson.java
@@ -15,8 +15,8 @@
  */
 package com.ning.billing.jaxrs.json;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonProperty;
 
 public class TagDefinitionJson {
     
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
index b541f5a..33be386 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
@@ -64,7 +64,7 @@ import com.ning.billing.invoice.api.Invoice;
 import com.ning.billing.invoice.api.InvoiceUserApi;
 import com.ning.billing.jaxrs.json.AccountJson;
 import com.ning.billing.jaxrs.json.AccountTimelineJson;
-import com.ning.billing.jaxrs.json.BundleJsonNoSubsciptions;
+import com.ning.billing.jaxrs.json.BundleJsonNoSubscriptions;
 import com.ning.billing.jaxrs.json.CustomFieldJson;
 import com.ning.billing.jaxrs.util.Context;
 import com.ning.billing.jaxrs.util.JaxrsUriBuilder;
@@ -144,10 +144,10 @@ public class AccountResource implements BaseJaxrsResource {
             accountApi.getAccountById(uuid);
 
             List<SubscriptionBundle> bundles = entitlementApi.getBundlesForAccount(uuid);
-            Collection<BundleJsonNoSubsciptions> result = Collections2.transform(bundles, new Function<SubscriptionBundle, BundleJsonNoSubsciptions>() {
+            Collection<BundleJsonNoSubscriptions> result = Collections2.transform(bundles, new Function<SubscriptionBundle, BundleJsonNoSubscriptions>() {
                 @Override
-                public BundleJsonNoSubsciptions apply(SubscriptionBundle input) {
-                    return new BundleJsonNoSubsciptions(input);
+                public BundleJsonNoSubscriptions apply(SubscriptionBundle input) {
+                    return new BundleJsonNoSubscriptions(input);
                 }
             });
             return Response.status(Status.OK).entity(result).build();
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java
index e62d48e..662566a 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java
@@ -44,7 +44,7 @@ import com.ning.billing.entitlement.api.user.EntitlementUserApi;
 import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
 import com.ning.billing.entitlement.api.user.Subscription;
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
-import com.ning.billing.jaxrs.json.BundleJsonNoSubsciptions;
+import com.ning.billing.jaxrs.json.BundleJsonNoSubscriptions;
 import com.ning.billing.jaxrs.json.SubscriptionJsonNoEvents;
 import com.ning.billing.jaxrs.util.Context;
 import com.ning.billing.jaxrs.util.JaxrsUriBuilder;
@@ -71,7 +71,7 @@ public class BundleResource implements BaseJaxrsResource {
     public Response getBundle(@PathParam("bundleId") final String bundleId) throws EntitlementUserApiException {
         try {
             SubscriptionBundle bundle = entitlementApi.getBundleFromId(UUID.fromString(bundleId));
-            BundleJsonNoSubsciptions json = new BundleJsonNoSubsciptions(bundle);
+            BundleJsonNoSubscriptions json = new BundleJsonNoSubscriptions(bundle);
             return Response.status(Status.OK).entity(json).build();
         } catch (EntitlementUserApiException e) {
             if (e.getCode() == ErrorCode.ENT_GET_INVALID_BUNDLE_ID.getCode()) {
@@ -88,7 +88,7 @@ public class BundleResource implements BaseJaxrsResource {
     public Response getBundleByKey(@QueryParam(QUERY_EXTERNAL_KEY) final String externalKey) throws EntitlementUserApiException {
         try {
             SubscriptionBundle bundle = entitlementApi.getBundleForKey(externalKey);
-            BundleJsonNoSubsciptions json = new BundleJsonNoSubsciptions(bundle);
+            BundleJsonNoSubscriptions json = new BundleJsonNoSubscriptions(bundle);
             return Response.status(Status.OK).entity(json).build();
         } catch (EntitlementUserApiException e) {
             if (e.getCode() == ErrorCode.ENT_GET_INVALID_BUNDLE_KEY.getCode()) {
@@ -103,7 +103,7 @@ public class BundleResource implements BaseJaxrsResource {
     @POST
     @Consumes(APPLICATION_JSON)
     @Produces(APPLICATION_JSON)
-    public Response createBundle(final BundleJsonNoSubsciptions json,
+    public Response createBundle(final BundleJsonNoSubscriptions json,
             @HeaderParam(HDR_CREATED_BY) final String createdBy,
             @HeaderParam(HDR_REASON) final String reason,
             @HeaderParam(HDR_COMMENT) final String comment) {
diff --git a/junction/src/test/java/com/ning/billing/junction/blocking/TestBlockingChecker.java b/junction/src/test/java/com/ning/billing/junction/blocking/TestBlockingChecker.java
index 0bff4da..1d70eac 100644
--- a/junction/src/test/java/com/ning/billing/junction/blocking/TestBlockingChecker.java
+++ b/junction/src/test/java/com/ning/billing/junction/blocking/TestBlockingChecker.java
@@ -19,7 +19,6 @@ package com.ning.billing.junction.blocking;
 import java.util.SortedSet;
 import java.util.UUID;
 
-import org.apache.commons.lang.NotImplementedException;
 import org.testng.Assert;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -42,7 +41,6 @@ import com.ning.billing.mock.BrainDeadProxyFactory;
 import com.ning.billing.mock.BrainDeadProxyFactory.ZombieControl;
 import com.ning.billing.util.clock.Clock;
 
-
 public class TestBlockingChecker {
    
     private BlockingState bundleState;
@@ -75,17 +73,17 @@ public class TestBlockingChecker {
 
         @Override
         public SortedSet<BlockingState> getBlockingHistoryFor(Blockable overdueable) {
-            throw new NotImplementedException();
+            throw new UnsupportedOperationException();
         }
 
         @Override
         public SortedSet<BlockingState> getBlockingHistoryFor(UUID overdueableId) {
-            throw new NotImplementedException();
+            throw new UnsupportedOperationException();
         }
 
         @Override
         public <T extends Blockable> void setBlockingState(BlockingState state, Clock clock) {
-            throw new NotImplementedException();
+            throw new UnsupportedOperationException();
         }
         
     };
diff --git a/junction/src/test/java/com/ning/billing/junction/plumbing/billing/MockSubscriptionEvent.java b/junction/src/test/java/com/ning/billing/junction/plumbing/billing/MockSubscriptionEvent.java
index cbba255..90f610f 100644
--- a/junction/src/test/java/com/ning/billing/junction/plumbing/billing/MockSubscriptionEvent.java
+++ b/junction/src/test/java/com/ning/billing/junction/plumbing/billing/MockSubscriptionEvent.java
@@ -17,15 +17,14 @@ package com.ning.billing.junction.plumbing.billing;
 
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import org.joda.time.DateTime;
 
 import com.ning.billing.entitlement.api.SubscriptionTransitionType;
 import com.ning.billing.entitlement.api.user.Subscription.SubscriptionState;
 import com.ning.billing.entitlement.api.user.SubscriptionEvent;
-import com.ning.billing.util.bus.BusEvent.BusEventType;
 
 public class MockSubscriptionEvent implements SubscriptionEvent {
 
diff --git a/overdue/src/main/java/com/ning/billing/overdue/api/DefaultOverdueUserApi.java b/overdue/src/main/java/com/ning/billing/overdue/api/DefaultOverdueUserApi.java
index 83487ea..1050c57 100644
--- a/overdue/src/main/java/com/ning/billing/overdue/api/DefaultOverdueUserApi.java
+++ b/overdue/src/main/java/com/ning/billing/overdue/api/DefaultOverdueUserApi.java
@@ -16,12 +16,9 @@
 
 package com.ning.billing.overdue.api;
 
-import org.apache.commons.lang.NotImplementedException;
-
 import com.google.inject.Inject;
 import com.ning.billing.ErrorCode;
 import com.ning.billing.catalog.api.CatalogService;
-import com.ning.billing.entitlement.api.user.EntitlementUserApiException;
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.junction.api.Blockable;
 import com.ning.billing.junction.api.BlockingApi;
@@ -72,7 +69,7 @@ public class DefaultOverdueUserApi implements OverdueUserApi {
     @Override
     public <T extends Blockable> void setOverrideBillingStateForAccount(
             T overdueable, BillingState<T> state) {
-        throw new NotImplementedException();
+        throw new UnsupportedOperationException();
     }
     
 }
diff --git a/overdue/src/main/java/com/ning/billing/overdue/applicator/OverdueStateApplicator.java b/overdue/src/main/java/com/ning/billing/overdue/applicator/OverdueStateApplicator.java
index abd4e0a..52fe5e4 100644
--- a/overdue/src/main/java/com/ning/billing/overdue/applicator/OverdueStateApplicator.java
+++ b/overdue/src/main/java/com/ning/billing/overdue/applicator/OverdueStateApplicator.java
@@ -16,7 +16,6 @@
 
 package com.ning.billing.overdue.applicator;
 
-import org.apache.commons.lang.NotImplementedException;
 import org.joda.time.DateTime;
 import org.joda.time.Period;
 
diff --git a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentErrorEvent.java b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentErrorEvent.java
index a51d63d..15e0d7b 100644
--- a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentErrorEvent.java
+++ b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentErrorEvent.java
@@ -17,16 +17,12 @@
 package com.ning.billing.payment.api;
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonProperty;
-import org.codehaus.jackson.annotate.JsonTypeInfo;
-import org.codehaus.jackson.annotate.JsonTypeInfo.Id;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
 
-import com.ning.billing.util.bus.BusEvent;
-import com.ning.billing.util.bus.BusEvent.BusEventType;
-
-@JsonTypeInfo(use = Id.NAME, property = "error")
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "error")
 public class DefaultPaymentErrorEvent implements PaymentErrorEvent {
 	
     private final String type;
diff --git a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentInfoEvent.java b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentInfoEvent.java
index 02b7299..6bf703b 100644
--- a/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentInfoEvent.java
+++ b/payment/src/main/java/com/ning/billing/payment/api/DefaultPaymentInfoEvent.java
@@ -19,15 +19,16 @@ package com.ning.billing.payment.api;
 import java.math.BigDecimal;
 import java.util.UUID;
 
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.ning.billing.util.entity.EntityBase;
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonProperty;
 import org.joda.time.DateTime;
 
 import com.google.common.base.Objects;
 
 public class DefaultPaymentInfoEvent extends EntityBase implements PaymentInfoEvent {
+    private final String externalPaymentId;
     private final BigDecimal amount;
     private final BigDecimal refundAmount;
     private final String paymentNumber;
@@ -44,20 +45,22 @@ public class DefaultPaymentInfoEvent extends EntityBase implements PaymentInfoEv
 
     @JsonCreator
     public DefaultPaymentInfoEvent(@JsonProperty("id") UUID id,
-                       @JsonProperty("amount") BigDecimal amount,
-                       @JsonProperty("refundAmount") BigDecimal refundAmount,
-                       @JsonProperty("bankIdentificationNumber") String bankIdentificationNumber,
-                       @JsonProperty("paymentNumber") String paymentNumber,
-                       @JsonProperty("status") String status,
-                       @JsonProperty("type") String type,
-                       @JsonProperty("referenceId") String referenceId,
-                       @JsonProperty("paymentMethodId") String paymentMethodId,
-                       @JsonProperty("paymentMethod") String paymentMethod,
-                       @JsonProperty("cardType") String cardType,
-                       @JsonProperty("cardCountry") String cardCountry,
-                       @JsonProperty("userToken") UUID userToken,
-                       @JsonProperty("effectiveDate") DateTime effectiveDate) {
+                                   @JsonProperty("externalPaymentId") String externalPaymentId,
+                                   @JsonProperty("amount") BigDecimal amount,
+                                   @JsonProperty("refundAmount") BigDecimal refundAmount,
+                                   @JsonProperty("bankIdentificationNumber") String bankIdentificationNumber,
+                                   @JsonProperty("paymentNumber") String paymentNumber,
+                                   @JsonProperty("status") String status,
+                                   @JsonProperty("type") String type,
+                                   @JsonProperty("referenceId") String referenceId,
+                                   @JsonProperty("paymentMethodId") String paymentMethodId,
+                                   @JsonProperty("paymentMethod") String paymentMethod,
+                                   @JsonProperty("cardType") String cardType,
+                                   @JsonProperty("cardCountry") String cardCountry,
+                                   @JsonProperty("userToken") UUID userToken,
+                                   @JsonProperty("effectiveDate") DateTime effectiveDate) {
         super(id);
+        this.externalPaymentId = externalPaymentId;
         this.amount = amount;
         this.refundAmount = refundAmount;
         this.bankIdentificationNumber = bankIdentificationNumber;
@@ -75,6 +78,7 @@ public class DefaultPaymentInfoEvent extends EntityBase implements PaymentInfoEv
 
     public DefaultPaymentInfoEvent(DefaultPaymentInfoEvent src) {
         this(src.id,
+             src.externalPaymentId,
              src.amount,
              src.refundAmount,
              src.bankIdentificationNumber,
@@ -106,6 +110,11 @@ public class DefaultPaymentInfoEvent extends EntityBase implements PaymentInfoEv
     }
 
     @Override
+    public String getExternalPaymentId() {
+        return externalPaymentId;
+    }
+
+    @Override
     public BigDecimal getAmount() {
         return amount;
     }
@@ -167,6 +176,7 @@ public class DefaultPaymentInfoEvent extends EntityBase implements PaymentInfoEv
 
     public static class Builder {
         private UUID id;
+        private String externalPaymentId;
         private BigDecimal amount;
         private BigDecimal refundAmount;
         private String paymentNumber;
@@ -186,6 +196,7 @@ public class DefaultPaymentInfoEvent extends EntityBase implements PaymentInfoEv
 
         public Builder(DefaultPaymentInfoEvent src) {
             this.id = src.id;
+            this.externalPaymentId = src.externalPaymentId;
             this.amount = src.amount;
             this.refundAmount = src.refundAmount;
             this.paymentNumber = src.paymentNumber;
@@ -206,6 +217,11 @@ public class DefaultPaymentInfoEvent extends EntityBase implements PaymentInfoEv
             return this;
         }
 
+        public Builder setExternalPaymentId(String externalPaymentId) {
+            this.externalPaymentId = externalPaymentId;
+            return this;
+        }
+
         public Builder setAmount(BigDecimal amount) {
             this.amount = amount;
             return this;
@@ -273,6 +289,7 @@ public class DefaultPaymentInfoEvent extends EntityBase implements PaymentInfoEv
 
         public PaymentInfoEvent build() {
             return new DefaultPaymentInfoEvent(id,
+                                   externalPaymentId,
                                    amount,
                                    refundAmount,
                                    bankIdentificationNumber,
@@ -292,6 +309,7 @@ public class DefaultPaymentInfoEvent extends EntityBase implements PaymentInfoEv
     @Override
     public int hashCode() {
         return Objects.hashCode(id,
+                                externalPaymentId,
                                 amount,
                                 refundAmount,
                                 bankIdentificationNumber,
@@ -313,6 +331,7 @@ public class DefaultPaymentInfoEvent extends EntityBase implements PaymentInfoEv
 
         final DefaultPaymentInfoEvent that = (DefaultPaymentInfoEvent) o;
 
+        if (!externalPaymentId.equals(that.externalPaymentId)) return false;
         if (amount != null ? !(amount.compareTo(that.amount) == 0) : that.amount != null) return false;
         if (bankIdentificationNumber != null ? !bankIdentificationNumber.equals(that.bankIdentificationNumber) : that.bankIdentificationNumber != null)
             return false;
diff --git a/payment/src/main/java/com/ning/billing/payment/dao/PaymentHistoryBinder.java b/payment/src/main/java/com/ning/billing/payment/dao/PaymentHistoryBinder.java
index 2ec9fc7..56f9026 100644
--- a/payment/src/main/java/com/ning/billing/payment/dao/PaymentHistoryBinder.java
+++ b/payment/src/main/java/com/ning/billing/payment/dao/PaymentHistoryBinder.java
@@ -45,18 +45,19 @@ public @interface PaymentHistoryBinder {
 
                     PaymentInfoEvent paymentInfo = history.getEntity();
                     q.bind("id", paymentInfo.getId().toString());
+                    q.bind("externalPaymentId", paymentInfo.getExternalPaymentId());
                     q.bind("amount", paymentInfo.getAmount());
-                    q.bind("refund_amount", paymentInfo.getRefundAmount());
-                    q.bind("payment_number", paymentInfo.getPaymentNumber());
-                    q.bind("bank_identification_number", paymentInfo.getBankIdentificationNumber());
+                    q.bind("refundAmount", paymentInfo.getRefundAmount());
+                    q.bind("paymentNumber", paymentInfo.getPaymentNumber());
+                    q.bind("bankIdentificationNumber", paymentInfo.getBankIdentificationNumber());
                     q.bind("status", paymentInfo.getStatus());
-                    q.bind("payment_type", paymentInfo.getType());
-                    q.bind("reference_id", paymentInfo.getReferenceId());
-                    q.bind("payment_method_id", paymentInfo.getPaymentMethodId());
-                    q.bind("payment_method", paymentInfo.getPaymentMethod());
-                    q.bind("card_type", paymentInfo.getCardType());
-                    q.bind("card_country", paymentInfo.getCardCountry());
-                    q.bind("effective_date", getDate(paymentInfo.getEffectiveDate()));
+                    q.bind("paymentType", paymentInfo.getType());
+                    q.bind("referenceId", paymentInfo.getReferenceId());
+                    q.bind("paymentMethodId", paymentInfo.getPaymentMethodId());
+                    q.bind("paymentMethod", paymentInfo.getPaymentMethod());
+                    q.bind("cardType", paymentInfo.getCardType());
+                    q.bind("cardCountry", paymentInfo.getCardCountry());
+                    q.bind("effectiveDate", getDate(paymentInfo.getEffectiveDate()));
                 }
             };
         }
diff --git a/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java b/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java
index bdd9829..7c6768c 100644
--- a/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java
+++ b/payment/src/main/java/com/ning/billing/payment/dao/PaymentSqlDao.java
@@ -49,13 +49,13 @@ import com.ning.billing.payment.api.PaymentInfoEvent;
 @RegisterMapper(PaymentSqlDao.PaymentInfoMapper.class)
 public interface PaymentSqlDao extends Transactional<PaymentSqlDao>, UpdatableEntitySqlDao<PaymentInfoEvent>, CloseMe {
     @SqlQuery
-    PaymentInfoEvent getPaymentInfoForPaymentAttemptId(@Bind("payment_attempt_id") String paymentAttemptId);
+    PaymentInfoEvent getPaymentInfoForPaymentAttemptId(@Bind("paymentAttemptId") String paymentAttemptId);
 
     @SqlUpdate
-    void updatePaymentInfo(@Bind("payment_method") String paymentMethod,
+    void updatePaymentInfo(@Bind("paymentMethod") String paymentMethod,
                            @Bind("id") String paymentId,
-                           @Bind("card_type") String cardType,
-                           @Bind("card_country") String cardCountry,
+                           @Bind("cardType") String cardType,
+                           @Bind("cardCountry") String cardCountry,
                            @CallContextBinder CallContext context);
 
     @SqlQuery
@@ -80,18 +80,19 @@ public interface PaymentSqlDao extends Transactional<PaymentSqlDao>, UpdatableEn
         @Override
         public void bind(@SuppressWarnings("rawtypes") SQLStatement stmt, Bind bind, PaymentInfoEvent paymentInfo) {
             stmt.bind("id", paymentInfo.getId().toString());
+            stmt.bind("externalPaymentId", paymentInfo.getExternalPaymentId());
             stmt.bind("amount", paymentInfo.getAmount());
-            stmt.bind("refund_amount", paymentInfo.getRefundAmount());
-            stmt.bind("payment_number", paymentInfo.getPaymentNumber());
-            stmt.bind("bank_identification_number", paymentInfo.getBankIdentificationNumber());
+            stmt.bind("refundAmount", paymentInfo.getRefundAmount());
+            stmt.bind("paymentNumber", paymentInfo.getPaymentNumber());
+            stmt.bind("bankIdentificationNumber", paymentInfo.getBankIdentificationNumber());
             stmt.bind("status", paymentInfo.getStatus());
-            stmt.bind("payment_type", paymentInfo.getType());
-            stmt.bind("reference_id", paymentInfo.getReferenceId());
-            stmt.bind("payment_method_id", paymentInfo.getPaymentMethodId());
-            stmt.bind("payment_method", paymentInfo.getPaymentMethod());
-            stmt.bind("card_type", paymentInfo.getCardType());
-            stmt.bind("card_country", paymentInfo.getCardCountry());
-            stmt.bind("effective_date", getDate(paymentInfo.getEffectiveDate()));
+            stmt.bind("paymentType", paymentInfo.getType());
+            stmt.bind("referenceId", paymentInfo.getReferenceId());
+            stmt.bind("paymentMethodId", paymentInfo.getPaymentMethodId());
+            stmt.bind("paymentMethod", paymentInfo.getPaymentMethod());
+            stmt.bind("cardType", paymentInfo.getCardType());
+            stmt.bind("cardCountry", paymentInfo.getCardCountry());
+            stmt.bind("effectiveDate", getDate(paymentInfo.getEffectiveDate()));
         }
     }
 
@@ -99,6 +100,7 @@ public interface PaymentSqlDao extends Transactional<PaymentSqlDao>, UpdatableEn
         @Override
         public PaymentInfoEvent map(int index, ResultSet rs, StatementContext ctx) throws SQLException {
             UUID id = getUUID(rs, "id");
+            String externalPaymentId = rs.getString("external_payment_id");
             BigDecimal amount = rs.getBigDecimal("amount");
             BigDecimal refundAmount = rs.getBigDecimal("refund_amount");
             String paymentNumber = rs.getString("payment_number");
@@ -115,6 +117,7 @@ public interface PaymentSqlDao extends Transactional<PaymentSqlDao>, UpdatableEn
             UUID userToken = null; //rs.getString("user_token") != null ? UUID.fromString(rs.getString("user_token")) : null;
             
             return new DefaultPaymentInfoEvent(id,
+                                   externalPaymentId,
                                    amount,
                                    refundAmount,
                                    bankIdentificationNumber,
diff --git a/payment/src/main/resources/com/ning/billing/payment/dao/PaymentSqlDao.sql.stg b/payment/src/main/resources/com/ning/billing/payment/dao/PaymentSqlDao.sql.stg
index 9deaee0..79e8139 100644
--- a/payment/src/main/resources/com/ning/billing/payment/dao/PaymentSqlDao.sql.stg
+++ b/payment/src/main/resources/com/ning/billing/payment/dao/PaymentSqlDao.sql.stg
@@ -2,6 +2,7 @@ group PaymentSqlDao;
 
 paymentInfoFields(prefix) ::= <<
     <prefix>id,
+    <prefix>external_payment_id,
     <prefix>amount,
     <prefix>refund_amount,
     <prefix>bank_identification_number,
@@ -22,16 +23,16 @@ paymentInfoFields(prefix) ::= <<
 
 insertPaymentInfo() ::= <<
     INSERT INTO payments (<paymentInfoFields()>)
-    VALUES (:id, :amount, :refund_amount, :bank_identification_number, :payment_number,
-    :payment_type, :status, :reference_id, :payment_method_id, :payment_method, :card_type,
-    :card_country, :effective_date, :userName, :createdDate, :userName, :createdDate);
+    VALUES (:id, :externalPaymentId, :amount, :refundAmount, :bankIdentificationNumber, :paymentNumber,
+    :paymentType, :status, :referenceId, :paymentMethodId, :paymentMethod, :cardType,
+    :cardCountry, :effectiveDate, :userName, :createdDate, :userName, :createdDate);
 >>
 
 updatePaymentInfo() ::= <<
     UPDATE payments
-       SET payment_method = :payment_method,
-           card_type = :card_type,
-           card_country = :card_country,
+       SET payment_method = :paymentMethod,
+           card_type = :cardType,
+           card_country = :cardCountry,
            updated_by = :userName,
            updated_date = :updatedDate
      WHERE id = :id
@@ -56,7 +57,7 @@ getLastPaymentInfo(invoiceIds) ::= <<
 getPaymentInfoForPaymentAttemptId() ::= <<
     SELECT <paymentInfoFields("p.")>
       FROM payments p, payment_attempts pa
-    WHERE pa.payment_attempt_id = :payment_attempt_id
+    WHERE pa.payment_attempt_id = :paymentAttemptId
        AND pa.payment_id = p.id
 >>
 
@@ -69,6 +70,7 @@ getPaymentInfo() ::= <<
 historyFields(prefix) ::= <<
     record_id,
     id,
+    external_payment_id,
     amount,
     refund_amount,
     payment_number,
@@ -89,9 +91,9 @@ historyFields(prefix) ::= <<
 
 insertHistoryFromTransaction() ::= <<
     INSERT INTO payment_history (<historyFields()>)
-    VALUES (:recordId, :id, :amount, :refund_amount, :bank_identification_number, :payment_number,
-    :payment_type, :status, :reference_id, :payment_method_id, :payment_method, :card_type,
-    :card_country, :effective_date, :userName, :createdDate, :userName, :updatedDate);
+    VALUES (:recordId, :id, :externalPaymentId, :amount, :refundAmount, :bankIdentificationNumber, :paymentNumber,
+    :paymentType, :status, :referenceId, :paymentMethodId, :paymentMethod, :cardType,
+    :cardCountry, :effectiveDate, :userName, :createdDate, :userName, :updatedDate);
 >>
 
 getRecordId() ::= <<
diff --git a/payment/src/main/resources/com/ning/billing/payment/ddl.sql b/payment/src/main/resources/com/ning/billing/payment/ddl.sql
index c77945f..f30219d 100644
--- a/payment/src/main/resources/com/ning/billing/payment/ddl.sql
+++ b/payment/src/main/resources/com/ning/billing/payment/ddl.sql
@@ -7,7 +7,7 @@ CREATE TABLE payment_attempts (
     amount decimal(8,2),
     currency char(3),
     payment_attempt_date datetime NOT NULL,
-    payment_id varchar(36) COLLATE utf8_bin,
+    payment_id char(36) COLLATE utf8_bin,
     retry_count tinyint,
     invoice_date datetime NOT NULL,
     created_by varchar(50) NOT NULL,
@@ -29,7 +29,7 @@ CREATE TABLE payment_attempt_history (
     amount decimal(8,2),
     currency char(3),
     payment_attempt_date datetime NOT NULL,
-    payment_id varchar(36) COLLATE utf8_bin,
+    payment_id char(36) COLLATE utf8_bin,
     retry_count tinyint,
     invoice_date datetime NOT NULL,
     created_by varchar(50) NOT NULL,
@@ -44,6 +44,7 @@ DROP TABLE IF EXISTS payments;
 CREATE TABLE payments (
     record_id int(11) unsigned NOT NULL AUTO_INCREMENT,
     id char(36) NOT NULL,
+    external_payment_id varchar(36) COLLATE utf8_bin NOT NULL,
     amount decimal(8,2),
     refund_amount decimal(8,2),
     payment_number varchar(36) COLLATE utf8_bin,
@@ -69,6 +70,7 @@ CREATE TABLE payment_history (
     history_record_id int(11) unsigned NOT NULL AUTO_INCREMENT,
     record_id int(11) unsigned NOT NULL,
     id char(36) NOT NULL,
+    external_payment_id varchar(36) COLLATE utf8_bin NOT NULL,
     amount decimal(8,2),
     refund_amount decimal(8,2),
     payment_number varchar(36) COLLATE utf8_bin,
diff --git a/payment/src/test/java/com/ning/billing/payment/api/TestEventJson.java b/payment/src/test/java/com/ning/billing/payment/api/TestEventJson.java
index 198e986..ad09031 100644
--- a/payment/src/test/java/com/ning/billing/payment/api/TestEventJson.java
+++ b/payment/src/test/java/com/ning/billing/payment/api/TestEventJson.java
@@ -18,25 +18,14 @@ package com.ning.billing.payment.api;
 import java.math.BigDecimal;
 import java.util.UUID;
 
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.SerializationConfig;
+import com.ning.billing.util.jackson.ObjectMapper;
 import org.joda.time.DateTime;
 import org.testng.Assert;
-import org.testng.annotations.BeforeTest;
 import org.testng.annotations.Test;
 
-
 public class TestEventJson {
-
-
     private ObjectMapper mapper = new ObjectMapper();
 
-    @BeforeTest(groups= {"fast"})
-    public void setup() {
-        mapper = new ObjectMapper();
-        mapper.disable(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS);
-    }
-
     @Test(groups= {"fast"})
     public void testPaymentErrorEvent() throws Exception {
         PaymentErrorEvent e = new DefaultPaymentErrorEvent("credit card", "Failed payment", UUID.randomUUID(), UUID.randomUUID(), UUID.randomUUID());
@@ -49,7 +38,7 @@ public class TestEventJson {
     
     @Test(groups= {"fast"})
     public void testPaymentInfoEvent() throws Exception {
-        PaymentInfoEvent e = new DefaultPaymentInfoEvent(UUID.randomUUID(), new BigDecimal(12), new BigDecimal(12.9), "BNP", "eeert", "success",
+        PaymentInfoEvent e = new DefaultPaymentInfoEvent(UUID.randomUUID(), "932587sdkjgfh", new BigDecimal(12), new BigDecimal(12.9), "BNP", "eeert", "success",
                 "credit", "ref", "paypal", "paypal", "", "", UUID.randomUUID(), new DateTime());
         
         String json = mapper.writeValueAsString(e);
diff --git a/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java b/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java
index 40b92ef..a62c0fe 100644
--- a/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java
+++ b/payment/src/test/java/com/ning/billing/payment/dao/TestPaymentDao.java
@@ -45,6 +45,7 @@ public abstract class TestPaymentDao {
     @Test
     public void testCreatePayment() {
         PaymentInfoEvent paymentInfo = new DefaultPaymentInfoEvent.Builder().setId(UUID.randomUUID())
+                .setExternalPaymentId("40863fe3f6dca54")
                 .setAmount(BigDecimal.TEN)
                 .setStatus("Processed")
                 .setBankIdentificationNumber("1234")
@@ -61,6 +62,7 @@ public abstract class TestPaymentDao {
     @Test
     public void testUpdatePaymentInfo() {
         PaymentInfoEvent paymentInfo = new DefaultPaymentInfoEvent.Builder().setId(UUID.randomUUID())
+                .setExternalPaymentId("40863fe3f6dca54")
                 .setAmount(BigDecimal.TEN)
                 .setStatus("Processed")
                 .setBankIdentificationNumber("1234")
@@ -118,6 +120,7 @@ public abstract class TestPaymentDao {
         Assert.assertEquals(attempt3, attempt4);
 
         PaymentInfoEvent originalPaymentInfo = new DefaultPaymentInfoEvent.Builder().setId(paymentId)
+                .setExternalPaymentId("test test")
                 .setAmount(invoiceAmount)
                 .setStatus("Processed")
                 .setBankIdentificationNumber("1234")
diff --git a/payment/src/test/java/com/ning/billing/payment/MockInvoiceCreationEvent.java b/payment/src/test/java/com/ning/billing/payment/MockInvoiceCreationEvent.java
index 9a700cd..da9b6ab 100644
--- a/payment/src/test/java/com/ning/billing/payment/MockInvoiceCreationEvent.java
+++ b/payment/src/test/java/com/ning/billing/payment/MockInvoiceCreationEvent.java
@@ -19,14 +19,13 @@ package com.ning.billing.payment;
 import java.math.BigDecimal;
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import org.joda.time.DateTime;
 
 import com.ning.billing.catalog.api.Currency;
 import com.ning.billing.invoice.api.InvoiceCreationEvent;
-import com.ning.billing.util.bus.BusEvent.BusEventType;
 
 public class MockInvoiceCreationEvent implements InvoiceCreationEvent {
 	
diff --git a/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPlugin.java b/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPlugin.java
index f3cb154..43f488e 100644
--- a/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPlugin.java
+++ b/payment/src/test/java/com/ning/billing/payment/provider/MockPaymentProviderPlugin.java
@@ -65,6 +65,7 @@ public class MockPaymentProviderPlugin implements PaymentProviderPlugin {
         }
         else {
             PaymentInfoEvent payment = new DefaultPaymentInfoEvent.Builder().setId(UUID.randomUUID())
+                                                 .setExternalPaymentId("238957t49regyuihfd")
                                                  .setAmount(invoice.getBalance())
                                                  .setStatus("Processed")
                                                  .setBankIdentificationNumber("1234")

pom.xml 35(+20 -15)

diff --git a/pom.xml b/pom.xml
index 0972e2a..d105725 100644
--- a/pom.xml
+++ b/pom.xml
@@ -194,21 +194,6 @@
                 <scope>test</scope>
             </dependency>
             <dependency>
-                <groupId>org.codehaus.jackson</groupId>
-                <artifactId>jackson-core-asl</artifactId>
-                <version>1.9.5</version>
-            </dependency>
-            <dependency>
-                <groupId>org.codehaus.jackson</groupId>
-                <artifactId>jackson-jaxrs</artifactId>
-                <version>1.9.5</version>
-            </dependency>
-            <dependency>
-                <groupId>org.codehaus.jackson</groupId>
-                <artifactId>jackson-mapper-asl</artifactId>
-                <version>1.9.5</version>
-            </dependency>
-            <dependency>
                 <groupId>com.jolbox</groupId>
                 <artifactId>bonecp</artifactId>
                 <version>0.7.1.RELEASE</version>
@@ -220,6 +205,26 @@
                 </exclusions>
             </dependency>
             <dependency>
+                <groupId>com.fasterxml.jackson.core</groupId>
+                <artifactId>jackson-core</artifactId>
+                <version>2.0.0</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.core</groupId>
+                <artifactId>jackson-annotations</artifactId>
+                <version>2.0.0</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.datatype</groupId>
+                <artifactId>jackson-datatype-joda</artifactId>
+                <version>2.0.1</version>
+            </dependency>
+            <dependency>
+                <groupId>com.fasterxml.jackson.core</groupId>
+                <artifactId>jackson-databind</artifactId>
+                <version>2.0.0</version>
+            </dependency>
+            <dependency>
                 <groupId>com.google.guava</groupId>
                 <artifactId>guava</artifactId>
                 <version>10.0.1</version>
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java b/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java
index 414f2a0..b24d7d7 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java
@@ -28,10 +28,7 @@ import java.util.Map;
 import javax.ws.rs.core.Response.Status;
 
 
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.PropertyNamingStrategy;
 import org.joda.time.DateTime;
-import org.joda.time.Interval;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.Assert;
@@ -42,7 +39,7 @@ import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.jaxrs.json.AccountJson;
 import com.ning.billing.jaxrs.json.AccountTimelineJson;
-import com.ning.billing.jaxrs.json.BundleJsonNoSubsciptions;
+import com.ning.billing.jaxrs.json.BundleJsonNoSubscriptions;
 import com.ning.billing.jaxrs.json.CustomFieldJson;
 import com.ning.billing.jaxrs.json.SubscriptionJsonNoEvents;
 import com.ning.billing.jaxrs.json.TagDefinitionJson;
@@ -119,7 +116,7 @@ public class TestAccount extends TestJaxrsBase {
 	    AccountJson accountJson = createAccount("poney", "shdddqgfhwe", "poney@yahoo.com");
 	    assertNotNull(accountJson);
 	    
-	    BundleJsonNoSubsciptions bundleJson = createBundle(accountJson.getAccountId(), "996599");
+	    BundleJsonNoSubscriptions bundleJson = createBundle(accountJson.getAccountId(), "996599");
 	    assertNotNull(bundleJson);
 	    
         SubscriptionJsonNoEvents subscriptionJson = createSubscription(bundleJson.getBundleId(), "Shotgun", ProductCategory.BASE.toString(), BillingPeriod.MONTHLY.toString(), true);
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestBundle.java b/server/src/test/java/com/ning/billing/jaxrs/TestBundle.java
index 7795d0c..3342bad 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestBundle.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestBundle.java
@@ -30,7 +30,7 @@ import org.testng.annotations.Test;
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.ning.billing.jaxrs.json.AccountJson;
-import com.ning.billing.jaxrs.json.BundleJsonNoSubsciptions;
+import com.ning.billing.jaxrs.json.BundleJsonNoSubscriptions;
 import com.ning.billing.jaxrs.resources.BaseJaxrsResource;
 import com.ning.http.client.Response;
 
@@ -44,7 +44,7 @@ public class TestBundle extends TestJaxrsBase {
 	public void testBundleOk() throws Exception {
 
 		AccountJson accountJson = createAccount("xlxl", "shdgfhkkl", "xlxl@yahoo.com");
-		BundleJsonNoSubsciptions bundleJson = createBundle(accountJson.getAccountId(), "12345");
+		BundleJsonNoSubscriptions bundleJson = createBundle(accountJson.getAccountId(), "12345");
 		
 		// Retrieves by external key
 		Map<String, String> queryParams = new HashMap<String, String>();
@@ -52,7 +52,7 @@ public class TestBundle extends TestJaxrsBase {
 		Response response = doGet(BaseJaxrsResource.BUNDLES_PATH, queryParams, DEFAULT_HTTP_TIMEOUT_SEC);
 		Assert.assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
 		String baseJson = response.getResponseBody();
-		BundleJsonNoSubsciptions objFromJson = mapper.readValue(baseJson, BundleJsonNoSubsciptions.class);
+		BundleJsonNoSubscriptions objFromJson = mapper.readValue(baseJson, BundleJsonNoSubscriptions.class);
 		Assert.assertTrue(objFromJson.equals(bundleJson));
 	}
 	
@@ -61,18 +61,18 @@ public class TestBundle extends TestJaxrsBase {
 	public void testBundleFromAccount() throws Exception {
 
 		AccountJson accountJson = createAccount("xaxa", "saagfhkkl", "xaxa@yahoo.com");
-		BundleJsonNoSubsciptions bundleJson1 = createBundle(accountJson.getAccountId(), "156567");
-		BundleJsonNoSubsciptions bundleJson2 = createBundle(accountJson.getAccountId(), "265658");
+		BundleJsonNoSubscriptions bundleJson1 = createBundle(accountJson.getAccountId(), "156567");
+		BundleJsonNoSubscriptions bundleJson2 = createBundle(accountJson.getAccountId(), "265658");
 
 		String uri = BaseJaxrsResource.ACCOUNTS_PATH + "/" + accountJson.getAccountId().toString() + "/" + BaseJaxrsResource.BUNDLES;
 		Response response = doGet(uri, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
 		Assert.assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
 		String baseJson = response.getResponseBody();
-		List<BundleJsonNoSubsciptions> objFromJson = mapper.readValue(baseJson, new TypeReference<List<BundleJsonNoSubsciptions>>() {});
+		List<BundleJsonNoSubscriptions> objFromJson = mapper.readValue(baseJson, new TypeReference<List<BundleJsonNoSubscriptions>>() {});
 		
-		Collections.sort(objFromJson, new Comparator<BundleJsonNoSubsciptions>() {
+		Collections.sort(objFromJson, new Comparator<BundleJsonNoSubscriptions>() {
 			@Override
-			public int compare(BundleJsonNoSubsciptions o1, BundleJsonNoSubsciptions o2) {
+			public int compare(BundleJsonNoSubscriptions o1, BundleJsonNoSubscriptions o2) {
 				return o1.getExternalKey().compareTo(o2.getExternalKey());
 			}
 		});
@@ -100,7 +100,7 @@ public class TestBundle extends TestJaxrsBase {
 		response = doGet(uri, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
 		Assert.assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
 		String baseJson = response.getResponseBody();
-		List<BundleJsonNoSubsciptions> objFromJson = mapper.readValue(baseJson, new TypeReference<List<BundleJsonNoSubsciptions>>() {});
+		List<BundleJsonNoSubscriptions> objFromJson = mapper.readValue(baseJson, new TypeReference<List<BundleJsonNoSubscriptions>>() {});
 		Assert.assertNotNull(objFromJson);
 		Assert.assertEquals(objFromJson.size(), 0);
 	}
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestInvoice.java b/server/src/test/java/com/ning/billing/jaxrs/TestInvoice.java
index aba67b8..6aa0224 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestInvoice.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestInvoice.java
@@ -37,7 +37,7 @@ import com.fasterxml.jackson.core.type.TypeReference;
 import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.jaxrs.json.AccountJson;
-import com.ning.billing.jaxrs.json.BundleJsonNoSubsciptions;
+import com.ning.billing.jaxrs.json.BundleJsonNoSubscriptions;
 import com.ning.billing.jaxrs.json.InvoiceJsonSimple;
 import com.ning.billing.jaxrs.json.SubscriptionJsonNoEvents;
 import com.ning.billing.jaxrs.resources.BaseJaxrsResource;
@@ -60,7 +60,7 @@ public class TestInvoice extends TestJaxrsBase  {
         AccountJson accountJson = createAccount("poupou", "qhddffrwe", "poupou@yahoo.com");
         assertNotNull(accountJson);
         
-        BundleJsonNoSubsciptions bundleJson = createBundle(accountJson.getAccountId(), "9967599");
+        BundleJsonNoSubscriptions bundleJson = createBundle(accountJson.getAccountId(), "9967599");
         assertNotNull(bundleJson);
         
         SubscriptionJsonNoEvents subscriptionJson = createSubscription(bundleJson.getBundleId(), "Shotgun", ProductCategory.BASE.toString(), BillingPeriod.MONTHLY.toString(), true);
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java b/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
index 46214e9..1abb582 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestJaxrsBase.java
@@ -63,7 +63,7 @@ import com.ning.billing.dbi.MysqlTestingHelper;
 import com.ning.billing.entitlement.glue.DefaultEntitlementModule;
 import com.ning.billing.invoice.glue.DefaultInvoiceModule;
 import com.ning.billing.jaxrs.json.AccountJson;
-import com.ning.billing.jaxrs.json.BundleJsonNoSubsciptions;
+import com.ning.billing.jaxrs.json.BundleJsonNoSubscriptions;
 import com.ning.billing.jaxrs.json.SubscriptionJsonNoEvents;
 import com.ning.billing.jaxrs.resources.BaseJaxrsResource;
 import com.ning.billing.junction.glue.DefaultJunctionModule;
@@ -329,8 +329,8 @@ public class TestJaxrsBase {
 
 
 
-    protected BundleJsonNoSubsciptions createBundle(String accountId, String key) throws Exception {
-        BundleJsonNoSubsciptions input = new BundleJsonNoSubsciptions(null, accountId, key, null);
+    protected BundleJsonNoSubscriptions createBundle(String accountId, String key) throws Exception {
+        BundleJsonNoSubscriptions input = new BundleJsonNoSubscriptions(null, accountId, key, null);
         String baseJson = mapper.writeValueAsString(input);
         Response response = doPost(BaseJaxrsResource.BUNDLES_PATH, baseJson, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
         Assert.assertEquals(response.getStatusCode(), Status.CREATED.getStatusCode());
@@ -343,7 +343,7 @@ public class TestJaxrsBase {
         Assert.assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
 
         baseJson = response.getResponseBody();
-        BundleJsonNoSubsciptions objFromJson = mapper.readValue(baseJson, BundleJsonNoSubsciptions.class);
+        BundleJsonNoSubscriptions objFromJson = mapper.readValue(baseJson, BundleJsonNoSubscriptions.class);
         Assert.assertTrue(objFromJson.equalsNoId(input));
         return objFromJson;
     }
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestSubscription.java b/server/src/test/java/com/ning/billing/jaxrs/TestSubscription.java
index d43c858..ad99151 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestSubscription.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestSubscription.java
@@ -34,7 +34,7 @@ import com.ning.billing.catalog.api.BillingPeriod;
 import com.ning.billing.catalog.api.PriceListSet;
 import com.ning.billing.catalog.api.ProductCategory;
 import com.ning.billing.jaxrs.json.AccountJson;
-import com.ning.billing.jaxrs.json.BundleJsonNoSubsciptions;
+import com.ning.billing.jaxrs.json.BundleJsonNoSubscriptions;
 import com.ning.billing.jaxrs.json.SubscriptionJsonNoEvents;
 import com.ning.billing.jaxrs.resources.BaseJaxrsResource;
 import com.ning.http.client.Response;
@@ -53,7 +53,7 @@ public class TestSubscription extends TestJaxrsBase {
         clock.setDeltaFromReality(initialDate.getMillis() - clock.getUTCNow().getMillis());
         
         AccountJson accountJson = createAccount("xil", "shdxilhkkl", "xil@yahoo.com");
-        BundleJsonNoSubsciptions bundleJson = createBundle(accountJson.getAccountId(), "99999");
+        BundleJsonNoSubscriptions bundleJson = createBundle(accountJson.getAccountId(), "99999");
 
         String productName = "Shotgun";
         BillingPeriod term = BillingPeriod.MONTHLY;

util/pom.xml 16(+8 -8)

diff --git a/util/pom.xml b/util/pom.xml
index 74dcdd3..112c014 100644
--- a/util/pom.xml
+++ b/util/pom.xml
@@ -60,14 +60,6 @@
             <artifactId>joda-time</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-core-asl</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.jackson</groupId>
-            <artifactId>jackson-mapper-asl</artifactId>
-        </dependency>
-        <dependency>
             <groupId>org.testng</groupId>
             <artifactId>testng</artifactId>
             <scope>test</scope>
@@ -107,6 +99,14 @@
             <groupId>commons-io</groupId>
             <artifactId>commons-io</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-joda</artifactId>
+        </dependency>
     </dependencies>
     <build>
         <plugins>
diff --git a/util/src/main/java/com/ning/billing/util/bus/PersistentBus.java b/util/src/main/java/com/ning/billing/util/bus/PersistentBus.java
index 92b35d7..a609c80 100644
--- a/util/src/main/java/com/ning/billing/util/bus/PersistentBus.java
+++ b/util/src/main/java/com/ning/billing/util/bus/PersistentBus.java
@@ -15,15 +15,12 @@
  */
 package com.ning.billing.util.bus;
 
-
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadFactory;
 
-import org.codehaus.jackson.map.ObjectMapper;
-import org.codehaus.jackson.map.SerializationConfig;
 import org.skife.jdbi.v2.IDBI;
 import org.skife.jdbi.v2.Transaction;
 import org.skife.jdbi.v2.TransactionStatus;
@@ -33,16 +30,13 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.eventbus.EventBus;
 import com.google.inject.Inject;
-import com.google.inject.name.Named;
-import com.ning.billing.config.PersistentQueueConfig;
 import com.ning.billing.util.Hostname;
 import com.ning.billing.util.bus.dao.BusEventEntry;
 import com.ning.billing.util.bus.dao.PersistentBusSqlDao;
 import com.ning.billing.util.clock.Clock;
-import com.ning.billing.util.glue.BusModule;
+import com.ning.billing.util.jackson.ObjectMapper;
 import com.ning.billing.util.queue.PersistentQueueBase;
 
-
 public class PersistentBus extends PersistentQueueBase implements Bus {
 
     private final static long DELTA_IN_PROCESSING_TIME_MS = 1000L * 60L * 5L; // 5 minutes
@@ -52,13 +46,11 @@ public class PersistentBus extends PersistentQueueBase implements Bus {
     
     private final PersistentBusSqlDao dao;
     
-    private final ObjectMapper objectMapper;
+    private final ObjectMapper objectMapper = new ObjectMapper();
     private final EventBusDelegate eventBusDelegate;
     private final Clock clock;
     private final String hostname;
-    
 
-    
     private static final class EventBusDelegate extends EventBus {
         public EventBusDelegate(String busName) {
             super(busName);
@@ -92,8 +84,6 @@ public class PersistentBus extends PersistentQueueBase implements Bus {
         }), config.getNbThreads(), config);
         this.dao = dbi.onDemand(PersistentBusSqlDao.class);
         this.clock = clock;
-        this.objectMapper = new ObjectMapper();
-        this.objectMapper.disable(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS);
         this.eventBusDelegate = new EventBusDelegate("Killbill EventBus");
         this.hostname = Hostname.get();
     }
diff --git a/util/src/main/java/com/ning/billing/util/dao/TableName.java b/util/src/main/java/com/ning/billing/util/dao/TableName.java
index 28a070a..9253107 100644
--- a/util/src/main/java/com/ning/billing/util/dao/TableName.java
+++ b/util/src/main/java/com/ning/billing/util/dao/TableName.java
@@ -22,7 +22,6 @@ public enum TableName {
     ACCOUNT_EMAIL_HISTORY("account_email_history"),
     BUNDLES("bundles"),
     CUSTOM_FIELD_HISTORY("custom_field_history"),
-    ENTITLEMENT_EVENTS("entitlement_events"),
     FIXED_INVOICE_ITEMS("fixed_invoice_items"),
     INVOICE_PAYMENTS("invoice_payments"),
     INVOICES("invoices"),
@@ -31,6 +30,7 @@ public enum TableName {
     PAYMENTS("payments"),
     RECURRING_INVOICE_ITEMS("recurring_invoice_items"),
     SUBSCRIPTIONS("subscriptions"),
+    SUBSCRIPTION_EVENTS("subscription_events"),
     TAG_HISTORY("tag_history");
     
     private final String tableName;
diff --git a/util/src/main/java/com/ning/billing/util/jackson/ObjectMapper.java b/util/src/main/java/com/ning/billing/util/jackson/ObjectMapper.java
new file mode 100644
index 0000000..42a1758
--- /dev/null
+++ b/util/src/main/java/com/ning/billing/util/jackson/ObjectMapper.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2010-2011 Ning, Inc.
+ *
+ * Ning licenses this file to you under the Apache License, version 2.0
+ * (the "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at:
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ */
+
+package com.ning.billing.util.jackson;
+
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.joda.JodaModule;
+
+public class ObjectMapper extends com.fasterxml.jackson.databind.ObjectMapper {
+    public ObjectMapper() {
+        this.registerModule(new JodaModule());
+        this.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+    }
+}
diff --git a/util/src/test/java/com/ning/billing/mock/MockAccountBuilder.java b/util/src/test/java/com/ning/billing/mock/MockAccountBuilder.java
index a9cc6ec..2546757 100644
--- a/util/src/test/java/com/ning/billing/mock/MockAccountBuilder.java
+++ b/util/src/test/java/com/ning/billing/mock/MockAccountBuilder.java
@@ -18,7 +18,6 @@ package com.ning.billing.mock;
 
 import java.util.UUID;
 
-import org.apache.commons.lang.NotImplementedException;
 import org.joda.time.DateTimeZone;
 
 import com.ning.billing.account.api.Account;
@@ -279,7 +278,7 @@ public class MockAccountBuilder {
 
             @Override
             public MutableAccountData toMutableAccountData() {
-                throw new NotImplementedException();
+                throw new UnsupportedOperationException();
             }
         };
     }
diff --git a/util/src/test/java/com/ning/billing/util/bus/TestEventBusBase.java b/util/src/test/java/com/ning/billing/util/bus/TestEventBusBase.java
index ddc89ed..bd74b44 100644
--- a/util/src/test/java/com/ning/billing/util/bus/TestEventBusBase.java
+++ b/util/src/test/java/com/ning/billing/util/bus/TestEventBusBase.java
@@ -17,21 +17,19 @@ package com.ning.billing.util.bus;
 
 import java.util.UUID;
 
-import org.codehaus.jackson.annotate.JsonCreator;
-import org.codehaus.jackson.annotate.JsonIgnore;
-import org.codehaus.jackson.annotate.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.testng.Assert;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
 
 import com.google.common.eventbus.Subscribe;
 import com.google.inject.Inject;
 import com.ning.billing.util.bus.BusEvent.BusEventType;
 
-
 public class TestEventBusBase {
 
     protected static final Logger log = LoggerFactory.getLogger(TestEventBusBase.class);