killbill-memoizeit

analytics: be lenient towards audit logs Auditing is a fairly

4/18/2013 7:25:29 PM

Changes

Details

diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/BusinessAnalyticsBase.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/BusinessAnalyticsBase.java
index eee2f51..61a5581 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/BusinessAnalyticsBase.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/BusinessAnalyticsBase.java
@@ -69,7 +69,12 @@ import com.ning.billing.util.tag.TagDefinition;
 import com.ning.killbill.osgi.libs.killbill.OSGIKillbillAPI;
 import com.ning.killbill.osgi.libs.killbill.OSGIKillbillLogService;
 
-// Wrapper around Kill Bill APIs
+/**
+ * Wrapper around Kill Bill APIs
+ * <p/>
+ * Note: the code is merciful in case audit logs cannot be retrieved. This is because the auditing code
+ * is fairly recent, and we want this plugin to support early versions of Kill Bill (with non audited data).
+ */
 public abstract class BusinessAnalyticsBase {
 
     protected final OSGIKillbillLogService logService;
@@ -119,7 +124,8 @@ public abstract class BusinessAnalyticsBase {
             }
         }
 
-        throw new AnalyticsRefreshException("Unable to find Account creation audit log for id " + accountId);
+        logService.log(LogService.LOG_WARNING, "Unable to find Account creation audit log for id " + accountId);
+        return null;
     }
 
     protected Long getAccountRecordId(final UUID accountId, final TenantContext context) throws AnalyticsRefreshException {
@@ -189,7 +195,8 @@ public abstract class BusinessAnalyticsBase {
             }
         }
 
-        throw new AnalyticsRefreshException("Unable to find Bundle creation audit log for id " + bundleId);
+        logService.log(LogService.LOG_WARNING, "Unable to find Bundle creation audit log for id " + bundleId);
+        return null;
     }
 
     protected Subscription getSubscription(final UUID subscriptionId, final TenantContext context) throws AnalyticsRefreshException {
@@ -211,7 +218,8 @@ public abstract class BusinessAnalyticsBase {
             }
         }
 
-        throw new AnalyticsRefreshException("Unable to find Subscription event creation audit log for id " + subscriptionEventId);
+        logService.log(LogService.LOG_WARNING, "Unable to find Subscription event creation audit log for id " + subscriptionEventId);
+        return null;
     }
 
     protected Long getSubscriptionEventRecordId(final UUID subscriptionEventId, final TenantContext context) throws AnalyticsRefreshException {
@@ -240,7 +248,8 @@ public abstract class BusinessAnalyticsBase {
             }
         }
 
-        throw new AnalyticsRefreshException("Unable to find Blocking state creation audit log for id " + blockingStateId);
+        logService.log(LogService.LOG_WARNING, "Unable to find Blocking state creation audit log for id " + blockingStateId);
+        return null;
     }
 
     protected Long getBlockingStateRecordId(final UUID blockingStateId, final TenantContext context) throws AnalyticsRefreshException {
@@ -270,7 +279,8 @@ public abstract class BusinessAnalyticsBase {
             }
         }
 
-        throw new AnalyticsRefreshException("Unable to find Invoice creation audit log for id " + invoiceId);
+        logService.log(LogService.LOG_WARNING, "Unable to find Invoice creation audit log for id " + invoiceId);
+        return null;
     }
 
     protected Long getInvoiceRecordId(final UUID invoiceId, final TenantContext context) throws AnalyticsRefreshException {
@@ -286,7 +296,8 @@ public abstract class BusinessAnalyticsBase {
             }
         }
 
-        throw new AnalyticsRefreshException("Unable to find Invoice item creation audit log for id " + invoiceItemId);
+        logService.log(LogService.LOG_WARNING, "Unable to find Invoice item creation audit log for id " + invoiceItemId);
+        return null;
     }
 
     protected Long getInvoiceItemRecordId(final UUID invoiceItemId, final TenantContext context) throws AnalyticsRefreshException {
@@ -360,7 +371,8 @@ public abstract class BusinessAnalyticsBase {
             }
         }
 
-        throw new AnalyticsRefreshException("Unable to find Invoice payment creation audit log for id " + invoicePaymentId);
+        logService.log(LogService.LOG_WARNING, "Unable to find Invoice payment creation audit log for id " + invoicePaymentId);
+        return null;
     }
 
     protected Long getInvoicePaymentRecordId(final UUID invoicePaymentId, final TenantContext context) throws AnalyticsRefreshException {
@@ -404,18 +416,6 @@ public abstract class BusinessAnalyticsBase {
         }
     }
 
-    protected Collection<PaymentMethod> getAccountPaymentMethods(final UUID accountId, final TenantContext context) throws AnalyticsRefreshException {
-        final Account account = getAccount(accountId, context);
-
-        final PaymentApi paymentApi = getPaymentUserApi();
-        try {
-            return paymentApi.getPaymentMethods(account, true, context);
-        } catch (PaymentApiException e) {
-            logService.log(LogService.LOG_WARNING, "Error retrieving payment methods for account id " + accountId, e);
-            throw new AnalyticsRefreshException(e);
-        }
-    }
-
     protected PaymentMethod getPaymentMethod(final UUID paymentMethodId, final TenantContext context) throws AnalyticsRefreshException {
         final PaymentApi paymentApi = getPaymentUserApi();
 
@@ -444,7 +444,8 @@ public abstract class BusinessAnalyticsBase {
             }
         }
 
