killbill-uncached

analytics: implement report groups Signed-off-by: Pierre-Alexandre

4/11/2013 5:13:29 PM

Changes

Details

diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessAccount.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessAccount.java
index 65686e9..0e5b83f 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessAccount.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessAccount.java
@@ -56,7 +56,8 @@ public class BusinessAccount extends BusinessEntityBase {
               businessAccountModelDao.getCreatedComments(),
               businessAccountModelDao.getAccountId(),
               businessAccountModelDao.getAccountName(),
-              businessAccountModelDao.getAccountExternalKey());
+              businessAccountModelDao.getAccountExternalKey(),
+              businessAccountModelDao.getReportGroup());
         this.email = businessAccountModelDao.getEmail();
         this.firstNameLength = businessAccountModelDao.getFirstNameLength();
         this.currency = businessAccountModelDao.getCurrency();
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessEntityBase.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessEntityBase.java
index f98522d..2ce64d7 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessEntityBase.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessEntityBase.java
@@ -29,10 +29,16 @@ public abstract class BusinessEntityBase {
     protected final UUID accountId;
     protected final String accountName;
     protected final String accountExternalKey;
-
-    public BusinessEntityBase(final DateTime createdDate, final String createdBy, final String createdReasonCode,
-                              final String createdComments, final UUID accountId, final String accountName,
-                              final String accountExternalKey) {
+    protected final String reportGroup;
+
+    public BusinessEntityBase(final DateTime createdDate,
+                              final String createdBy,
+                              final String createdReasonCode,
+                              final String createdComments,
+                              final UUID accountId,
+                              final String accountName,
+                              final String accountExternalKey,
+                              final String reportGroup) {
         this.createdDate = createdDate;
         this.createdBy = createdBy;
         this.createdReasonCode = createdReasonCode;
@@ -40,6 +46,7 @@ public abstract class BusinessEntityBase {
         this.accountId = accountId;
         this.accountName = accountName;
         this.accountExternalKey = accountExternalKey;
+        this.reportGroup = reportGroup;
     }
 
     public DateTime getCreatedDate() {
@@ -70,6 +77,10 @@ public abstract class BusinessEntityBase {
         return accountExternalKey;
     }
 
+    public String getReportGroup() {
+        return reportGroup;
+    }
+
     @Override
     public String toString() {
         final StringBuilder sb = new StringBuilder();
@@ -81,6 +92,7 @@ public abstract class BusinessEntityBase {
         sb.append(", accountId=").append(accountId);
         sb.append(", accountName='").append(accountName).append('\'');
         sb.append(", accountExternalKey='").append(accountExternalKey).append('\'');
+        sb.append(", reportGroup='").append(reportGroup).append('\'');
         sb.append('}');
         return sb.toString();
     }
@@ -117,6 +129,9 @@ public abstract class BusinessEntityBase {
         if (createdReasonCode != null ? !createdReasonCode.equals(that.createdReasonCode) : that.createdReasonCode != null) {
             return false;
         }
+        if (reportGroup != null ? !reportGroup.equals(that.reportGroup) : that.reportGroup != null) {
+            return false;
+        }
 
         return true;
     }
@@ -130,6 +145,7 @@ public abstract class BusinessEntityBase {
         result = 31 * result + (accountId != null ? accountId.hashCode() : 0);
         result = 31 * result + (accountName != null ? accountName.hashCode() : 0);
         result = 31 * result + (accountExternalKey != null ? accountExternalKey.hashCode() : 0);
+        result = 31 * result + (reportGroup != null ? reportGroup.hashCode() : 0);
         return result;
     }
 }
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessField.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessField.java
index 15821d5..8324189 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessField.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessField.java
@@ -35,7 +35,8 @@ public class BusinessField extends BusinessEntityBase {
               businessFieldModelDao.getCreatedComments(),
               businessFieldModelDao.getAccountId(),
               businessFieldModelDao.getAccountName(),
-              businessFieldModelDao.getAccountExternalKey());
+              businessFieldModelDao.getAccountExternalKey(),
+              businessFieldModelDao.getReportGroup());
         this.objectType = objectType;
         this.name = businessFieldModelDao.getName();
         this.value = businessFieldModelDao.getValue();
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoice.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoice.java
index 6e4feda..c35527c 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoice.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoice.java
@@ -49,7 +49,8 @@ public class BusinessInvoice extends BusinessEntityBase {
               businessInvoiceModelDao.getCreatedComments(),
               businessInvoiceModelDao.getAccountId(),
               businessInvoiceModelDao.getAccountName(),
-              businessInvoiceModelDao.getAccountExternalKey());
+              businessInvoiceModelDao.getAccountExternalKey(),
+              businessInvoiceModelDao.getReportGroup());
         this.invoiceId = businessInvoiceModelDao.getInvoiceId();
         this.invoiceNumber = businessInvoiceModelDao.getInvoiceNumber();
         this.invoiceDate = businessInvoiceModelDao.getInvoiceDate();
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoiceItem.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoiceItem.java
index f47415d..5b29a8a 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoiceItem.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoiceItem.java
@@ -60,7 +60,8 @@ public class BusinessInvoiceItem extends BusinessEntityBase {
               businessInvoiceItemBaseModelDao.getCreatedComments(),
               businessInvoiceItemBaseModelDao.getAccountId(),
               businessInvoiceItemBaseModelDao.getAccountName(),
-              businessInvoiceItemBaseModelDao.getAccountExternalKey());
+              businessInvoiceItemBaseModelDao.getAccountExternalKey(),
+              businessInvoiceItemBaseModelDao.getReportGroup());
         this.itemId = businessInvoiceItemBaseModelDao.getItemId();
         this.invoiceId = businessInvoiceItemBaseModelDao.getInvoiceId();
         this.invoiceNumber = businessInvoiceItemBaseModelDao.getInvoiceNumber();
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoicePayment.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoicePayment.java
index d5cd664..97189d3 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoicePayment.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessInvoicePayment.java
@@ -51,7 +51,8 @@ public class BusinessInvoicePayment extends BusinessEntityBase {
               businessInvoicePaymentBaseModelDao.getCreatedComments(),
               businessInvoicePaymentBaseModelDao.getAccountId(),
               businessInvoicePaymentBaseModelDao.getAccountName(),
-              businessInvoicePaymentBaseModelDao.getAccountExternalKey());
+              businessInvoicePaymentBaseModelDao.getAccountExternalKey(),
+              businessInvoicePaymentBaseModelDao.getReportGroup());
         this.invoicePaymentId = businessInvoicePaymentBaseModelDao.getInvoicePaymentId();
         this.invoiceId = businessInvoicePaymentBaseModelDao.getInvoiceId();
         this.invoiceNumber = businessInvoicePaymentBaseModelDao.getInvoiceNumber();
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessOverdueStatus.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessOverdueStatus.java
index b4c52c2..a6151a3 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessOverdueStatus.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessOverdueStatus.java
@@ -35,7 +35,8 @@ public class BusinessOverdueStatus extends BusinessEntityBase {
               businessOverdueStatusModelDao.getCreatedComments(),
               businessOverdueStatusModelDao.getAccountId(),
               businessOverdueStatusModelDao.getAccountName(),
-              businessOverdueStatusModelDao.getAccountExternalKey());
+              businessOverdueStatusModelDao.getAccountExternalKey(),
+              businessOverdueStatusModelDao.getReportGroup());
 
         // TODO For now
         this.objectType = ObjectType.BUNDLE.toString();
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessSubscriptionTransition.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessSubscriptionTransition.java
index 4a1f6ed..660fdc7 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessSubscriptionTransition.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessSubscriptionTransition.java
@@ -28,7 +28,6 @@ public class BusinessSubscriptionTransition extends BusinessEntityBase {
     private final UUID bundleId;
     private final String bundleExternalKey;
     private final UUID subscriptionId;
-
     private final DateTime requestedTimestamp;
     private final String event;
 
@@ -68,7 +67,8 @@ public class BusinessSubscriptionTransition extends BusinessEntityBase {
               bstModelDao.getCreatedComments(),
               bstModelDao.getAccountId(),
               bstModelDao.getAccountName(),
-              bstModelDao.getAccountExternalKey());
+              bstModelDao.getAccountExternalKey(),
+              bstModelDao.getReportGroup());
 
         this.bundleId = bstModelDao.getBundleId();
         this.bundleExternalKey = bstModelDao.getBundleExternalKey();
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessTag.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessTag.java
index 4f410d8..08d99f6 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessTag.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/api/BusinessTag.java
@@ -34,7 +34,8 @@ public class BusinessTag extends BusinessEntityBase {
               businessTagModelDao.getCreatedComments(),
               businessTagModelDao.getAccountId(),
               businessTagModelDao.getAccountName(),
-              businessTagModelDao.getAccountExternalKey());
+              businessTagModelDao.getAccountExternalKey(),
+              businessTagModelDao.getReportGroup());
         this.objectType = objectType;
         this.name = businessTagModelDao.getName();
     }
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 6082aeb..2bf4f95 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
@@ -45,6 +45,7 @@ import com.ning.billing.invoice.api.InvoicePaymentApi;
 import com.ning.billing.invoice.api.InvoiceUserApi;
 import com.ning.billing.junction.api.BlockingState;
 import com.ning.billing.junction.api.JunctionApi;
+import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessModelDaoBase.ReportGroup;
 import com.ning.billing.payment.api.Payment;
 import com.ning.billing.payment.api.PaymentApi;
 import com.ning.billing.payment.api.PaymentApiException;
@@ -62,6 +63,7 @@ import com.ning.billing.util.audit.ChangeType;
 import com.ning.billing.util.callcontext.CallContext;
 import com.ning.billing.util.callcontext.TenantContext;
 import com.ning.billing.util.customfield.CustomField;
+import com.ning.billing.util.tag.ControlTagType;
 import com.ning.billing.util.tag.Tag;
 import com.ning.billing.util.tag.TagDefinition;
 import com.ning.killbill.osgi.libs.killbill.OSGIKillbillAPI;
@@ -118,6 +120,30 @@ public abstract class BusinessAnalyticsBase {
         return recordIdUserApi.getRecordId(accountId, ObjectType.ACCOUNT, context);
     }
 
+    protected ReportGroup getReportGroup(final UUID accountId, final TenantContext context) throws AnalyticsRefreshException {
+        final TagUserApi tagUserApi = getTagUserApi();
+        boolean isTestAccount = false;
+        boolean isPartnerAccount = false;
+
+        final List<Tag> tagForAccount = tagUserApi.getTagsForObject(accountId, ObjectType.TAG, context);
+        for (final Tag tag : tagForAccount) {
+            if (ControlTagType.TEST.getId().equals(tag.getTagDefinitionId())) {
+                isTestAccount = true;
+            } else if (ControlTagType.PARTNER.getId().equals(tag.getTagDefinitionId())) {
+                isPartnerAccount = true;
+            }
+        }
+
+        // Test group has precedence
+        if (isTestAccount) {
+            return ReportGroup.test;
+        } else if (isPartnerAccount) {
+            return ReportGroup.partner;
+        } else {
+            return null;
+        }
+    }
+
     //
     // SUBSCRIPTION
     //
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessAccountDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessAccountDao.java
index d31593d..11d8cb1 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessAccountDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessAccountDao.java
@@ -27,6 +27,7 @@ import com.ning.billing.account.api.Account;
 import com.ning.billing.invoice.api.Invoice;
 import com.ning.billing.osgi.bundles.analytics.AnalyticsRefreshException;
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessAccountModelDao;
+import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessModelDaoBase.ReportGroup;
 import com.ning.billing.payment.api.Payment;
 import com.ning.billing.util.audit.AuditLog;
 import com.ning.billing.util.callcontext.CallContext;
@@ -92,6 +93,7 @@ public class BusinessAccountDao extends BusinessAnalyticsDaoBase {
 
         final Long accountRecordId = getAccountRecordId(account.getId(), context);
         final Long tenantRecordId = getTenantRecordId(context);
+        final ReportGroup reportGroup = getReportGroup(account.getId(), context);
 
         return new BusinessAccountModelDao(account,
                                            accountRecordId,
@@ -99,6 +101,7 @@ public class BusinessAccountDao extends BusinessAnalyticsDaoBase {
                                            lastInvoice,
                                            lastPayment,
                                            creationAuditLog,
-                                           tenantRecordId);
+                                           tenantRecordId,
+                                           reportGroup);
     }
 }
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessFieldDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessFieldDao.java
index 5f27d3e..d1b330e 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessFieldDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessFieldDao.java
@@ -26,6 +26,7 @@ import org.skife.jdbi.v2.TransactionStatus;
 import com.ning.billing.account.api.Account;
 import com.ning.billing.osgi.bundles.analytics.AnalyticsRefreshException;
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessFieldModelDao;
+import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessModelDaoBase.ReportGroup;
 import com.ning.billing.util.audit.AuditLog;
 import com.ning.billing.util.callcontext.CallContext;
 import com.ning.billing.util.customfield.CustomField;
@@ -72,6 +73,7 @@ public class BusinessFieldDao extends BusinessAnalyticsDaoBase {
     private Collection<BusinessFieldModelDao> createBusinessFields(final Account account, final CallContext context) throws AnalyticsRefreshException {
         final Long accountRecordId = getAccountRecordId(account.getId(), context);
         final Long tenantRecordId = getTenantRecordId(context);
+        final ReportGroup reportGroup = getReportGroup(account.getId(), context);
 
         final Collection<CustomField> fields = getFieldsForAccount(account.getId(), context);
 
@@ -84,7 +86,8 @@ public class BusinessFieldDao extends BusinessAnalyticsDaoBase {
                                                                                      field,
                                                                                      customFieldRecordId,
                                                                                      creationAuditLog,
-                                                                                     tenantRecordId);
+                                                                                     tenantRecordId,
+                                                                                     reportGroup);
             fieldModelDaos.add(fieldModelDao);
         }
 
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessInvoiceDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessInvoiceDao.java
index 0f31692..8e89f8e 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessInvoiceDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessInvoiceDao.java
@@ -38,6 +38,7 @@ import com.ning.billing.osgi.bundles.analytics.AnalyticsRefreshException;
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessAccountModelDao;
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessInvoiceItemBaseModelDao;
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessInvoiceModelDao;
+import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessModelDaoBase.ReportGroup;
 import com.ning.billing.util.audit.AuditLog;
 import com.ning.billing.util.callcontext.CallContext;
 import com.ning.billing.util.callcontext.TenantContext;
@@ -90,6 +91,7 @@ public class BusinessInvoiceDao extends BusinessAnalyticsDaoBase {
                                                                                                                            final CallContext context) throws AnalyticsRefreshException {
         final Long accountRecordId = getAccountRecordId(account.getId(), context);
         final Long tenantRecordId = getTenantRecordId(context);
+        final ReportGroup reportGroup = getReportGroup(account.getId(), context);
 
         // Lookup the invoices for that account
         final Map<BusinessInvoiceModelDao, Collection<BusinessInvoiceItemBaseModelDao>> businessInvoices = new HashMap<BusinessInvoiceModelDao, Collection<BusinessInvoiceItemBaseModelDao>>();
@@ -104,7 +106,8 @@ public class BusinessInvoiceDao extends BusinessAnalyticsDaoBase {
                                                                                         invoice,
                                                                                         invoiceRecordId,
                                                                                         creationAuditLog,
-                                                                                        tenantRecordId);
+                                                                                        tenantRecordId,
+                                                                                        reportGroup);
 
             final List<BusinessInvoiceItemBaseModelDao> businessInvoiceItems = new ArrayList<BusinessInvoiceItemBaseModelDao>();
             for (final InvoiceItem invoiceItem : invoice.getInvoiceItems()) {
@@ -187,6 +190,7 @@ public class BusinessInvoiceDao extends BusinessAnalyticsDaoBase {
         final AuditLog creationAuditLog = getInvoiceItemCreationAuditLog(invoiceItem.getId(), context);
         final Long accountRecordId = getAccountRecordId(account.getId(), context);
         final Long tenantRecordId = getTenantRecordId(context);
+        final ReportGroup reportGroup = getReportGroup(account.getId(), context);
 
         return BusinessInvoiceItemBaseModelDao.create(account,
                                                       accountRecordId,
@@ -198,6 +202,7 @@ public class BusinessInvoiceDao extends BusinessAnalyticsDaoBase {
                                                       plan,
                                                       planPhase,
                                                       creationAuditLog,
-                                                      tenantRecordId);
+                                                      tenantRecordId,
+                                                      reportGroup);
     }
 }
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessInvoicePaymentDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessInvoicePaymentDao.java
index 65f5108..5116b3b 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessInvoicePaymentDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessInvoicePaymentDao.java
@@ -32,6 +32,7 @@ import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessAccountModelDao
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessInvoiceItemBaseModelDao;
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessInvoiceModelDao;
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessInvoicePaymentBaseModelDao;
+import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessModelDaoBase.ReportGroup;
 import com.ning.billing.payment.api.Payment;
 import com.ning.billing.payment.api.PaymentMethod;
 import com.ning.billing.payment.api.Refund;
@@ -108,6 +109,7 @@ public class BusinessInvoicePaymentDao extends BusinessAnalyticsDaoBase {
 
         final Long accountRecordId = getAccountRecordId(account.getId(), context);
         final Long tenantRecordId = getTenantRecordId(context);
+        final ReportGroup reportGroup = getReportGroup(account.getId(), context);
 
         final Collection<InvoicePayment> invoicePayments = getAccountInvoicePayments(account.getId(), context);
         for (final InvoicePayment invoicePayment : invoicePayments) {
@@ -132,7 +134,8 @@ public class BusinessInvoicePaymentDao extends BusinessAnalyticsDaoBase {
                                                                                                                         refund,
                                                                                                                         paymentMethod,
                                                                                                                         creationAuditLog,
-                                                                                                                        tenantRecordId);
+                                                                                                                        tenantRecordId,
+                                                                                                                        reportGroup);
             if (businessInvoicePayment != null) {
                 businessInvoicePayments.add(businessInvoicePayment);
             }
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessOverdueStatusDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessOverdueStatusDao.java
index 7374db4..9812140 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessOverdueStatusDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessOverdueStatusDao.java
@@ -31,6 +31,7 @@ import com.ning.billing.account.api.Account;
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.junction.api.BlockingState;
 import com.ning.billing.osgi.bundles.analytics.AnalyticsRefreshException;
+import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessModelDaoBase.ReportGroup;
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessOverdueStatusModelDao;
 import com.ning.billing.util.audit.AuditLog;
 import com.ning.billing.util.callcontext.CallContext;
@@ -101,6 +102,7 @@ public class BusinessOverdueStatusDao extends BusinessAnalyticsDaoBase {
 
         final Long accountRecordId = getAccountRecordId(account.getId(), context);
         final Long tenantRecordId = getTenantRecordId(context);
+        final ReportGroup reportGroup = getReportGroup(account.getId(), context);
 
         final List<BlockingState> blockingStates = Lists.reverse(ImmutableList.<BlockingState>copyOf(blockingStatesOrdered));
         DateTime previousStartDate = null;
@@ -114,7 +116,8 @@ public class BusinessOverdueStatusDao extends BusinessAnalyticsDaoBase {
                                                                                                   blockingStateRecordId,
                                                                                                   previousStartDate,
                                                                                                   creationAuditLog,
-                                                                                                  tenantRecordId);
+                                                                                                  tenantRecordId,
+                                                                                                  reportGroup);
             businessOverdueStatuses.add(overdueStatus);
             previousStartDate = state.getTimestamp();
         }
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessSubscriptionTransitionDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessSubscriptionTransitionDao.java
index 44d6b3c..9749964 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessSubscriptionTransitionDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessSubscriptionTransitionDao.java
@@ -31,6 +31,7 @@ import com.ning.billing.entitlement.api.user.Subscription;
 import com.ning.billing.entitlement.api.user.SubscriptionBundle;
 import com.ning.billing.entitlement.api.user.SubscriptionTransition;
 import com.ning.billing.osgi.bundles.analytics.AnalyticsRefreshException;
+import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessModelDaoBase.ReportGroup;
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessSubscription;
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessSubscriptionEvent;
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessSubscriptionTransitionModelDao;
@@ -123,6 +124,7 @@ public class BusinessSubscriptionTransitionDao extends BusinessAnalyticsDaoBase 
 
         final Long accountRecordId = getAccountRecordId(account.getId(), context);
         final Long tenantRecordId = getTenantRecordId(context);