-        throw new AnalyticsRefreshException("Unable to find Field creation audit log for id " + fieldId);
+        logService.log(LogService.LOG_WARNING, "Unable to find Field creation audit log for id " + fieldId);
+        return null;
     }
 
     protected Long getFieldRecordId(final UUID fieldId, final TenantContext context) throws AnalyticsRefreshException {
@@ -480,7 +481,8 @@ public abstract class BusinessAnalyticsBase {
             }
         }
 
-        throw new AnalyticsRefreshException("Unable to find Tag creation audit log for id " + tagId);
+        logService.log(LogService.LOG_WARNING, "Unable to find Tag creation audit log for id " + tagId);
+        return null;
     }
 
     protected Long getTagRecordId(final UUID tagId, final TenantContext context) throws AnalyticsRefreshException {
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountFieldModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountFieldModelDao.java
index 2ff0a94..42a1024 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountFieldModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountFieldModelDao.java
@@ -30,7 +30,7 @@ public class BusinessAccountFieldModelDao extends BusinessFieldModelDao {
                                         final Long accountRecordId,
                                         final CustomField customField,
                                         final Long customFieldRecordId,
-                                        final AuditLog creationAuditLog,
+                                        @Nullable final AuditLog creationAuditLog,
                                         final Long tenantRecordId,
                                         @Nullable final ReportGroup reportGroup) {
         super(account,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountModelDao.java
index 234114f..9dea26d 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountModelDao.java
@@ -133,7 +133,7 @@ public class BusinessAccountModelDao extends BusinessModelDaoBase {
                                    @Nullable final Invoice lastInvoice,
                                    @Nullable final Payment lastPayment,
                                    final Integer nbActiveBundles,
-                                   final AuditLog creationAuditLog,
+                                   @Nullable final AuditLog creationAuditLog,
                                    final Long tenantRecordId,
                                    @Nullable final ReportGroup reportGroup) {
         this(account.getEmail(),
@@ -160,9 +160,9 @@ public class BusinessAccountModelDao extends BusinessModelDaoBase {
              lastPayment == null ? null : lastPayment.getPaymentStatus().toString(),
              nbActiveBundles,
              account.getCreatedDate(),
-             creationAuditLog.getUserName(),
-             creationAuditLog.getReasonCode(),
-             creationAuditLog.getComment(),
+             creationAuditLog != null ? creationAuditLog.getUserName() : null,
+             creationAuditLog != null ? creationAuditLog.getReasonCode() : null,
+             creationAuditLog != null ? creationAuditLog.getComment() : null,
              account.getId(),
              account.getName(),
              account.getExternalKey(),
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountTagModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountTagModelDao.java
index 55ef70d..219310e 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountTagModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessAccountTagModelDao.java
@@ -32,7 +32,7 @@ public class BusinessAccountTagModelDao extends BusinessTagModelDao {
                                       final Tag tag,
                                       final Long tagRecordId,
                                       final TagDefinition tagDefinition,
-                                      final AuditLog creationAuditLog,
+                                      @Nullable final AuditLog creationAuditLog,
                                       final Long tenantRecordId,
                                       @Nullable final ReportGroup reportGroup) {
         super(account,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessBundleSummaryModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessBundleSummaryModelDao.java
index 535d09c..fc7e2a4 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessBundleSummaryModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessBundleSummaryModelDao.java
@@ -109,7 +109,7 @@ public class BusinessBundleSummaryModelDao extends BusinessModelDaoBase {
                                          final Long bundleRecordId,
                                          final Integer bundleAccountRank,
                                          final BusinessSubscriptionTransitionModelDao bst,
-                                         final AuditLog creationAuditLog,
+                                         @Nullable final AuditLog creationAuditLog,
                                          final Long tenantRecordId,
                                          @Nullable final ReportGroup reportGroup) {
         this(bundleRecordId,
@@ -119,9 +119,9 @@ public class BusinessBundleSummaryModelDao extends BusinessModelDaoBase {
              bundleAccountRank,
              bst,
              bundle.getCreatedDate(),
-             creationAuditLog.getUserName(),
-             creationAuditLog.getReasonCode(),
-             creationAuditLog.getComment(),
+             creationAuditLog != null ? creationAuditLog.getUserName() : null,
+             creationAuditLog != null ? creationAuditLog.getReasonCode() : null,
+             creationAuditLog != null ? creationAuditLog.getComment() : null,
              account.getId(),
              account.getName(),
              account.getExternalKey(),
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessFieldModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessFieldModelDao.java
index a3b2904..9e71e90 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessFieldModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessFieldModelDao.java
@@ -43,7 +43,7 @@ public abstract class BusinessFieldModelDao extends BusinessModelDaoBase {
                                                final Long accountRecordId,
                                                final CustomField customField,
                                                final Long customFieldRecordId,
-                                               final AuditLog creationAuditLog,
+                                               @Nullable final AuditLog creationAuditLog,
                                                final Long tenantRecordId,
                                                @Nullable final ReportGroup reportGroup) {
         if (ObjectType.ACCOUNT.equals(customField.getObjectType())) {
@@ -110,16 +110,16 @@ public abstract class BusinessFieldModelDao extends BusinessModelDaoBase {
                                  final Long accountRecordId,
                                  final CustomField customField,
                                  final Long customFieldRecordId,
-                                 final AuditLog creationAuditLog,
+                                 @Nullable final AuditLog creationAuditLog,
                                  final Long tenantRecordId,
                                  @Nullable final ReportGroup reportGroup) {
         this(customFieldRecordId,
              customField.getFieldName(),
              customField.getFieldValue(),
              customField.getCreatedDate(),
-             creationAuditLog.getUserName(),
-             creationAuditLog.getReasonCode(),
-             creationAuditLog.getComment(),
+             creationAuditLog != null ? creationAuditLog.getUserName() : null,
+             creationAuditLog != null ? creationAuditLog.getReasonCode() : null,
+             creationAuditLog != null ? creationAuditLog.getComment() : null,
              account.getId(),
              account.getName(),
              account.getExternalKey(),
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceAdjustmentModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceAdjustmentModelDao.java
index 2114226..8c64231 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceAdjustmentModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceAdjustmentModelDao.java
@@ -40,7 +40,7 @@ public class BusinessInvoiceAdjustmentModelDao extends BusinessInvoiceItemBaseMo
                                              @Nullable final SubscriptionBundle bundle,
                                              @Nullable final Plan plan,
                                              @Nullable final PlanPhase planPhase,
-                                             final AuditLog creationAuditLog,
+                                             @Nullable final AuditLog creationAuditLog,
                                              final Long tenantRecordId,
                                              @Nullable final ReportGroup reportGroup) {
         super(account,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceFieldModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceFieldModelDao.java
index 4b4a137..e68c344 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceFieldModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceFieldModelDao.java
@@ -34,7 +34,7 @@ public class BusinessInvoiceFieldModelDao extends BusinessFieldModelDao {
                                         final Long accountRecordId,
                                         final CustomField customField,
                                         final Long customFieldRecordId,
-                                        final AuditLog creationAuditLog,
+                                        @Nullable final AuditLog creationAuditLog,
                                         final Long tenantRecordId,
                                         @Nullable final ReportGroup reportGroup) {
         super(account,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemAdjustmentModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemAdjustmentModelDao.java
index bbc2af6..fca1e6a 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemAdjustmentModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemAdjustmentModelDao.java
@@ -40,7 +40,7 @@ public class BusinessInvoiceItemAdjustmentModelDao extends BusinessInvoiceItemBa
                                                  @Nullable final SubscriptionBundle bundle,
                                                  @Nullable final Plan plan,
                                                  @Nullable final PlanPhase planPhase,
-                                                 final AuditLog creationAuditLog,
+                                                 @Nullable final AuditLog creationAuditLog,
                                                  final Long tenantRecordId,
                                                  @Nullable final ReportGroup reportGroup) {
         super(account,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemBaseModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemBaseModelDao.java
index cd70b84..f0fcef2 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemBaseModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemBaseModelDao.java
@@ -88,7 +88,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
                                                          @Nullable final SubscriptionBundle bundle,
                                                          @Nullable final Plan plan,
                                                          @Nullable final PlanPhase planPhase,
-                                                         final AuditLog creationAuditLog,
+                                                         @Nullable final AuditLog creationAuditLog,
                                                          final Long tenantRecordId,
                                                          @Nullable final ReportGroup reportGroup) {
         if (BusinessInvoiceItemType.INVOICE_ADJUSTMENT.equals(businessInvoiceItemType)) {
@@ -243,7 +243,7 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
                                            @Nullable final SubscriptionBundle bundle,
                                            @Nullable final Plan plan,
                                            @Nullable final PlanPhase planPhase,
-                                           final AuditLog creationAuditLog,
+                                           @Nullable final AuditLog creationAuditLog,
                                            final Long tenantRecordId,
                                            @Nullable final ReportGroup reportGroup) {
         this(invoiceItemRecordId,
@@ -276,9 +276,9 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
              invoiceItem.getCurrency() == null ? null : invoiceItem.getCurrency().toString(),
              invoiceItem.getLinkedItemId(),
              invoiceItem.getCreatedDate(),
-             creationAuditLog.getUserName(),
-             creationAuditLog.getReasonCode(),
-             creationAuditLog.getComment(),
+             creationAuditLog != null ? creationAuditLog.getUserName() : null,
+             creationAuditLog != null ? creationAuditLog.getReasonCode() : null,
+             creationAuditLog != null ? creationAuditLog.getComment() : null,
              account.getId(),
              account.getName(),
              account.getExternalKey(),
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemCreditModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemCreditModelDao.java
index bf26129..f9557d2 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemCreditModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemCreditModelDao.java
@@ -40,7 +40,7 @@ public class BusinessInvoiceItemCreditModelDao extends BusinessInvoiceItemBaseMo
                                              @Nullable final SubscriptionBundle bundle,
                                              @Nullable final Plan plan,
                                              @Nullable final PlanPhase planPhase,
-                                             final AuditLog creationAuditLogs,
+                                             @Nullable final AuditLog creationAuditLogs,
                                              final Long tenantRecordId,
                                              @Nullable final ReportGroup reportGroup) {
         super(account,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemModelDao.java
index 1e5602a..bd7832c 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceItemModelDao.java
@@ -40,7 +40,7 @@ public class BusinessInvoiceItemModelDao extends BusinessInvoiceItemBaseModelDao
                                        @Nullable final SubscriptionBundle bundle,
                                        @Nullable final Plan plan,
                                        @Nullable final PlanPhase planPhase,
-                                       final AuditLog creationAuditLog,
+                                       @Nullable final AuditLog creationAuditLog,
                                        final Long tenantRecordId,
                                        @Nullable final ReportGroup reportGroup) {
         super(account,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceModelDao.java
index 8cf25fb..650a86c 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceModelDao.java
@@ -94,7 +94,7 @@ public class BusinessInvoiceModelDao extends BusinessModelDaoBase {
                                    final Long accountRecordId,
                                    final Invoice invoice,
                                    final Long invoiceRecordId,
-                                   final AuditLog creationAuditLog,
+                                   @Nullable final AuditLog creationAuditLog,
                                    final Long tenantRecordId,
                                    @Nullable final ReportGroup reportGroup) {
         this(invoiceRecordId,
@@ -109,9 +109,9 @@ public class BusinessInvoiceModelDao extends BusinessModelDaoBase {
              invoice.getOriginalChargedAmount(),
              invoice.getCreditAdjAmount(),
              invoice.getCreatedDate(),
-             creationAuditLog.getUserName(),
-             creationAuditLog.getReasonCode(),
-             creationAuditLog.getComment(),
+             creationAuditLog != null ? creationAuditLog.getUserName() : null,
+             creationAuditLog != null ? creationAuditLog.getReasonCode() : null,
+             creationAuditLog != null ? creationAuditLog.getComment() : null,
              account.getId(),
              account.getName(),
              account.getExternalKey(),
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentBaseModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentBaseModelDao.java
index 7cfb5f5..ef83f73 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentBaseModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentBaseModelDao.java
@@ -92,7 +92,7 @@ public abstract class BusinessInvoicePaymentBaseModelDao extends BusinessModelDa
                                                             final Payment payment,
                                                             final Refund refund,
                                                             final PaymentMethod paymentMethod,
-                                                            final AuditLog creationAuditLog,
+                                                            @Nullable final AuditLog creationAuditLog,
                                                             final Long tenantRecordId,
                                                             @Nullable final ReportGroup reportGroup) {
         if (invoicePayment.getType().equals(InvoicePaymentType.REFUND)) {
@@ -250,7 +250,7 @@ public abstract class BusinessInvoicePaymentBaseModelDao extends BusinessModelDa
                                                  final Payment payment,
                                                  @Nullable final Refund refund,
                                                  final PaymentMethod paymentMethod,
-                                                 final AuditLog creationAuditLog,
+                                                 @Nullable final AuditLog creationAuditLog,
                                                  final Long tenantRecordId,
                                                  @Nullable final ReportGroup reportGroup) {
         this(invoicePaymentRecordId,
@@ -296,9 +296,9 @@ public abstract class BusinessInvoicePaymentBaseModelDao extends BusinessModelDa
              paymentMethod.getPluginDetail() != null ? paymentMethod.getPluginDetail().getZip() : null,
              paymentMethod.getPluginDetail() != null ? paymentMethod.getPluginDetail().getCountry() : null,
              invoicePayment.getCreatedDate(),
-             creationAuditLog.getUserName(),
-             creationAuditLog.getReasonCode(),
-             creationAuditLog.getComment(),
+             creationAuditLog != null ? creationAuditLog.getUserName() : null,
+             creationAuditLog != null ? creationAuditLog.getReasonCode() : null,
+             creationAuditLog != null ? creationAuditLog.getComment() : null,
              account.getId(),
              account.getName(),
              account.getExternalKey(),
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentChargebackModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentChargebackModelDao.java
index d1a434a..82cc0ba 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentChargebackModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentChargebackModelDao.java
@@ -38,7 +38,7 @@ public class BusinessInvoicePaymentChargebackModelDao extends BusinessInvoicePay
                                                     final Payment payment,
                                                     final Refund refund,
                                                     final PaymentMethod paymentMethod,
-                                                    final AuditLog creationAuditLog,
+                                                    @Nullable final AuditLog creationAuditLog,
                                                     final Long tenantRecordId,
                                                     @Nullable final ReportGroup reportGroup) {
         super(account,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentFieldModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentFieldModelDao.java
index 2cd2b7b..687ccb5 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentFieldModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentFieldModelDao.java
@@ -34,7 +34,7 @@ public class BusinessInvoicePaymentFieldModelDao extends BusinessFieldModelDao {
                                                final Long accountRecordId,
                                                final CustomField customField,
                                                final Long customFieldRecordId,
-                                               final AuditLog creationAuditLog,
+                                               @Nullable final AuditLog creationAuditLog,
                                                final Long tenantRecordId,
                                                @Nullable final ReportGroup reportGroup) {
         super(account,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentModelDao.java
index 23ea91f..25ee461 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentModelDao.java
@@ -38,7 +38,7 @@ public class BusinessInvoicePaymentModelDao extends BusinessInvoicePaymentBaseMo
                                           final Payment payment,
                                           final Refund refund,
                                           final PaymentMethod paymentMethod,
-                                          final AuditLog creationAuditLog,
+                                          @Nullable final AuditLog creationAuditLog,
                                           final Long tenantRecordId,
                                           @Nullable final ReportGroup reportGroup) {
         super(account,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentRefundModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentRefundModelDao.java
index ab367e0..98d8d9d 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentRefundModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentRefundModelDao.java
@@ -38,7 +38,7 @@ public class BusinessInvoicePaymentRefundModelDao extends BusinessInvoicePayment
                                                 final Payment payment,
                                                 final Refund refund,
                                                 final PaymentMethod paymentMethod,
-                                                final AuditLog creationAuditLog,
+                                                @Nullable final AuditLog creationAuditLog,
                                                 final Long tenantRecordId,
                                                 @Nullable final ReportGroup reportGroup) {
         super(account,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentTagModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentTagModelDao.java
index 3ed4207..108e48e 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentTagModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoicePaymentTagModelDao.java
@@ -36,7 +36,7 @@ public class BusinessInvoicePaymentTagModelDao extends BusinessTagModelDao {
                                              final Tag tag,
                                              final Long tagRecordId,
                                              final TagDefinition tagDefinition,
-                                             final AuditLog creationAuditLog,
+                                             @Nullable final AuditLog creationAuditLog,
                                              final Long tenantRecordId,
                                              @Nullable final ReportGroup reportGroup) {
         super(account,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceTagModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceTagModelDao.java
index b695760..0ab543b 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceTagModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessInvoiceTagModelDao.java
@@ -36,7 +36,7 @@ public class BusinessInvoiceTagModelDao extends BusinessTagModelDao {
                                       final Tag tag,
                                       final Long tagRecordId,
                                       final TagDefinition tagDefinition,
-                                      final AuditLog creationAuditLog,
+                                      @Nullable final AuditLog creationAuditLog,
                                       final Long tenantRecordId,
                                       @Nullable final ReportGroup reportGroup) {
         super(account,
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessOverdueStatusModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessOverdueStatusModelDao.java
index 7abf1cf..59af1d0 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessOverdueStatusModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessOverdueStatusModelDao.java
@@ -79,7 +79,7 @@ public class BusinessOverdueStatusModelDao extends BusinessModelDaoBase {
                                          final BlockingState blockingState,
                                          final Long blockingStateRecordId,
                                          final DateTime endDate,
-                                         final AuditLog creationAuditLog,
+                                         @Nullable final AuditLog creationAuditLog,
                                          final Long tenantRecordId,
                                          @Nullable final ReportGroup reportGroup) {
         this(blockingStateRecordId,
@@ -89,9 +89,9 @@ public class BusinessOverdueStatusModelDao extends BusinessModelDaoBase {
              blockingState.getTimestamp(),
              endDate,
              blockingState.getCreatedDate(),
-             creationAuditLog.getUserName(),
-             creationAuditLog.getReasonCode(),
-             creationAuditLog.getComment(),
+             creationAuditLog != null ? creationAuditLog.getUserName() : null,
+             creationAuditLog != null ? creationAuditLog.getReasonCode() : null,
+             creationAuditLog != null ? creationAuditLog.getComment() : null,
              account.getId(),
              account.getName(),
              account.getExternalKey(),
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessSubscriptionTransitionModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessSubscriptionTransitionModelDao.java
index 346f837..f12cc58 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessSubscriptionTransitionModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessSubscriptionTransitionModelDao.java
@@ -164,7 +164,7 @@ public class BusinessSubscriptionTransitionModelDao extends BusinessModelDaoBase
                                                   final BusinessSubscriptionEvent event,
                                                   @Nullable final BusinessSubscription previousSubscription,
                                                   final BusinessSubscription nextSubscription,
-                                                  final AuditLog creationAuditLog,
+                                                  @Nullable final AuditLog creationAuditLog,
                                                   final Long tenantRecordId,
                                                   @Nullable final ReportGroup reportGroup) {
         this(subscriptionEventRecordId,
@@ -176,9 +176,9 @@ public class BusinessSubscriptionTransitionModelDao extends BusinessModelDaoBase
              previousSubscription,
              nextSubscription,
              transition.getNextEventCreatedDate(),
-             creationAuditLog.getUserName(),
-             creationAuditLog.getReasonCode(),
-             creationAuditLog.getComment(),
+             creationAuditLog != null ? creationAuditLog.getUserName() : null,
+             creationAuditLog != null ? creationAuditLog.getReasonCode() : null,
+             creationAuditLog != null ? creationAuditLog.getComment() : null,
              account.getId(),
              account.getName(),
              account.getExternalKey(),
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessTagModelDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessTagModelDao.java
index 4aa7378..8a4868d 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessTagModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessTagModelDao.java
@@ -44,7 +44,7 @@ public abstract class BusinessTagModelDao extends BusinessModelDaoBase {
                                              final Tag tag,
                                              final Long tagRecordId,
                                              final TagDefinition tagDefinition,
-                                             final AuditLog creationAuditLog,
+                                             @Nullable final AuditLog creationAuditLog,
                                              final Long tenantRecordId,
                                              @Nullable final ReportGroup reportGroup) {
         if (ObjectType.ACCOUNT.equals(tag.getObjectType())) {
@@ -113,15 +113,15 @@ public abstract class BusinessTagModelDao extends BusinessModelDaoBase {
                                final Tag tag,
                                final Long tagRecordId,
                                final TagDefinition tagDefinition,
-                               final AuditLog creationAuditLog,
+                               @Nullable final AuditLog creationAuditLog,
                                final Long tenantRecordId,
                                @Nullable final ReportGroup reportGroup) {
         this(tagRecordId,
              tagDefinition.getName(),
              tag.getCreatedDate(),
-             creationAuditLog.getUserName(),
-             creationAuditLog.getReasonCode(),
-             creationAuditLog.getComment(),
+             creationAuditLog != null ? creationAuditLog.getUserName() : null,
+             creationAuditLog != null ? creationAuditLog.getReasonCode() : null,
+             creationAuditLog != null ? creationAuditLog.getComment() : null,
              account.getId(),
              account.getName(),
              account.getExternalKey(),
diff --git a/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/ddl.sql b/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/ddl.sql
index 3814223..7eca803 100644
--- a/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/ddl.sql
+++ b/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/ddl.sql
@@ -5,11 +5,11 @@ drop table if exists bst;
 create table bst (
   record_id int(11) unsigned not null auto_increment
 , subscription_event_record_id int(11) unsigned default null
-, bundle_id char(36) not null
-, bundle_external_key varchar(50) not null
-, subscription_id char(36) not null
-, requested_timestamp datetime not null
-, event varchar(50) not null
+, bundle_id char(36) default null
+, bundle_external_key varchar(50) default null
+, subscription_id char(36) default null
+, requested_timestamp datetime default null
+, event varchar(50) default null
 , prev_product_name varchar(50) default null
 , prev_product_type varchar(50) default null
 , prev_product_category varchar(50) default null
@@ -37,13 +37,13 @@ create table bst (
 , next_business_active bool default true
 , next_start_date datetime default null
 , next_end_date datetime default null
-, created_date datetime not null
-, created_by varchar(50) not null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -59,10 +59,10 @@ drop table if exists bbs;
 create table bbs (
   record_id int(11) unsigned not null auto_increment
 , bundle_record_id int(11) unsigned default null
-, bundle_id char(36) not null
-, bundle_external_key varchar(50) not null
-, subscription_id char(36) not null
-, bundle_account_rank int(11) not null
+, bundle_id char(36) default null
+, bundle_external_key varchar(50) default null
+, subscription_id char(36) default null
+, bundle_account_rank int(11) default null
 , charged_through_date datetime default null
 , current_product_name varchar(50) default null
 , current_product_type varchar(50) default null
@@ -78,13 +78,13 @@ create table bbs (
 , current_business_active bool default true
 , current_start_date datetime default null
 , current_end_date datetime default null
-, created_date datetime not null
-, created_by varchar(50) not null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -99,8 +99,8 @@ create index bbs_tenant_account_record_id on bbs(tenant_record_id, account_recor
 drop table if exists bac;
 create table bac (
   record_id int(11) unsigned not null auto_increment
-, email varchar(128) not null
-, first_name_length int not null
+, email varchar(128) default null
+, first_name_length int(11) default null
 , currency char(3) default null
 , billing_cycle_day_local int default null
 , payment_method_id char(36) default null
@@ -115,20 +115,20 @@ create table bac (
 , postal_code varchar(16) default null
 , phone varchar(25) default null
 , migrated bool default false
-, notified_for_invoices boolean not null
+, notified_for_invoices boolean default null
 , balance numeric(10, 4) default 0
 , last_invoice_date date default null
 , last_payment_date datetime default null
 , last_payment_status varchar(255) default null
 , nb_active_bundles int(11) default 0
-, created_date datetime not null
-, created_by varchar(50) not null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, updated_date datetime not null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, updated_date datetime default null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -144,23 +144,23 @@ drop table if exists bin;
 create table bin (
   record_id int(11) unsigned not null auto_increment
 , invoice_record_id int(11) unsigned default null
-, invoice_id char(36) not null
+, invoice_id char(36) default null
 , invoice_number bigint default null
-, invoice_date date not null
-, target_date date not null
-, currency char(50) not null
+, invoice_date date default null
+, target_date date default null
+, currency char(50) default null
 , balance numeric(10, 4) default 0
 , amount_paid numeric(10, 4) default 0
 , amount_charged numeric(10, 4) default 0
 , original_amount_charged numeric(10, 4) default 0
 , amount_credited numeric(10, 4) default 0
-, created_date datetime not null
-, created_by varchar(50) not null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -178,19 +178,19 @@ create table bia (
   record_id int(11) unsigned not null auto_increment
 , invoice_item_record_id int(11) unsigned default null
 , second_invoice_item_record_id int(11) unsigned default null
-, item_id char(36) not null
-, invoice_id char(36) not null
+, item_id char(36) default null
+, invoice_id char(36) default null
 , invoice_number bigint default null
-, invoice_created_date datetime not null
-, invoice_date date not null
-, invoice_target_date date not null
-, invoice_currency char(50) not null
+, invoice_created_date datetime default null
+, invoice_date date default null
+, invoice_target_date date default null
+, invoice_currency char(50) default null
 , invoice_balance numeric(10, 4) default 0
 , invoice_amount_paid numeric(10, 4) default 0
 , invoice_amount_charged numeric(10, 4) default 0
 , invoice_original_amount_charged numeric(10, 4) default 0
 , invoice_amount_credited numeric(10, 4) default 0
-, item_type char(50) not null
+, item_type char(50) default null
 , revenue_recognizable bool default true
 , bundle_external_key varchar(50) default null
 , product_name varchar(50) default null
@@ -204,13 +204,13 @@ create table bia (
 , amount numeric(10, 4) default 0
 , currency char(50) default null
 , linked_item_id char(36) default null
-, created_date datetime not null
-, created_by varchar(50) not null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -228,19 +228,19 @@ create table bii (
   record_id int(11) unsigned not null auto_increment
 , invoice_item_record_id int(11) unsigned default null
 , second_invoice_item_record_id int(11) unsigned default null
-, item_id char(36) not null
-, invoice_id char(36) not null
+, item_id char(36) default null
+, invoice_id char(36) default null
 , invoice_number bigint default null
-, invoice_created_date datetime not null
-, invoice_date date not null
-, invoice_target_date date not null
-, invoice_currency char(50) not null
+, invoice_created_date datetime default null
+, invoice_date date default null
+, invoice_target_date date default null
+, invoice_currency char(50) default null
 , invoice_balance numeric(10, 4) default 0
 , invoice_amount_paid numeric(10, 4) default 0
 , invoice_amount_charged numeric(10, 4) default 0
 , invoice_original_amount_charged numeric(10, 4) default 0
 , invoice_amount_credited numeric(10, 4) default 0
-, item_type char(50) not null
+, item_type char(50) default null
 , revenue_recognizable bool default true
 , bundle_external_key varchar(50) default null
 , product_name varchar(50) default null
@@ -254,13 +254,13 @@ create table bii (
 , amount numeric(10, 4) default 0
 , currency char(50) default null
 , linked_item_id char(36) default null
-, created_date datetime not null
-, created_by varchar(50) not null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -278,19 +278,19 @@ create table biia (
   record_id int(11) unsigned not null auto_increment
 , invoice_item_record_id int(11) unsigned default null
 , second_invoice_item_record_id int(11) unsigned default null
-, item_id char(36) not null
-, invoice_id char(36) not null
+, item_id char(36) default null
+, invoice_id char(36) default null
 , invoice_number bigint default null
-, invoice_created_date datetime not null
-, invoice_date date not null
-, invoice_target_date date not null
-, invoice_currency char(50) not null
+, invoice_created_date datetime default null
+, invoice_date date default null
+, invoice_target_date date default null
+, invoice_currency char(50) default null
 , invoice_balance numeric(10, 4) default 0
 , invoice_amount_paid numeric(10, 4) default 0
 , invoice_amount_charged numeric(10, 4) default 0
 , invoice_original_amount_charged numeric(10, 4) default 0
 , invoice_amount_credited numeric(10, 4) default 0
-, item_type char(50) not null
+, item_type char(50) default null
 , revenue_recognizable bool default true
 , bundle_external_key varchar(50) default null
 , product_name varchar(50) default null
@@ -304,13 +304,13 @@ create table biia (
 , amount numeric(10, 4) default 0
 , currency char(50) default null
 , linked_item_id char(36) default null
-, created_date datetime not null
-, created_by varchar(50) not null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -328,19 +328,19 @@ create table biic (
   record_id int(11) unsigned not null auto_increment
 , invoice_item_record_id int(11) unsigned default null
 , second_invoice_item_record_id int(11) unsigned default null
-, item_id char(36) not null
-, invoice_id char(36) not null
+, item_id char(36) default null
+, invoice_id char(36) default null
 , invoice_number bigint default null
-, invoice_created_date datetime not null
-, invoice_date date not null
-, invoice_target_date date not null
-, invoice_currency char(50) not null
+, invoice_created_date datetime default null
+, invoice_date date default null
+, invoice_target_date date default null
+, invoice_currency char(50) default null
 , invoice_balance numeric(10, 4) default 0
 , invoice_amount_paid numeric(10, 4) default 0
 , invoice_amount_charged numeric(10, 4) default 0
 , invoice_original_amount_charged numeric(10, 4) default 0
 , invoice_amount_credited numeric(10, 4) default 0
-, item_type char(50) not null
+, item_type char(50) default null
 , revenue_recognizable bool default true
 , bundle_external_key varchar(50) default null
 , product_name varchar(50) default null
@@ -354,13 +354,13 @@ create table biic (
 , amount numeric(10, 4) default 0
 , currency char(50) default null
 , linked_item_id char(36) default null
-, created_date datetime not null
-, created_by varchar(50) not null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -377,13 +377,13 @@ drop table if exists bip;
 create table bip (
   record_id int(11) unsigned not null auto_increment
 , invoice_payment_record_id int(11) unsigned default null
-, invoice_payment_id char(36) not null
-, invoice_id char(36) not null
+, invoice_payment_id char(36) default null
+, invoice_id char(36) default null
 , invoice_number bigint default null
-, invoice_created_date datetime not null
-, invoice_date date not null
-, invoice_target_date date not null
-, invoice_currency char(50) not null
+, invoice_created_date datetime default null
+, invoice_date date default null
+, invoice_target_date date default null
+, invoice_currency char(50) default null
 , invoice_balance numeric(10, 4) default 0
 , invoice_amount_paid numeric(10, 4) default 0
 , invoice_amount_charged numeric(10, 4) default 0
@@ -417,13 +417,13 @@ create table bip (
 , plugin_pm_state varchar(255) default null
 , plugin_pm_zip varchar(255) default null
 , plugin_pm_country varchar(255) default null
-, created_date datetime not null
-, created_by varchar(50) not null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -440,13 +440,13 @@ drop table if exists bipr;
 create table bipr (
   record_id int(11) unsigned not null auto_increment
 , invoice_payment_record_id int(11) unsigned default null
-, invoice_payment_id char(36) not null
-, invoice_id char(36) not null
+, invoice_payment_id char(36) default null
+, invoice_id char(36) default null
 , invoice_number bigint default null
-, invoice_created_date datetime not null
-, invoice_date date not null
-, invoice_target_date date not null
-, invoice_currency char(50) not null
+, invoice_created_date datetime default null
+, invoice_date date default null
+, invoice_target_date date default null
+, invoice_currency char(50) default null
 , invoice_balance numeric(10, 4) default 0
 , invoice_amount_paid numeric(10, 4) default 0
 , invoice_amount_charged numeric(10, 4) default 0
@@ -481,13 +481,13 @@ create table bipr (
 , plugin_pm_state varchar(255) default null
 , plugin_pm_zip varchar(255) default null
 , plugin_pm_country varchar(255) default null
-, created_date datetime not null
-, created_by varchar(50) not null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -504,13 +504,13 @@ drop table if exists bipc;
 create table bipc (
   record_id int(11) unsigned not null auto_increment
 , invoice_payment_record_id int(11) unsigned default null
-, invoice_payment_id char(36) not null
-, invoice_id char(36) not null
+, invoice_payment_id char(36) default null
+, invoice_id char(36) default null
 , invoice_number bigint default null
-, invoice_created_date datetime not null
-, invoice_date date not null
-, invoice_target_date date not null
-, invoice_currency char(50) not null
+, invoice_created_date datetime default null
+, invoice_date date default null
+, invoice_target_date date default null
+, invoice_currency char(50) default null
 , invoice_balance numeric(10, 4) default 0
 , invoice_amount_paid numeric(10, 4) default 0
 , invoice_amount_charged numeric(10, 4) default 0
@@ -544,13 +544,13 @@ create table bipc (
 , plugin_pm_state varchar(255) default null
 , plugin_pm_zip varchar(255) default null
 , plugin_pm_country varchar(255) default null
-, created_date datetime not null
-, created_by varchar(50) not null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -566,18 +566,18 @@ drop table if exists bos;
 create table bos (
   record_id int(11) unsigned not null auto_increment
 , blocking_state_record_id int(11) unsigned default null
-, bundle_id char(36) not null
-, bundle_external_key varchar(50) not null
-, status varchar(50) not null
+, bundle_id char(36) default null
+, bundle_external_key varchar(50) default null
+, status varchar(50) default null
 , start_date datetime default null
 , end_date datetime default null
-, created_date datetime not null
-, created_by varchar(50) not null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -591,14 +591,14 @@ drop table if exists bac_tags;
 create table bac_tags (
   record_id int(11) unsigned not null auto_increment
 , tag_record_id int(11) unsigned default null
-, name varchar(50) not null
-, created_date datetime not null
-, created_by varchar(50) not null
+, name varchar(50) default null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -612,15 +612,15 @@ drop table if exists bin_tags;
 create table bin_tags (
   record_id int(11) unsigned not null auto_increment
 , tag_record_id int(11) unsigned default null
-, invoice_id char(36) not null
-, name varchar(50) not null
-, created_date datetime not null
-, created_by varchar(50) not null
+, invoice_id char(36) default null
+, name varchar(50) default null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -634,15 +634,15 @@ drop table if exists bip_tags;
 create table bip_tags (
   record_id int(11) unsigned not null auto_increment
 , tag_record_id int(11) unsigned default null
-, invoice_payment_id char(36) not null
-, name varchar(50) not null
-, created_date datetime not null
-, created_by varchar(50) not null
+, invoice_payment_id char(36) default null
+, name varchar(50) default null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -656,15 +656,15 @@ drop table if exists bac_fields;
 create table bac_fields (
   record_id int(11) unsigned not null auto_increment
 , custom_field_record_id int(11) unsigned default null
-, name varchar(50) not null
+, name varchar(50) default null
 , value varchar(255) default null
-, created_date datetime not null
-, created_by varchar(50) not null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -678,16 +678,16 @@ drop table if exists bin_fields;
 create table bin_fields (
   record_id int(11) unsigned not null auto_increment
 , custom_field_record_id int(11) unsigned default null
-, invoice_id char(36) not null
-, name varchar(50) not null
+, invoice_id char(36) default null
+, name varchar(50) default null
 , value varchar(255) default null
-, created_date datetime not null
-, created_by varchar(50) not null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null
@@ -701,16 +701,16 @@ drop table if exists bip_fields;
 create table bip_fields (
   record_id int(11) unsigned not null auto_increment
 , custom_field_record_id int(11) unsigned default null
-, invoice_payment_id char(36) not null
-, name varchar(50) not null
+, invoice_payment_id char(36) default null
+, name varchar(50) default null
 , value varchar(255) default null
-, created_date datetime not null
-, created_by varchar(50) not null
+, created_date datetime default null
+, created_by varchar(50) default null
 , created_reason_code varchar(255) default null
 , created_comments varchar(255) default null
-, account_id char(36) not null
-, account_name varchar(100) not null
-, account_external_key varchar(50) not null
+, account_id char(36) default null
+, account_name varchar(100) default null
+, account_external_key varchar(50) default null
 , account_record_id int(11) unsigned default null
 , tenant_record_id int(11) unsigned default null
 , report_group enum('default', 'test', 'partner') not null