+        final ReportGroup reportGroup = getReportGroup(account.getId(), context);
 
         return new BusinessSubscriptionTransitionModelDao(account,
                                                           accountRecordId,
@@ -134,7 +136,8 @@ public class BusinessSubscriptionTransitionDao extends BusinessAnalyticsDaoBase 
                                                           prevNextSubscription,
                                                           nextSubscription,
                                                           creationAuditLog,
-                                                          tenantRecordId);
+                                                          tenantRecordId,
+                                                          reportGroup);
     }
 
     private BusinessSubscription getBusinessSubscriptionFromTransition(final Account account, final SubscriptionTransition subscriptionTransition) {
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessTagDao.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessTagDao.java
index 5d044f3..5b843a0 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessTagDao.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/BusinessTagDao.java
@@ -25,6 +25,7 @@ import org.skife.jdbi.v2.TransactionStatus;
 
 import com.ning.billing.account.api.Account;
 import com.ning.billing.osgi.bundles.analytics.AnalyticsRefreshException;
+import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessModelDaoBase.ReportGroup;
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessTagModelDao;
 import com.ning.billing.util.audit.AuditLog;
 import com.ning.billing.util.callcontext.CallContext;
@@ -73,6 +74,7 @@ public class BusinessTagDao extends BusinessAnalyticsDaoBase {
     private Collection<BusinessTagModelDao> createBusinessTags(final Account account, final CallContext context) throws AnalyticsRefreshException {
         final Long accountRecordId = getAccountRecordId(account.getId(), context);
         final Long tenantRecordId = getTenantRecordId(context);
+        final ReportGroup reportGroup = getReportGroup(account.getId(), context);
 
         final Collection<Tag> tags = getTagsForAccount(account.getId(), context);
 
@@ -87,7 +89,8 @@ public class BusinessTagDao extends BusinessAnalyticsDaoBase {
                                                                                tagRecordId,
                                                                                tagDefinition,
                                                                                creationAuditLog,
-                                                                               tenantRecordId);
+                                                                               tenantRecordId,
+                                                                               reportGroup);
             tagModelDaos.add(tagModelDao);
         }
 
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 44dbbbf..2ff0a94 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
@@ -16,6 +16,8 @@
 
 package com.ning.billing.osgi.bundles.analytics.dao.model;
 
+import javax.annotation.Nullable;
+
 import com.ning.billing.account.api.Account;
 import com.ning.billing.util.audit.AuditLog;
 import com.ning.billing.util.customfield.CustomField;
@@ -29,13 +31,15 @@ public class BusinessAccountFieldModelDao extends BusinessFieldModelDao {
                                         final CustomField customField,
                                         final Long customFieldRecordId,
                                         final AuditLog creationAuditLog,
-                                        final Long tenantRecordId) {
+                                        final Long tenantRecordId,
+                                        @Nullable final ReportGroup reportGroup) {
         super(account,
               accountRecordId,
               customField,
               customFieldRecordId,
               creationAuditLog,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
     }
 
     @Override
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 03f1cd6..e16627e 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
@@ -88,7 +88,8 @@ public class BusinessAccountModelDao extends BusinessModelDaoBase {
                                    final String accountName,
                                    final String accountExternalKey,
                                    final Long accountRecordId,
-                                   final Long tenantRecordId) {
+                                   final Long tenantRecordId,
+                                   @Nullable final ReportGroup reportGroup) {
         super(createdDate,
               createdBy,
               createdReasonCode,
@@ -97,7 +98,8 @@ public class BusinessAccountModelDao extends BusinessModelDaoBase {
               accountName,
               accountExternalKey,
               accountRecordId,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
         this.email = email;
         this.firstNameLength = firstNameLength;
         this.currency = currency;
@@ -128,7 +130,8 @@ public class BusinessAccountModelDao extends BusinessModelDaoBase {
                                    @Nullable final Invoice lastInvoice,
                                    @Nullable final Payment lastPayment,
                                    final AuditLog creationAuditLog,
-                                   final Long tenantRecordId) {
+                                   final Long tenantRecordId,
+                                   @Nullable final ReportGroup reportGroup) {
         this(account.getEmail(),
              account.getFirstNameLength(),
              account.getCurrency() == null ? null : account.getCurrency().toString(),
@@ -159,7 +162,8 @@ public class BusinessAccountModelDao extends BusinessModelDaoBase {
              account.getName(),
              account.getExternalKey(),
              accountRecordId,
-             tenantRecordId);
+             tenantRecordId,
+             reportGroup);
     }
 
     @Override
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 884a8a8..55ef70d 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
@@ -16,6 +16,8 @@
 
 package com.ning.billing.osgi.bundles.analytics.dao.model;
 
+import javax.annotation.Nullable;
+
 import com.ning.billing.account.api.Account;
 import com.ning.billing.util.audit.AuditLog;
 import com.ning.billing.util.tag.Tag;
@@ -31,14 +33,16 @@ public class BusinessAccountTagModelDao extends BusinessTagModelDao {
                                       final Long tagRecordId,
                                       final TagDefinition tagDefinition,
                                       final AuditLog creationAuditLog,
-                                      final Long tenantRecordId) {
+                                      final Long tenantRecordId,
+                                      @Nullable final ReportGroup reportGroup) {
         super(account,
               accountRecordId,
               tag,
               tagRecordId,
               tagDefinition,
               creationAuditLog,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
     }
 
     @Override
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 e8d8245..a3b2904 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
@@ -18,6 +18,8 @@ package com.ning.billing.osgi.bundles.analytics.dao.model;
 
 import java.util.UUID;
 
+import javax.annotation.Nullable;
+
 import org.joda.time.DateTime;
 
 import com.ning.billing.ObjectType;
@@ -42,28 +44,32 @@ public abstract class BusinessFieldModelDao extends BusinessModelDaoBase {
                                                final CustomField customField,
                                                final Long customFieldRecordId,
                                                final AuditLog creationAuditLog,
-                                               final Long tenantRecordId) {
+                                               final Long tenantRecordId,
+                                               @Nullable final ReportGroup reportGroup) {
         if (ObjectType.ACCOUNT.equals(customField.getObjectType())) {
             return new BusinessAccountFieldModelDao(account,
                                                     accountRecordId,
                                                     customField,
                                                     customFieldRecordId,
                                                     creationAuditLog,
-                                                    tenantRecordId);
+                                                    tenantRecordId,
+                                                    reportGroup);
         } else if (ObjectType.INVOICE_PAYMENT.equals(customField.getObjectType())) {
             return new BusinessInvoiceFieldModelDao(account,
                                                     accountRecordId,
                                                     customField,
                                                     customFieldRecordId,
                                                     creationAuditLog,
-                                                    tenantRecordId);
+                                                    tenantRecordId,
+                                                    reportGroup);
         } else if (ObjectType.INVOICE.equals(customField.getObjectType())) {
             return new BusinessInvoicePaymentFieldModelDao(account,
                                                            accountRecordId,
                                                            customField,
                                                            customFieldRecordId,
                                                            creationAuditLog,
-                                                           tenantRecordId);
+                                                           tenantRecordId,
+                                                           reportGroup);
         } else {
             // We don't care
             return null;
@@ -83,7 +89,8 @@ public abstract class BusinessFieldModelDao extends BusinessModelDaoBase {
                                  final String accountName,
                                  final String accountExternalKey,
                                  final Long accountRecordId,
-                                 final Long tenantRecordId) {
+                                 final Long tenantRecordId,
+                                 @Nullable final ReportGroup reportGroup) {
         super(createdDate,
               createdBy,
               createdReasonCode,
@@ -92,7 +99,8 @@ public abstract class BusinessFieldModelDao extends BusinessModelDaoBase {
               accountName,
               accountExternalKey,
               accountRecordId,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
         this.customFieldRecordId = customFieldRecordId;
         this.name = name;
         this.value = value;
@@ -103,7 +111,8 @@ public abstract class BusinessFieldModelDao extends BusinessModelDaoBase {
                                  final CustomField customField,
                                  final Long customFieldRecordId,
                                  final AuditLog creationAuditLog,
-                                 final Long tenantRecordId) {
+                                 final Long tenantRecordId,
+                                 @Nullable final ReportGroup reportGroup) {
         this(customFieldRecordId,
              customField.getFieldName(),
              customField.getFieldValue(),
@@ -115,7 +124,8 @@ public abstract class BusinessFieldModelDao extends BusinessModelDaoBase {
              account.getName(),
              account.getExternalKey(),
              accountRecordId,
-             tenantRecordId);
+             tenantRecordId,
+             reportGroup);
     }
 
     public Long getCustomFieldRecordId() {
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 14b70f7..a437645 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,8 @@ public class BusinessInvoiceAdjustmentModelDao extends BusinessInvoiceItemBaseMo
                                              @Nullable final Plan plan,
                                              @Nullable final PlanPhase planPhase,
                                              final AuditLog creationAuditLog,
-                                             final Long tenantRecordId) {
+                                             final Long tenantRecordId,
+                                             @Nullable final ReportGroup reportGroup) {
         super(account,
               accountRecordId,
               invoice,
@@ -51,7 +52,8 @@ public class BusinessInvoiceAdjustmentModelDao extends BusinessInvoiceItemBaseMo
               plan,
               planPhase,
               creationAuditLog,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
     }
 
     @Override
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 21af660..4b4a137 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
@@ -18,6 +18,8 @@ package com.ning.billing.osgi.bundles.analytics.dao.model;
 
 import java.util.UUID;
 
+import javax.annotation.Nullable;
+
 import com.ning.billing.account.api.Account;
 import com.ning.billing.util.audit.AuditLog;
 import com.ning.billing.util.customfield.CustomField;
@@ -33,13 +35,15 @@ public class BusinessInvoiceFieldModelDao extends BusinessFieldModelDao {
                                         final CustomField customField,
                                         final Long customFieldRecordId,
                                         final AuditLog creationAuditLog,
-                                        final Long tenantRecordId) {
+                                        final Long tenantRecordId,
+                                        @Nullable final ReportGroup reportGroup) {
         super(account,
               accountRecordId,
               customField,
               customFieldRecordId,
               creationAuditLog,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
         this.invoiceId = customField.getObjectId();
     }
 
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 3bcc420..fab5ff4 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,8 @@ public class BusinessInvoiceItemAdjustmentModelDao extends BusinessInvoiceItemBa
                                                  @Nullable final Plan plan,
                                                  @Nullable final PlanPhase planPhase,
                                                  final AuditLog creationAuditLog,
-                                                 final Long tenantRecordId) {
+                                                 final Long tenantRecordId,
+                                                 @Nullable final ReportGroup reportGroup) {
         super(account,
               accountRecordId,
               invoice,
@@ -51,7 +52,8 @@ public class BusinessInvoiceItemAdjustmentModelDao extends BusinessInvoiceItemBa
               plan,
               planPhase,
               creationAuditLog,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
     }
 
     @Override
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 9fac8f8..4059810 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
@@ -81,7 +81,8 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
                                                          @Nullable final Plan plan,
                                                          @Nullable final PlanPhase planPhase,
                                                          final AuditLog creationAuditLog,
-                                                         final Long tenantRecordId) {
+                                                         final Long tenantRecordId,
+                                                         @Nullable final ReportGroup reportGroup) {
         if (InvoiceItemType.REFUND_ADJ.equals(invoiceItem.getInvoiceItemType())) {
             return new BusinessInvoiceAdjustmentModelDao(account,
                                                          accountRecordId,
@@ -93,7 +94,8 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
                                                          plan,
                                                          planPhase,
                                                          creationAuditLog,
-                                                         tenantRecordId);
+                                                         tenantRecordId,
+                                                         reportGroup);
         } else if (InvoiceItemType.EXTERNAL_CHARGE.equals(invoiceItem.getInvoiceItemType()) ||
                    InvoiceItemType.FIXED.equals(invoiceItem.getInvoiceItemType()) ||
                    InvoiceItemType.RECURRING.equals(invoiceItem.getInvoiceItemType())) {
@@ -107,7 +109,8 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
                                                    plan,
                                                    planPhase,
                                                    creationAuditLog,
-                                                   tenantRecordId);
+                                                   tenantRecordId,
+                                                   reportGroup);
         } else if (InvoiceItemType.ITEM_ADJ.equals(invoiceItem.getInvoiceItemType())) {
             return new BusinessInvoiceItemAdjustmentModelDao(account,
                                                              accountRecordId,
@@ -119,7 +122,8 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
                                                              plan,
                                                              planPhase,
                                                              creationAuditLog,
-                                                             tenantRecordId);
+                                                             tenantRecordId,
+                                                             reportGroup);
         } else if (InvoiceItemType.CBA_ADJ.equals(invoiceItem.getInvoiceItemType()) ||
                    InvoiceItemType.CREDIT_ADJ.equals(invoiceItem.getInvoiceItemType())) {
             return new BusinessInvoiceItemCreditModelDao(account,
@@ -132,7 +136,8 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
                                                          plan,
                                                          planPhase,
                                                          creationAuditLog,
-                                                         tenantRecordId);
+                                                         tenantRecordId,
+                                                         reportGroup);
         } else {
             // We don't care
             return null;
@@ -177,7 +182,8 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
                                            final String accountName,
                                            final String accountExternalKey,
                                            final Long accountRecordId,
-                                           final Long tenantRecordId) {
+                                           final Long tenantRecordId,
+                                           @Nullable final ReportGroup reportGroup) {
         super(createdDate,
               createdBy,
               createdReasonCode,
@@ -186,7 +192,8 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
               accountName,
               accountExternalKey,
               accountRecordId,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
         this.invoiceItemRecordId = invoiceItemRecordId;
         this.secondInvoiceItemRecordId = secondInvoiceItemRecordId;
         this.itemId = itemId;
@@ -227,7 +234,8 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
                                            @Nullable final Plan plan,
                                            @Nullable final PlanPhase planPhase,
                                            final AuditLog creationAuditLog,
-                                           final Long tenantRecordId) {
+                                           final Long tenantRecordId,
+                                           @Nullable final ReportGroup reportGroup) {
         this(invoiceItemRecordId,
              secondInvoiceItemRecordId,
              invoiceItem.getId(),
@@ -265,7 +273,8 @@ public abstract class BusinessInvoiceItemBaseModelDao extends BusinessModelDaoBa
              account.getName(),
              account.getExternalKey(),
              accountRecordId,
-             tenantRecordId);
+             tenantRecordId,
+             reportGroup);
     }
 
     public Long getInvoiceItemRecordId() {
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 6115d34..1d64378 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,8 @@ public class BusinessInvoiceItemCreditModelDao extends BusinessInvoiceItemBaseMo
                                              @Nullable final Plan plan,
                                              @Nullable final PlanPhase planPhase,
                                              final AuditLog creationAuditLogs,
-                                             final Long tenantRecordId) {
+                                             final Long tenantRecordId,
+                                             @Nullable final ReportGroup reportGroup) {
         super(account,
               accountRecordId,
               invoice,
@@ -51,7 +52,8 @@ public class BusinessInvoiceItemCreditModelDao extends BusinessInvoiceItemBaseMo
               plan,
               planPhase,
               creationAuditLogs,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
     }
 
     @Override
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 715d452..3558946 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,8 @@ public class BusinessInvoiceItemModelDao extends BusinessInvoiceItemBaseModelDao
                                        @Nullable final Plan plan,
                                        @Nullable final PlanPhase planPhase,
                                        final AuditLog creationAuditLog,
-                                       final Long tenantRecordId) {
+                                       final Long tenantRecordId,
+                                       @Nullable final ReportGroup reportGroup) {
         super(account,
               accountRecordId,
               invoice,
@@ -51,7 +52,8 @@ public class BusinessInvoiceItemModelDao extends BusinessInvoiceItemBaseModelDao
               plan,
               planPhase,
               creationAuditLog,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
     }
 
     @Override
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 f505795..a7c8c75 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
@@ -19,6 +19,8 @@ package com.ning.billing.osgi.bundles.analytics.dao.model;
 import java.math.BigDecimal;
 import java.util.UUID;
 
+import javax.annotation.Nullable;
+
 import org.joda.time.DateTime;
 import org.joda.time.LocalDate;
 
@@ -63,7 +65,8 @@ public class BusinessInvoiceModelDao extends BusinessModelDaoBase {
                                    final String accountName,
                                    final String accountExternalKey,
                                    final Long accountRecordId,
-                                   final Long tenantRecordId) {
+                                   final Long tenantRecordId,
+                                   @Nullable final ReportGroup reportGroup) {
         super(createdDate,
               createdBy,
               createdReasonCode,
@@ -72,7 +75,8 @@ public class BusinessInvoiceModelDao extends BusinessModelDaoBase {
               accountName,
               accountExternalKey,
               accountRecordId,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
         this.invoiceRecordId = invoiceRecordId;
         this.invoiceId = invoiceId;
         this.invoiceNumber = invoiceNumber;
@@ -91,7 +95,8 @@ public class BusinessInvoiceModelDao extends BusinessModelDaoBase {
                                    final Invoice invoice,
                                    final Long invoiceRecordId,
                                    final AuditLog creationAuditLog,
-                                   final Long tenantRecordId) {
+                                   final Long tenantRecordId,
+                                   @Nullable final ReportGroup reportGroup) {
         this(invoiceRecordId,
              invoice.getId(),
              invoice.getInvoiceNumber(),
@@ -111,7 +116,8 @@ public class BusinessInvoiceModelDao extends BusinessModelDaoBase {
              account.getName(),
              account.getExternalKey(),
              accountRecordId,
-             tenantRecordId);
+             tenantRecordId,
+             reportGroup);
     }
 
     @Override
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 8bcd54b..85b7230 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
@@ -90,7 +90,8 @@ public abstract class BusinessInvoicePaymentBaseModelDao extends BusinessModelDa
                                                             final Refund refund,
                                                             final PaymentMethod paymentMethod,
                                                             final AuditLog creationAuditLog,
-                                                            final Long tenantRecordId) {
+                                                            final Long tenantRecordId,
+                                                            @Nullable final ReportGroup reportGroup) {
         if (invoicePayment.getType().equals(InvoicePaymentType.REFUND)) {
             return new BusinessInvoicePaymentRefundModelDao(account,
                                                             accountRecordId,
@@ -101,7 +102,8 @@ public abstract class BusinessInvoicePaymentBaseModelDao extends BusinessModelDa
                                                             refund,
                                                             paymentMethod,
                                                             creationAuditLog,
-                                                            tenantRecordId);
+                                                            tenantRecordId,
+                                                            reportGroup);
         } else if (invoicePayment.getType().equals(InvoicePaymentType.CHARGED_BACK)) {
             return new BusinessInvoicePaymentChargebackModelDao(account,
                                                                 accountRecordId,
@@ -112,7 +114,8 @@ public abstract class BusinessInvoicePaymentBaseModelDao extends BusinessModelDa
                                                                 refund,
                                                                 paymentMethod,
                                                                 creationAuditLog,
-                                                                tenantRecordId);
+                                                                tenantRecordId,
+                                                                reportGroup);
         } else {
             return new BusinessInvoicePaymentModelDao(account,
                                                       accountRecordId,
@@ -123,7 +126,8 @@ public abstract class BusinessInvoicePaymentBaseModelDao extends BusinessModelDa
                                                       refund,
                                                       paymentMethod,
                                                       creationAuditLog,
-                                                      tenantRecordId);
+                                                      tenantRecordId,
+                                                      reportGroup);
         }
     }
 
@@ -176,7 +180,8 @@ public abstract class BusinessInvoicePaymentBaseModelDao extends BusinessModelDa
                                               final String accountName,
                                               final String accountExternalKey,
                                               final Long accountRecordId,
-                                              final Long tenantRecordId) {
+                                              final Long tenantRecordId,
+                                              @Nullable final ReportGroup reportGroup) {
         super(createdDate,
               createdBy,
               createdReasonCode,
@@ -185,7 +190,8 @@ public abstract class BusinessInvoicePaymentBaseModelDao extends BusinessModelDa
               accountName,
               accountExternalKey,
               accountRecordId,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
         this.invoicePaymentRecordId = invoicePaymentRecordId;
         this.invoicePaymentId = invoicePaymentId;
         this.invoiceId = invoiceId;
@@ -236,7 +242,8 @@ public abstract class BusinessInvoicePaymentBaseModelDao extends BusinessModelDa
                                                  @Nullable final Refund refund,
                                                  final PaymentMethod paymentMethod,
                                                  final AuditLog creationAuditLog,
-                                                 final Long tenantRecordId) {
+                                                 final Long tenantRecordId,
+                                                 @Nullable final ReportGroup reportGroup) {
         this(invoicePaymentRecordId,
              invoicePayment.getId(),
              invoice.getId(),
@@ -284,7 +291,8 @@ public abstract class BusinessInvoicePaymentBaseModelDao extends BusinessModelDa
              account.getName(),
              account.getExternalKey(),
              accountRecordId,
-             tenantRecordId);
+             tenantRecordId,
+             reportGroup);
     }
 
     public Long getInvoicePaymentRecordId() {
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 3dd149a..d1a434a 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
@@ -16,6 +16,8 @@
 
 package com.ning.billing.osgi.bundles.analytics.dao.model;
 
+import javax.annotation.Nullable;
+
 import com.ning.billing.account.api.Account;
 import com.ning.billing.invoice.api.Invoice;
 import com.ning.billing.invoice.api.InvoicePayment;
@@ -37,7 +39,8 @@ public class BusinessInvoicePaymentChargebackModelDao extends BusinessInvoicePay
                                                     final Refund refund,
                                                     final PaymentMethod paymentMethod,
                                                     final AuditLog creationAuditLog,
-                                                    final Long tenantRecordId) {
+                                                    final Long tenantRecordId,
+                                                    @Nullable final ReportGroup reportGroup) {
         super(account,
               accountRecordId,
               invoice,
@@ -47,7 +50,8 @@ public class BusinessInvoicePaymentChargebackModelDao extends BusinessInvoicePay
               refund,
               paymentMethod,
               creationAuditLog,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
     }
 
     @Override
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 351c9d6..2cd2b7b 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
@@ -18,6 +18,8 @@ package com.ning.billing.osgi.bundles.analytics.dao.model;
 
 import java.util.UUID;
 
+import javax.annotation.Nullable;
+
 import com.ning.billing.account.api.Account;
 import com.ning.billing.util.audit.AuditLog;
 import com.ning.billing.util.customfield.CustomField;
@@ -33,13 +35,15 @@ public class BusinessInvoicePaymentFieldModelDao extends BusinessFieldModelDao {
                                                final CustomField customField,
                                                final Long customFieldRecordId,
                                                final AuditLog creationAuditLog,
-                                               final Long tenantRecordId) {
+                                               final Long tenantRecordId,
+                                               @Nullable final ReportGroup reportGroup) {
         super(account,
               accountRecordId,
               customField,
               customFieldRecordId,
               creationAuditLog,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
         this.invoicePaymentId = customField.getObjectId();
     }
 
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 56e87ba..23ea91f 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
@@ -16,6 +16,8 @@
 
 package com.ning.billing.osgi.bundles.analytics.dao.model;
 
+import javax.annotation.Nullable;
+
 import com.ning.billing.account.api.Account;
 import com.ning.billing.invoice.api.Invoice;
 import com.ning.billing.invoice.api.InvoicePayment;
@@ -37,7 +39,8 @@ public class BusinessInvoicePaymentModelDao extends BusinessInvoicePaymentBaseMo
                                           final Refund refund,
                                           final PaymentMethod paymentMethod,
                                           final AuditLog creationAuditLog,
-                                          final Long tenantRecordId) {
+                                          final Long tenantRecordId,
+                                          @Nullable final ReportGroup reportGroup) {
         super(account,
               accountRecordId,
               invoice,
@@ -47,7 +50,8 @@ public class BusinessInvoicePaymentModelDao extends BusinessInvoicePaymentBaseMo
               refund,
               paymentMethod,
               creationAuditLog,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
     }
 
     @Override
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 2596e80..ab367e0 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
@@ -16,6 +16,8 @@
 
 package com.ning.billing.osgi.bundles.analytics.dao.model;
 
+import javax.annotation.Nullable;
+
 import com.ning.billing.account.api.Account;
 import com.ning.billing.invoice.api.Invoice;
 import com.ning.billing.invoice.api.InvoicePayment;
@@ -37,7 +39,8 @@ public class BusinessInvoicePaymentRefundModelDao extends BusinessInvoicePayment
                                                 final Refund refund,
                                                 final PaymentMethod paymentMethod,
                                                 final AuditLog creationAuditLog,
-                                                final Long tenantRecordId) {
+                                                final Long tenantRecordId,
+                                                @Nullable final ReportGroup reportGroup) {
         super(account,
               accountRecordId,
               invoice,
@@ -47,7 +50,8 @@ public class BusinessInvoicePaymentRefundModelDao extends BusinessInvoicePayment
               refund,
               paymentMethod,
               creationAuditLog,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
     }
 
     @Override
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 716b67d..3ed4207 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
@@ -18,6 +18,8 @@ package com.ning.billing.osgi.bundles.analytics.dao.model;
 
 import java.util.UUID;
 
+import javax.annotation.Nullable;
+
 import com.ning.billing.account.api.Account;
 import com.ning.billing.util.audit.AuditLog;
 import com.ning.billing.util.tag.Tag;
@@ -35,14 +37,16 @@ public class BusinessInvoicePaymentTagModelDao extends BusinessTagModelDao {
                                              final Long tagRecordId,
                                              final TagDefinition tagDefinition,
                                              final AuditLog creationAuditLog,
-                                             final Long tenantRecordId) {
+                                             final Long tenantRecordId,
+                                             @Nullable final ReportGroup reportGroup) {
         super(account,
               accountRecordId,
               tag,
               tagRecordId,
               tagDefinition,
               creationAuditLog,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
         this.invoicePaymentId = tag.getObjectId();
     }
 
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 ed97e47..b695760 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
@@ -18,6 +18,8 @@ package com.ning.billing.osgi.bundles.analytics.dao.model;
 
 import java.util.UUID;
 
+import javax.annotation.Nullable;
+
 import com.ning.billing.account.api.Account;
 import com.ning.billing.util.audit.AuditLog;
 import com.ning.billing.util.tag.Tag;
@@ -35,14 +37,16 @@ public class BusinessInvoiceTagModelDao extends BusinessTagModelDao {
                                       final Long tagRecordId,
                                       final TagDefinition tagDefinition,
                                       final AuditLog creationAuditLog,
-                                      final Long tenantRecordId) {
+                                      final Long tenantRecordId,
+                                      @Nullable final ReportGroup reportGroup) {
         super(account,
               accountRecordId,
               tag,
               tagRecordId,
               tagDefinition,
               creationAuditLog,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
         this.invoiceId = tag.getObjectId();
     }
 
diff --git a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessModelDaoBase.java b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessModelDaoBase.java
index b5afefd..8f4c2ff 100644
--- a/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessModelDaoBase.java
+++ b/osgi-bundles/bundles/analytics/src/main/java/com/ning/billing/osgi/bundles/analytics/dao/model/BusinessModelDaoBase.java
@@ -18,10 +18,21 @@ package com.ning.billing.osgi.bundles.analytics.dao.model;
 
 import java.util.UUID;
 
+import javax.annotation.Nullable;
+
 import org.joda.time.DateTime;
 
 public abstract class BusinessModelDaoBase {
 
+    // See ddl.sql
+    private final String DEFAULT_REPORT_GROUP = "default";
+
+    // See ddl.sql
+    public enum ReportGroup {
+        test,
+        partner
+    }
+
     protected Long recordId;
 
     protected DateTime createdDate;
@@ -33,12 +44,20 @@ public abstract class BusinessModelDaoBase {
     protected String accountExternalKey;
     protected Long accountRecordId;
     protected Long tenantRecordId;
+    protected String reportGroup;
 
     public BusinessModelDaoBase() { /* When reading from the database */ }
 
-    public BusinessModelDaoBase(final DateTime createdDate, final String createdBy, final String createdReasonCode,
-                                final String createdComments, final UUID accountId, final String accountName,
-                                final String accountExternalKey, final Long accountRecordId, final Long tenantRecordId) {
+    public BusinessModelDaoBase(final DateTime createdDate,
+                                final String createdBy,
+                                final String createdReasonCode,
+                                final String createdComments,
+                                final UUID accountId,
+                                final String accountName,
+                                final String accountExternalKey,
+                                final Long accountRecordId,
+                                final Long tenantRecordId,
+                                @Nullable final ReportGroup reportGroup) {
         recordId = null;
         this.createdDate = createdDate;
         this.createdBy = createdBy;
@@ -49,6 +68,7 @@ public abstract class BusinessModelDaoBase {
         this.accountExternalKey = accountExternalKey;
         this.accountRecordId = accountRecordId;
         this.tenantRecordId = tenantRecordId;
+        this.reportGroup = reportGroup == null ? DEFAULT_REPORT_GROUP : reportGroup.toString();
     }
 
     public abstract String getTableName();
@@ -93,11 +113,17 @@ public abstract class BusinessModelDaoBase {
         return tenantRecordId;
     }
 
+    public String getReportGroup() {
+        return reportGroup;
+    }
+
     @Override
     public String toString() {
         final StringBuilder sb = new StringBuilder();
         sb.append("BusinessModelDaoBase");
-        sb.append("{createdDate=").append(createdDate);
+        sb.append("{DEFAULT_REPORT_GROUP='").append(DEFAULT_REPORT_GROUP).append('\'');
+        sb.append(", recordId=").append(recordId);
+        sb.append(", createdDate=").append(createdDate);
         sb.append(", createdBy='").append(createdBy).append('\'');
         sb.append(", createdReasonCode='").append(createdReasonCode).append('\'');
         sb.append(", createdComments='").append(createdComments).append('\'');
@@ -106,6 +132,7 @@ public abstract class BusinessModelDaoBase {
         sb.append(", accountExternalKey='").append(accountExternalKey).append('\'');
         sb.append(", accountRecordId=").append(accountRecordId);
         sb.append(", tenantRecordId=").append(tenantRecordId);
+        sb.append(", reportGroup='").append(reportGroup).append('\'');
         sb.append('}');
         return sb.toString();
     }
@@ -121,6 +148,9 @@ public abstract class BusinessModelDaoBase {
 
         final BusinessModelDaoBase that = (BusinessModelDaoBase) o;
 
+        if (DEFAULT_REPORT_GROUP != null ? !DEFAULT_REPORT_GROUP.equals(that.DEFAULT_REPORT_GROUP) : that.DEFAULT_REPORT_GROUP != null) {
+            return false;
+        }
         if (accountExternalKey != null ? !accountExternalKey.equals(that.accountExternalKey) : that.accountExternalKey != null) {
             return false;
         }
@@ -145,6 +175,12 @@ public abstract class BusinessModelDaoBase {
         if (createdReasonCode != null ? !createdReasonCode.equals(that.createdReasonCode) : that.createdReasonCode != null) {
             return false;
         }
+        if (recordId != null ? !recordId.equals(that.recordId) : that.recordId != null) {
+            return false;
+        }
+        if (reportGroup != null ? !reportGroup.equals(that.reportGroup) : that.reportGroup != null) {
+            return false;
+        }
         if (tenantRecordId != null ? !tenantRecordId.equals(that.tenantRecordId) : that.tenantRecordId != null) {
             return false;
         }
@@ -154,7 +190,9 @@ public abstract class BusinessModelDaoBase {
 
     @Override
     public int hashCode() {
-        int result = createdDate != null ? createdDate.hashCode() : 0;
+        int result = DEFAULT_REPORT_GROUP.hashCode();
+        result = 31 * result + (recordId != null ? recordId.hashCode() : 0);
+        result = 31 * result + (createdDate != null ? createdDate.hashCode() : 0);
         result = 31 * result + (createdBy != null ? createdBy.hashCode() : 0);
         result = 31 * result + (createdReasonCode != null ? createdReasonCode.hashCode() : 0);
         result = 31 * result + (createdComments != null ? createdComments.hashCode() : 0);
@@ -163,6 +201,7 @@ public abstract class BusinessModelDaoBase {
         result = 31 * result + (accountExternalKey != null ? accountExternalKey.hashCode() : 0);
         result = 31 * result + (accountRecordId != null ? accountRecordId.hashCode() : 0);
         result = 31 * result + (tenantRecordId != null ? tenantRecordId.hashCode() : 0);
+        result = 31 * result + (reportGroup != null ? reportGroup.hashCode() : 0);
         return result;
     }
 }
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 e1808af..02e6d82 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
@@ -18,6 +18,8 @@ package com.ning.billing.osgi.bundles.analytics.dao.model;
 
 import java.util.UUID;
 
+import javax.annotation.Nullable;
+
 import org.joda.time.DateTime;
 
 import com.ning.billing.account.api.Account;
@@ -28,7 +30,6 @@ import com.ning.billing.util.audit.AuditLog;
 public class BusinessOverdueStatusModelDao extends BusinessModelDaoBase {
 
     private static final String OVERDUE_STATUS_TABLE_NAME = "bos";
-
     private Long blockingStateRecordId;
     private UUID bundleId;
     private String bundleExternalKey;
@@ -52,7 +53,8 @@ public class BusinessOverdueStatusModelDao extends BusinessModelDaoBase {
                                          final String accountName,
                                          final String accountExternalKey,
                                          final Long accountRecordId,
-                                         final Long tenantRecordId) {
+                                         final Long tenantRecordId,
+                                         @Nullable final ReportGroup reportGroup) {
         super(createdDate,
               createdBy,
               createdReasonCode,
@@ -61,7 +63,8 @@ public class BusinessOverdueStatusModelDao extends BusinessModelDaoBase {
               accountName,
               accountExternalKey,
               accountRecordId,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
         this.blockingStateRecordId = blockingStateRecordId;
         this.bundleId = bundleId;
         this.bundleExternalKey = bundleExternalKey;
@@ -77,7 +80,8 @@ public class BusinessOverdueStatusModelDao extends BusinessModelDaoBase {
                                          final Long blockingStateRecordId,
                                          final DateTime endDate,
                                          final AuditLog creationAuditLog,
-                                         final Long tenantRecordId) {
+                                         final Long tenantRecordId,
+                                         @Nullable final ReportGroup reportGroup) {
         this(blockingStateRecordId,
              subscriptionBundle.getId(),
              subscriptionBundle.getExternalKey(),
@@ -92,7 +96,8 @@ public class BusinessOverdueStatusModelDao extends BusinessModelDaoBase {
              account.getName(),
              account.getExternalKey(),
              accountRecordId,
-             tenantRecordId);
+             tenantRecordId,
+             reportGroup);
     }
 
     @Override
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 351c879..92032b6 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
@@ -34,14 +34,12 @@ import com.ning.billing.util.audit.AuditLog;
 public class BusinessSubscriptionTransitionModelDao extends BusinessModelDaoBase {
 
     private static final String SUBSCRIPTION_TABLE_NAME = "bst";
-
     private Long subscriptionEventRecordId;
     private UUID bundleId;
     private String bundleExternalKey;
     private UUID subscriptionId;
     private DateTime requestedTimestamp;
     private String event;
-
     private String prevProductName;
     private String prevProductType;
     private String prevProductCategory;
@@ -55,7 +53,6 @@ public class BusinessSubscriptionTransitionModelDao extends BusinessModelDaoBase
     private Boolean prevBusinessActive;
     private DateTime prevStartDate;
     private String prevState;
-
     private String nextProductName;
     private String nextProductType;
     private String nextProductCategory;
@@ -89,7 +86,8 @@ public class BusinessSubscriptionTransitionModelDao extends BusinessModelDaoBase
                                                   final String accountName,
                                                   final String accountExternalKey,
                                                   final Long accountRecordId,
-                                                  final Long tenantRecordId) {
+                                                  final Long tenantRecordId,
+                                                  @Nullable final ReportGroup reportGroup) {
         super(createdDate,
               createdBy,
               createdReasonCode,
@@ -98,7 +96,8 @@ public class BusinessSubscriptionTransitionModelDao extends BusinessModelDaoBase
               accountName,
               accountExternalKey,
               accountRecordId,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
         this.subscriptionEventRecordId = subscriptionEventRecordId;
         this.bundleId = bundleId;
         this.bundleExternalKey = bundleExternalKey;
@@ -163,7 +162,8 @@ public class BusinessSubscriptionTransitionModelDao extends BusinessModelDaoBase
                                                   @Nullable final BusinessSubscription previousSubscription,
                                                   final BusinessSubscription nextSubscription,
                                                   final AuditLog creationAuditLog,
-                                                  final Long tenantRecordId) {
+                                                  final Long tenantRecordId,
+                                                  @Nullable final ReportGroup reportGroup) {
         this(subscriptionEventRecordId,
              bundle.getId(),
              bundle.getExternalKey(),
@@ -180,7 +180,8 @@ public class BusinessSubscriptionTransitionModelDao extends BusinessModelDaoBase
              account.getName(),
              account.getExternalKey(),
              accountRecordId,
-             tenantRecordId);
+             tenantRecordId,
+             reportGroup);
     }
 
     @Override
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 b3b767d..4aa7378 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
@@ -18,6 +18,8 @@ package com.ning.billing.osgi.bundles.analytics.dao.model;
 
 import java.util.UUID;
 
+import javax.annotation.Nullable;
+
 import org.joda.time.DateTime;
 
 import com.ning.billing.ObjectType;
@@ -43,7 +45,8 @@ public abstract class BusinessTagModelDao extends BusinessModelDaoBase {
                                              final Long tagRecordId,
                                              final TagDefinition tagDefinition,
                                              final AuditLog creationAuditLog,
-                                             final Long tenantRecordId) {
+                                             final Long tenantRecordId,
+                                             @Nullable final ReportGroup reportGroup) {
         if (ObjectType.ACCOUNT.equals(tag.getObjectType())) {
             return new BusinessAccountTagModelDao(account,
                                                   accountRecordId,
@@ -51,7 +54,8 @@ public abstract class BusinessTagModelDao extends BusinessModelDaoBase {
                                                   tagRecordId,
                                                   tagDefinition,
                                                   creationAuditLog,
-                                                  tenantRecordId);
+                                                  tenantRecordId,
+                                                  reportGroup);
         } else if (ObjectType.INVOICE_PAYMENT.equals(tag.getObjectType())) {
             return new BusinessInvoicePaymentTagModelDao(account,
                                                          accountRecordId,
@@ -59,7 +63,8 @@ public abstract class BusinessTagModelDao extends BusinessModelDaoBase {
                                                          tagRecordId,
                                                          tagDefinition,
                                                          creationAuditLog,
-                                                         tenantRecordId);
+                                                         tenantRecordId,
+                                                         reportGroup);
         } else if (ObjectType.INVOICE.equals(tag.getObjectType())) {
             return new BusinessInvoiceTagModelDao(account,
                                                   accountRecordId,
@@ -67,7 +72,8 @@ public abstract class BusinessTagModelDao extends BusinessModelDaoBase {
                                                   tagRecordId,
                                                   tagDefinition,
                                                   creationAuditLog,
-                                                  tenantRecordId);
+                                                  tenantRecordId,
+                                                  reportGroup);
         } else {
             // We don't care
             return null;
@@ -86,7 +92,8 @@ public abstract class BusinessTagModelDao extends BusinessModelDaoBase {
                                final String accountName,
                                final String accountExternalKey,
                                final Long accountRecordId,
-                               final Long tenantRecordId) {
+                               final Long tenantRecordId,
+                               @Nullable final ReportGroup reportGroup) {
         super(createdDate,
               createdBy,
               createdReasonCode,
@@ -95,7 +102,8 @@ public abstract class BusinessTagModelDao extends BusinessModelDaoBase {
               accountName,
               accountExternalKey,
               accountRecordId,
-              tenantRecordId);
+              tenantRecordId,
+              reportGroup);
         this.tagRecordId = tagRecordId;
         this.name = name;
     }
@@ -106,7 +114,8 @@ public abstract class BusinessTagModelDao extends BusinessModelDaoBase {
                                final Long tagRecordId,
                                final TagDefinition tagDefinition,
                                final AuditLog creationAuditLog,
-                               final Long tenantRecordId) {
+                               final Long tenantRecordId,
+                               @Nullable final ReportGroup reportGroup) {
         this(tagRecordId,
              tagDefinition.getName(),
              tag.getCreatedDate(),
@@ -117,7 +126,8 @@ public abstract class BusinessTagModelDao extends BusinessModelDaoBase {
              account.getName(),
              account.getExternalKey(),
              accountRecordId,
-             tenantRecordId);
+             tenantRecordId,
+             reportGroup);
     }
 
     public Long getTagRecordId() {
diff --git a/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/dao/BusinessAnalyticsSqlDao.sql.stg b/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/dao/BusinessAnalyticsSqlDao.sql.stg
index 72e3833..0f40ef3 100644
--- a/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/dao/BusinessAnalyticsSqlDao.sql.stg
+++ b/osgi-bundles/bundles/analytics/src/main/resources/com/ning/billing/osgi/bundles/analytics/dao/BusinessAnalyticsSqlDao.sql.stg
@@ -44,6 +44,7 @@ insert into bst (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
   :subscriptionEventRecordId
 , :bundleId
@@ -87,6 +88,7 @@ insert into bst (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
@@ -123,6 +125,7 @@ insert into bac (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
   :email
 , :firstNameLength
@@ -155,6 +158,7 @@ insert into bac (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
@@ -179,6 +183,7 @@ insert into bin (
 , account_name
 , account_external_key
 , account_record_id
+, report_group
 ) values (
   :invoiceRecordId
 , :invoiceId
@@ -199,6 +204,7 @@ insert into bin (
 , :accountName
 , :accountExternalKey
 , :accountRecordId
+, :reportGroup
 );
 >>
 
@@ -241,6 +247,7 @@ insert into bia (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
   :invoiceItemRecordId
 , :secondInvoiceItemRecordId
@@ -279,6 +286,7 @@ insert into bia (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
@@ -321,6 +329,7 @@ insert into bii (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
   :invoiceItemRecordId
 , :secondInvoiceItemRecordId
@@ -359,6 +368,7 @@ insert into bii (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
@@ -401,6 +411,7 @@ insert into biia (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
   :invoiceItemRecordId
 , :secondInvoiceItemRecordId
@@ -439,6 +450,7 @@ insert into biia (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
@@ -481,6 +493,7 @@ insert into biic (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
   :invoiceItemRecordId
 , :secondInvoiceItemRecordId
@@ -519,6 +532,7 @@ insert into biic (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
@@ -551,6 +565,7 @@ insert into bip (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
   :invoicePaymentRecordId
 , :invoicePaymentId
@@ -579,6 +594,7 @@ insert into bip (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
@@ -611,6 +627,7 @@ insert into bipr (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
   :invoicePaymentRecordId
 , :invoicePaymentId
@@ -639,6 +656,7 @@ insert into bipr (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
@@ -671,6 +689,7 @@ insert into bipc (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
   :invoicePaymentRecordId
 , :invoicePaymentId
@@ -699,6 +718,7 @@ insert into bipc (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
@@ -719,6 +739,7 @@ insert into bos (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
   :blockingStateRecordId
 , :bundleId
@@ -735,6 +756,7 @@ insert into bos (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
@@ -751,6 +773,7 @@ insert into bac_tags (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
   :tagRecordId
 , :name
@@ -763,6 +786,7 @@ insert into bac_tags (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
@@ -780,6 +804,7 @@ insert into bin_tags (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
   :tagRecordId
 , :invoiceId
@@ -793,6 +818,7 @@ insert into bin_tags (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
@@ -810,6 +836,7 @@ insert into bip_tags (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
   :tagRecordId
 , :invoicePaymentId
@@ -823,6 +850,7 @@ insert into bip_tags (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
@@ -840,6 +868,7 @@ insert into bac_fields (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
   :customFieldRecordId
 , :name
@@ -853,6 +882,7 @@ insert into bac_fields (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
@@ -871,6 +901,7 @@ insert into bin_fields (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
   :customFieldRecordId
 , :invoiceId
@@ -885,6 +916,7 @@ insert into bin_fields (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
@@ -903,6 +935,7 @@ insert into bip_fields (
 , account_external_key
 , account_record_id
 , tenant_record_id
+, report_group
 ) values (
 , :customFieldRecordId
 , :invoicePaymentId
@@ -917,6 +950,7 @@ insert into bip_fields (
 , :accountExternalKey
 , :accountRecordId
 , :tenantRecordId
+, :reportGroup
 );
 >>
 
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 6f03b7b..ad682ef 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
@@ -46,6 +46,7 @@ create table bst (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index bst_bundle_external_key on bst(bundle_external_key);
@@ -88,6 +89,7 @@ create table bac (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index bac_account_external_key on bac(account_external_key);
@@ -119,6 +121,7 @@ create table bin (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index bin_invoice_record_id on bin(invoice_record_id);
@@ -168,6 +171,7 @@ create table bia (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index bia_invoice_item_record_id on bia(invoice_item_record_id);
@@ -217,6 +221,7 @@ create table bii (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index bii_invoice_item_record_id on bii(invoice_item_record_id);
@@ -266,6 +271,7 @@ create table biia (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index biia_invoice_item_record_id on biia(invoice_item_record_id);
@@ -315,6 +321,7 @@ create table biic (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index biic_invoice_item_record_id on biic(invoice_item_record_id);
@@ -375,6 +382,7 @@ create table bip (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index bip_invoice_payment_record_id on bip(invoice_payment_record_id);
@@ -435,6 +443,7 @@ create table bipr (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index bipr_invoice_payment_record_id on bipr(invoice_payment_record_id);
@@ -495,6 +504,7 @@ create table bipc (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index bipc_invoice_payment_record_id on bipc(invoice_payment_record_id);
@@ -521,6 +531,7 @@ create table bos (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index bos_account_id on bos(account_id);
@@ -541,6 +552,7 @@ create table bac_tags (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index bac_tags_account_id on bac_tags(account_id);
@@ -562,6 +574,7 @@ create table bin_tags (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index bin_tags_account_id on bin_tags(account_id);
@@ -583,6 +596,7 @@ create table bip_tags (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index bip_tags_account_id on bip_tags(account_id);
@@ -604,6 +618,7 @@ create table bac_fields (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index bac_fields_account_id on bac_fields(account_id);
@@ -626,6 +641,7 @@ create table bin_fields (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index bin_fields_account_id on bin_fields(account_id);
@@ -648,6 +664,7 @@ create table bip_fields (
 , account_external_key varchar(50) not 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
 , primary key(record_id)
 );
 create index bip_fields_account_id on bip_fields(account_id);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java
index 3d50daf..97c0729 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/AnalyticsTestSuiteNoDB.java
@@ -50,6 +50,7 @@ import com.ning.billing.junction.api.BlockingState;
 import com.ning.billing.osgi.bundles.analytics.api.BusinessEntityBase;
 import com.ning.billing.osgi.bundles.analytics.dao.TestCallContext;
 import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessModelDaoBase;
+import com.ning.billing.osgi.bundles.analytics.dao.model.BusinessModelDaoBase.ReportGroup;
 import com.ning.billing.payment.api.Payment;
 import com.ning.billing.payment.api.Payment.PaymentAttempt;
 import com.ning.billing.payment.api.PaymentMethod;
@@ -82,6 +83,8 @@ public abstract class AnalyticsTestSuiteNoDB {
     protected final Long tagRecordId = 8L;
     protected final Long tenantRecordId = 9L;
 
+    protected final ReportGroup reportGroup = ReportGroup.partner;
+
     protected Account account;
     protected SubscriptionBundle bundle;
     protected Plan plan;
@@ -112,6 +115,7 @@ public abstract class AnalyticsTestSuiteNoDB {
         Assert.assertEquals(businessEntityBase.getAccountId(), account.getId());
         Assert.assertEquals(businessEntityBase.getAccountName(), account.getName());
         Assert.assertEquals(businessEntityBase.getAccountExternalKey(), account.getExternalKey());
+        Assert.assertEquals(businessEntityBase.getReportGroup(), reportGroup.toString());
     }
 
     protected void verifyBusinessModelDaoBase(final BusinessModelDaoBase businessModelDaoBase,
@@ -125,6 +129,7 @@ public abstract class AnalyticsTestSuiteNoDB {
         Assert.assertEquals(businessModelDaoBase.getAccountExternalKey(), account.getExternalKey());
         Assert.assertEquals(businessModelDaoBase.getAccountRecordId(), accountRecordId);
         Assert.assertEquals(businessModelDaoBase.getTenantRecordId(), tenantRecordId);
+        Assert.assertEquals(businessModelDaoBase.getReportGroup(), reportGroup.toString());
     }
 
     @BeforeMethod(groups = "fast")
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessAccount.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessAccount.java
index d24f729..cbaf426 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessAccount.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessAccount.java
@@ -34,7 +34,8 @@ public class TestBusinessAccount extends AnalyticsTestSuiteNoDB {
                                                                                     invoice,
                                                                                     payment,
                                                                                     auditLog,
-                                                                                    tenantRecordId);
+                                                                                    tenantRecordId,
+                                                                                    reportGroup);
         final BusinessAccount businessAccount = new BusinessAccount(accountModelDao);
 
         verifyBusinessEntityBase(businessAccount);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessField.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessField.java
index ec1db34..faeb548 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessField.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessField.java
@@ -34,7 +34,8 @@ public class TestBusinessField extends AnalyticsTestSuiteNoDB {
                                                                                                            customField,
                                                                                                            fieldRecordId,
                                                                                                            auditLog,
-                                                                                                           tenantRecordId);
+                                                                                                           tenantRecordId,
+                                                                                                           reportGroup);
         final BusinessField businessField = BusinessField.create(businessAccountFieldModelDao);
         verifyBusinessField(businessField);
         Assert.assertEquals(businessField.getObjectType(), ObjectType.ACCOUNT);
@@ -47,7 +48,8 @@ public class TestBusinessField extends AnalyticsTestSuiteNoDB {
                                                                                                            customField,
                                                                                                            fieldRecordId,
                                                                                                            auditLog,
-                                                                                                           tenantRecordId);
+                                                                                                           tenantRecordId,
+                                                                                                           reportGroup);
         final BusinessField businessField = BusinessField.create(businessInvoiceFieldModelDao);
         verifyBusinessField(businessField);
         Assert.assertEquals(businessField.getObjectType(), ObjectType.INVOICE);
@@ -60,7 +62,8 @@ public class TestBusinessField extends AnalyticsTestSuiteNoDB {
                                                                                                                         customField,
                                                                                                                         fieldRecordId,
                                                                                                                         auditLog,
-                                                                                                                        tenantRecordId);
+                                                                                                                        tenantRecordId,
+                                                                                                                        reportGroup);
         final BusinessField businessField = BusinessField.create(invoicePaymentFieldModelDao);
         verifyBusinessField(businessField);
         Assert.assertEquals(businessField.getObjectType(), ObjectType.INVOICE_PAYMENT);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoice.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoice.java
index aefcef0..f59b325 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoice.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoice.java
@@ -34,7 +34,8 @@ public class TestBusinessInvoice extends AnalyticsTestSuiteNoDB {
                                                                                     invoice,
                                                                                     invoiceRecordId,
                                                                                     auditLog,
-                                                                                    tenantRecordId);
+                                                                                    tenantRecordId,
+                                                                                    reportGroup);
         final BusinessInvoiceItemBaseModelDao invoiceItemBaseModelDao = BusinessInvoiceItemBaseModelDao.create(account,
                                                                                                                accountRecordId,
                                                                                                                invoice,
@@ -45,7 +46,8 @@ public class TestBusinessInvoice extends AnalyticsTestSuiteNoDB {
                                                                                                                plan,
                                                                                                                phase,
                                                                                                                auditLog,
-                                                                                                               tenantRecordId);
+                                                                                                               tenantRecordId,
+                                                                                                               reportGroup);
         final BusinessInvoice businessInvoice = new BusinessInvoice(invoiceModelDao,
                                                                     ImmutableList.<BusinessInvoiceItemBaseModelDao>of(invoiceItemBaseModelDao));
         verifyBusinessEntityBase(businessInvoice);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoiceItem.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoiceItem.java
index b3cad4c..bd857d5 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoiceItem.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoiceItem.java
@@ -36,7 +36,8 @@ public class TestBusinessInvoiceItem extends AnalyticsTestSuiteNoDB {
                                                                                                                plan,
                                                                                                                phase,
                                                                                                                auditLog,
-                                                                                                               tenantRecordId);
+                                                                                                               tenantRecordId,
+                                                                                                               reportGroup);
         final BusinessInvoiceItem businessInvoiceItem = new BusinessInvoiceItem(invoiceItemBaseModelDao);
         verifyBusinessEntityBase(businessInvoiceItem);
         Assert.assertEquals(businessInvoiceItem.getCreatedDate(), invoiceItemBaseModelDao.getCreatedDate());
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoicePayment.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoicePayment.java
index c1b40b5..c5cf484 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoicePayment.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessInvoicePayment.java
@@ -36,7 +36,8 @@ public class TestBusinessInvoicePayment extends AnalyticsTestSuiteNoDB {
                                                                                                                     refund,
                                                                                                                     paymentMethod,
                                                                                                                     auditLog,
-                                                                                                                    tenantRecordId);
+                                                                                                                    tenantRecordId,
+                                                                                                                    reportGroup);
         final BusinessInvoicePayment businessInvoicePayment = new BusinessInvoicePayment(invoicePaymentBaseModelDao);
         verifyBusinessEntityBase(businessInvoicePayment);
         Assert.assertEquals(businessInvoicePayment.getCreatedDate(), invoicePaymentBaseModelDao.getCreatedDate());
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessOverdueStatus.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessOverdueStatus.java
index cfa7632..73094a7 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessOverdueStatus.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessOverdueStatus.java
@@ -37,7 +37,8 @@ public class TestBusinessOverdueStatus extends AnalyticsTestSuiteNoDB {
                                                                                                               blockingStateRecordId,
                                                                                                               endDate,
                                                                                                               auditLog,
-                                                                                                              tenantRecordId);
+                                                                                                              tenantRecordId,
+                                                                                                              reportGroup);
         final BusinessOverdueStatus businessOverdueStatus = new BusinessOverdueStatus(businessOverdueStatusModelDao);
         verifyBusinessEntityBase(businessOverdueStatus);
         Assert.assertEquals(businessOverdueStatus.getCreatedDate(), businessOverdueStatusModelDao.getCreatedDate());
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java
index 7775be0..c6b4773 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSnapshot.java
@@ -52,7 +52,8 @@ public class TestBusinessSnapshot extends AnalyticsTestSuiteNoDB {
                                                                                     invoice,
                                                                                     payment,
                                                                                     auditLog,
-                                                                                    tenantRecordId);
+                                                                                    tenantRecordId,
+                                                                                    reportGroup);
         final BusinessAccount businessAccount = new BusinessAccount(accountModelDao);
 
         // Field
@@ -61,7 +62,8 @@ public class TestBusinessSnapshot extends AnalyticsTestSuiteNoDB {
                                                                                                            customField,
                                                                                                            fieldRecordId,
                                                                                                            auditLog,
-                                                                                                           tenantRecordId);
+                                                                                                           tenantRecordId,
+                                                                                                           reportGroup);
         final BusinessField businessField = BusinessField.create(businessAccountFieldModelDao);
 
         // Invoice
@@ -70,7 +72,8 @@ public class TestBusinessSnapshot extends AnalyticsTestSuiteNoDB {
                                                                                     invoice,
                                                                                     invoiceRecordId,
                                                                                     auditLog,
-                                                                                    tenantRecordId);
+                                                                                    tenantRecordId,
+                                                                                    reportGroup);
         final BusinessInvoiceItemBaseModelDao invoiceItemBaseModelDao = BusinessInvoiceItemBaseModelDao.create(account,
                                                                                                                accountRecordId,
                                                                                                                invoice,
@@ -81,7 +84,8 @@ public class TestBusinessSnapshot extends AnalyticsTestSuiteNoDB {
                                                                                                                plan,
                                                                                                                phase,
                                                                                                                auditLog,
-                                                                                                               tenantRecordId);
+                                                                                                               tenantRecordId,
+                                                                                                               reportGroup);
         final BusinessInvoice businessInvoice = new BusinessInvoice(invoiceModelDao,
                                                                     ImmutableList.<BusinessInvoiceItemBaseModelDao>of(invoiceItemBaseModelDao));
 
@@ -95,7 +99,8 @@ public class TestBusinessSnapshot extends AnalyticsTestSuiteNoDB {
                                                                                                                     refund,
                                                                                                                     paymentMethod,
                                                                                                                     auditLog,
-                                                                                                                    tenantRecordId);
+                                                                                                                    tenantRecordId,
+                                                                                                                    reportGroup);
         final BusinessInvoicePayment businessInvoicePayment = new BusinessInvoicePayment(invoicePaymentBaseModelDao);
 
         // Overdue
@@ -107,7 +112,8 @@ public class TestBusinessSnapshot extends AnalyticsTestSuiteNoDB {
                                                                                                               blockingStateRecordId,
                                                                                                               endDate,
                                                                                                               auditLog,
-                                                                                                              tenantRecordId);
+                                                                                                              tenantRecordId,
+                                                                                                              reportGroup);
         final BusinessOverdueStatus businessOverdueStatus = new BusinessOverdueStatus(businessOverdueStatusModelDao);
 
         // Subscriptions
@@ -127,7 +133,8 @@ public class TestBusinessSnapshot extends AnalyticsTestSuiteNoDB {
                                                                                                                                  previousSubscription,
                                                                                                                                  nextSubscription,
                                                                                                                                  auditLog,
-                                                                                                                                 tenantRecordId);
+                                                                                                                                 tenantRecordId,
+                                                                                                                                 reportGroup);
         final BusinessSubscriptionTransition businessSubscriptionTransition = new BusinessSubscriptionTransition(subscriptionTransitionModelDao);
 
         // Tag
@@ -137,7 +144,8 @@ public class TestBusinessSnapshot extends AnalyticsTestSuiteNoDB {
                                                                                                      tagRecordId,
                                                                                                      tagDefinition,
                                                                                                      auditLog,
-                                                                                                     tenantRecordId);
+                                                                                                     tenantRecordId,
+                                                                                                     reportGroup);
         final BusinessTag businessTag = BusinessTag.create(businessAccountTagModelDao);
 
         // Create the snapshot
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSubscriptionTransition.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSubscriptionTransition.java
index be667ab..53ed80c 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSubscriptionTransition.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessSubscriptionTransition.java
@@ -48,7 +48,8 @@ public class TestBusinessSubscriptionTransition extends AnalyticsTestSuiteNoDB {
                                                                                                                                  previousSubscription,
                                                                                                                                  nextSubscription,
                                                                                                                                  auditLog,
-                                                                                                                                 tenantRecordId);
+                                                                                                                                 tenantRecordId,
+                                                                                                                                 reportGroup);
         final BusinessSubscriptionTransition businessSubscriptionTransition = new BusinessSubscriptionTransition(subscriptionTransitionModelDao);
 
         verifyBusinessEntityBase(businessSubscriptionTransition);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessTag.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessTag.java
index 8df62d7..5a629c3 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessTag.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/TestBusinessTag.java
@@ -35,7 +35,8 @@ public class TestBusinessTag extends AnalyticsTestSuiteNoDB {
                                                                                                      tagRecordId,
                                                                                                      tagDefinition,
                                                                                                      auditLog,
-                                                                                                     tenantRecordId);
+                                                                                                     tenantRecordId,
+                                                                                                     reportGroup);
         final BusinessTag businessTag = BusinessTag.create(businessAccountTagModelDao);
         verifyBusinessTag(businessTag);
         Assert.assertEquals(businessTag.getObjectType(), ObjectType.ACCOUNT);
@@ -49,7 +50,8 @@ public class TestBusinessTag extends AnalyticsTestSuiteNoDB {
                                                                                                      tagRecordId,
                                                                                                      tagDefinition,
                                                                                                      auditLog,
-                                                                                                     tenantRecordId);
+                                                                                                     tenantRecordId,
+                                                                                                     reportGroup);
         final BusinessTag businessTag = BusinessTag.create(businessInvoiceTagModelDao);
         verifyBusinessTag(businessTag);
         Assert.assertEquals(businessTag.getObjectType(), ObjectType.INVOICE);
@@ -63,7 +65,8 @@ public class TestBusinessTag extends AnalyticsTestSuiteNoDB {
                                                                                                                   tagRecordId,
                                                                                                                   tagDefinition,
                                                                                                                   auditLog,
-                                                                                                                  tenantRecordId);
+                                                                                                                  tenantRecordId,
+                                                                                                                  reportGroup);
         final BusinessTag businessTag = BusinessTag.create(invoicePaymentTagModelDao);
         verifyBusinessTag(businessTag);
         Assert.assertEquals(businessTag.getObjectType(), ObjectType.INVOICE_PAYMENT);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/user/TestDefaultAnalyticsUserApi.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/user/TestDefaultAnalyticsUserApi.java
index 0fdafdd..5edac27 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/user/TestDefaultAnalyticsUserApi.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/api/user/TestDefaultAnalyticsUserApi.java
@@ -36,7 +36,8 @@ public class TestDefaultAnalyticsUserApi extends AnalyticsTestSuiteWithEmbeddedD
                                                                                     invoice,
                                                                                     payment,
                                                                                     auditLog,
-                                                                                    tenantRecordId);
+                                                                                    tenantRecordId,
+                                                                                    reportGroup);
         analyticsSqlDao.create(accountModelDao.getTableName(), accountModelDao, callContext);
 
         final AnalyticsUserApi analyticsUserApi = new AnalyticsUserApi(logService, killbillAPI, killbillDataSource);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountFieldModelDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountFieldModelDao.java
index 2d7a5ab..340df0b 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountFieldModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountFieldModelDao.java
@@ -30,7 +30,8 @@ public class TestBusinessAccountFieldModelDao extends AnalyticsTestSuiteNoDB {
                                                                                                    customField,
                                                                                                    fieldRecordId,
                                                                                                    auditLog,
-                                                                                                   tenantRecordId);
+                                                                                                   tenantRecordId,
+                                                                                                   reportGroup);
         verifyBusinessModelDaoBase(accountFieldModelDao, accountRecordId, tenantRecordId);
         Assert.assertEquals(accountFieldModelDao.getCreatedDate(), customField.getCreatedDate());
         Assert.assertEquals(accountFieldModelDao.getCustomFieldRecordId(), fieldRecordId);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountModelDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountModelDao.java
index 367a90a..f451c6f 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountModelDao.java
@@ -33,7 +33,8 @@ public class TestBusinessAccountModelDao extends AnalyticsTestSuiteNoDB {
                                                                                     null,
                                                                                     null,
                                                                                     auditLog,
-                                                                                    tenantRecordId);
+                                                                                    tenantRecordId,
+                                                                                    reportGroup);
         verifyAccountFields(accountModelDao);
         Assert.assertEquals(accountModelDao.getBalance(), BigDecimal.ONE);
         Assert.assertNull(accountModelDao.getLastInvoiceDate());
@@ -49,7 +50,8 @@ public class TestBusinessAccountModelDao extends AnalyticsTestSuiteNoDB {
                                                                                     invoice,
                                                                                     payment,
                                                                                     auditLog,
-                                                                                    tenantRecordId);
+                                                                                    tenantRecordId,
+                                                                                    reportGroup);
         verifyAccountFields(accountModelDao);
         Assert.assertEquals(accountModelDao.getBalance(), BigDecimal.ONE);
         Assert.assertEquals(accountModelDao.getLastInvoiceDate(), invoice.getInvoiceDate());
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountTagModelDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountTagModelDao.java
index f28c684..62d7292 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountTagModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessAccountTagModelDao.java
@@ -31,7 +31,8 @@ public class TestBusinessAccountTagModelDao extends AnalyticsTestSuiteNoDB {
                                                                                       tagRecordId,
                                                                                       tagDefinition,
                                                                                       auditLog,
-                                                                                      tenantRecordId);
+                                                                                      tenantRecordId,
+                                                                                      reportGroup);
         verifyBusinessModelDaoBase(tagModelDao, accountRecordId, tenantRecordId);
         Assert.assertEquals(tagModelDao.getCreatedDate(), tag.getCreatedDate());
         Assert.assertEquals(tagModelDao.getTagRecordId(), tagRecordId);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceFieldModelDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceFieldModelDao.java
index 9cf0392..9f0ceb9 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceFieldModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceFieldModelDao.java
@@ -30,7 +30,8 @@ public class TestBusinessInvoiceFieldModelDao extends AnalyticsTestSuiteNoDB {
                                                                                                    customField,
                                                                                                    fieldRecordId,
                                                                                                    auditLog,
-                                                                                                   tenantRecordId);
+                                                                                                   tenantRecordId,
+                                                                                                   reportGroup);
         verifyBusinessModelDaoBase(invoiceFieldModelDao, accountRecordId, tenantRecordId);
         Assert.assertEquals(invoiceFieldModelDao.getCreatedDate(), customField.getCreatedDate());
         Assert.assertEquals(invoiceFieldModelDao.getCustomFieldRecordId(), fieldRecordId);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceItemModelDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceItemModelDao.java
index fda8860..bab0f9c 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceItemModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceItemModelDao.java
@@ -35,7 +35,8 @@ public class TestBusinessInvoiceItemModelDao extends AnalyticsTestSuiteNoDB {
                                                                                                 null,
                                                                                                 null,
                                                                                                 auditLog,
-                                                                                                tenantRecordId);
+                                                                                                tenantRecordId,
+                                                                                                reportGroup);
         verifyInvoiceItemFields(invoiceItemModelDao);
         Assert.assertNull(invoiceItemModelDao.getBundleExternalKey());
         Assert.assertNull(invoiceItemModelDao.getProductName());
@@ -58,7 +59,8 @@ public class TestBusinessInvoiceItemModelDao extends AnalyticsTestSuiteNoDB {
                                                                                                 plan,
                                                                                                 phase,
                                                                                                 auditLog,
-                                                                                                tenantRecordId);
+                                                                                                tenantRecordId,
+                                                                                                reportGroup);
         verifyInvoiceItemFields(invoiceItemModelDao);
         Assert.assertEquals(invoiceItemModelDao.getBundleExternalKey(), bundle.getExternalKey());
         Assert.assertEquals(invoiceItemModelDao.getProductName(), plan.getProduct().getName());
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceModelDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceModelDao.java
index 980c8f2..31bab62 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceModelDao.java
@@ -30,7 +30,8 @@ public class TestBusinessInvoiceModelDao extends AnalyticsTestSuiteNoDB {
                                                                                     invoice,
                                                                                     invoiceRecordId,
                                                                                     auditLog,
-                                                                                    tenantRecordId);
+                                                                                    tenantRecordId,
+                                                                                    reportGroup);
         verifyBusinessModelDaoBase(invoiceModelDao, accountRecordId, tenantRecordId);
         Assert.assertEquals(invoiceModelDao.getCreatedDate(), invoice.getCreatedDate());
         Assert.assertEquals(invoiceModelDao.getInvoiceRecordId(), invoiceRecordId);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoicePaymentFieldModelDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoicePaymentFieldModelDao.java
index 554b56b..2680c39 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoicePaymentFieldModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoicePaymentFieldModelDao.java
@@ -30,7 +30,8 @@ public class TestBusinessInvoicePaymentFieldModelDao extends AnalyticsTestSuiteN
                                                                                                                         customField,
                                                                                                                         fieldRecordId,
                                                                                                                         auditLog,
-                                                                                                                        tenantRecordId);
+                                                                                                                        tenantRecordId,
+                                                                                                                        reportGroup);
         verifyBusinessModelDaoBase(invoicePaymentFieldModelDao, accountRecordId, tenantRecordId);
         Assert.assertEquals(invoicePaymentFieldModelDao.getCreatedDate(), customField.getCreatedDate());
         Assert.assertEquals(invoicePaymentFieldModelDao.getCustomFieldRecordId(), fieldRecordId);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoicePaymentModelDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoicePaymentModelDao.java
index 529af42..b4dd1cb 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoicePaymentModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoicePaymentModelDao.java
@@ -34,7 +34,8 @@ public class TestBusinessInvoicePaymentModelDao extends AnalyticsTestSuiteNoDB {
                                                                                                          refund,
                                                                                                          paymentMethod,
                                                                                                          auditLog,
-                                                                                                         tenantRecordId);
+                                                                                                         tenantRecordId,
+                                                                                                         reportGroup);
         verifyBusinessModelDaoBase(invoicePaymentModelDao, accountRecordId, tenantRecordId);
         Assert.assertEquals(invoicePaymentModelDao.getCreatedDate(), invoicePayment.getCreatedDate());
         Assert.assertEquals(invoicePaymentModelDao.getInvoicePaymentRecordId(), invoicePaymentRecordId);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoicePaymentTagModelDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoicePaymentTagModelDao.java
index 0d4bda1..352b8e6 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoicePaymentTagModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoicePaymentTagModelDao.java
@@ -31,7 +31,8 @@ public class TestBusinessInvoicePaymentTagModelDao extends AnalyticsTestSuiteNoD
                                                                                                                   tagRecordId,
                                                                                                                   tagDefinition,
                                                                                                                   auditLog,
-                                                                                                                  tenantRecordId);
+                                                                                                                  tenantRecordId,
+                                                                                                                  reportGroup);
         verifyBusinessModelDaoBase(invoicePaymentTagModelDao, accountRecordId, tenantRecordId);
         Assert.assertEquals(invoicePaymentTagModelDao.getCreatedDate(), tag.getCreatedDate());
         Assert.assertEquals(invoicePaymentTagModelDao.getTagRecordId(), tagRecordId);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceTagModelDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceTagModelDao.java
index 2b05827..25d64a7 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceTagModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessInvoiceTagModelDao.java
@@ -31,7 +31,8 @@ public class TestBusinessInvoiceTagModelDao extends AnalyticsTestSuiteNoDB {
                                                                                              tagRecordId,
                                                                                              tagDefinition,
                                                                                              auditLog,
-                                                                                             tenantRecordId);
+                                                                                             tenantRecordId,
+                                                                                             reportGroup);
         verifyBusinessModelDaoBase(invoiceTagModelDao, accountRecordId, tenantRecordId);
         Assert.assertEquals(invoiceTagModelDao.getCreatedDate(), tag.getCreatedDate());
         Assert.assertEquals(invoiceTagModelDao.getTagRecordId(), tagRecordId);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessOverdueStatusModelDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessOverdueStatusModelDao.java
index 83b41d9..3bb3d78 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessOverdueStatusModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessOverdueStatusModelDao.java
@@ -35,7 +35,8 @@ public class TestBusinessOverdueStatusModelDao extends AnalyticsTestSuiteNoDB {
                                                                                                       blockingStateRecordId,
                                                                                                       endDate,
                                                                                                       auditLog,
-                                                                                                      tenantRecordId);
+                                                                                                      tenantRecordId,
+                                                                                                      reportGroup);
         verifyBusinessModelDaoBase(overdueStatusModelDao, accountRecordId, tenantRecordId);
         Assert.assertEquals(overdueStatusModelDao.getCreatedDate(), blockingState.getCreatedDate());
         Assert.assertEquals(overdueStatusModelDao.getBlockingStateRecordId(), blockingStateRecordId);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessSubscriptionTransitionModelDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessSubscriptionTransitionModelDao.java
index 1ade98c..5041d64 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessSubscriptionTransitionModelDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/model/TestBusinessSubscriptionTransitionModelDao.java
@@ -45,7 +45,8 @@ public class TestBusinessSubscriptionTransitionModelDao extends AnalyticsTestSui
                                                                                                                                  previousSubscription,
                                                                                                                                  nextSubscription,
                                                                                                                                  auditLog,
-                                                                                                                                 tenantRecordId);
+                                                                                                                                 tenantRecordId,
+                                                                                                                                 reportGroup);
         verifyBusinessModelDaoBase(subscriptionTransitionModelDao, accountRecordId, tenantRecordId);
         Assert.assertEquals(subscriptionTransitionModelDao.getCreatedDate(), subscriptionTransition.getNextEventCreatedDate());
         Assert.assertEquals(subscriptionTransitionModelDao.getSubscriptionEventRecordId(), subscriptionEventRecordId);
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestAnalyticsDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestAnalyticsDao.java
index ddce78d..2338002 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestAnalyticsDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestAnalyticsDao.java
@@ -38,7 +38,8 @@ public class TestAnalyticsDao extends AnalyticsTestSuiteWithEmbeddedDB {
                                                                                     invoice,
                                                                                     payment,
                                                                                     auditLog,
-                                                                                    tenantRecordId);
+                                                                                    tenantRecordId,
+                                                                                    reportGroup);
 
         analyticsSqlDao.create(accountModelDao.getTableName(), accountModelDao, callContext);
         Assert.assertEquals(analyticsDao.getAccountById(account.getId(), callContext), new BusinessAccount(accountModelDao));
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessAnalyticsSqlDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessAnalyticsSqlDao.java
index f7564e6..dede896 100644
--- a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessAnalyticsSqlDao.java
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessAnalyticsSqlDao.java
@@ -34,7 +34,8 @@ public class TestBusinessAnalyticsSqlDao extends AnalyticsTestSuiteWithEmbeddedD
                                                                                     invoice,
                                                                                     payment,
                                                                                     auditLog,
-                                                                                    tenantRecordId);
+                                                                                    tenantRecordId,
+                                                                                    reportGroup);
 
         Assert.assertNull(analyticsSqlDao.getAccountByAccountRecordId(accountModelDao.getAccountRecordId(),
                                                                       accountModelDao.getTenantRecordId(),
diff --git a/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessInvoiceDao.java b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessInvoiceDao.java
new file mode 100644
index 0000000..5a50590
--- /dev/null
+++ b/osgi-bundles/bundles/analytics/src/test/java/com/ning/billing/osgi/bundles/analytics/dao/TestBusinessInvoiceDao.java
@@ -0,0 +1,4 @@
+package com.ning.billing.osgi.bundles.analytics.dao;
+
+public class TestBusinessInvoiceDao {
+}