killbill-memoizeit
Changes
pom.xml 2(+1 -1)
server/src/main/resources/TheNingCatalog.xml 3279(+3279 -0)
subscription/src/main/java/com/ning/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java 5(+5 -0)
subscription/src/main/java/com/ning/billing/subscription/engine/dao/DefaultSubscriptionDao.java 13(+13 -0)
subscription/src/main/java/com/ning/billing/subscription/engine/dao/RepairSubscriptionDao.java 5(+5 -0)
subscription/src/main/resources/com/ning/billing/subscription/engine/dao/BundleSqlDao.sql.stg 11(+11 -0)
subscription/src/test/java/com/ning/billing/subscription/engine/dao/MockSubscriptionDaoMemory.java 4(+4 -0)
Details
diff --git a/api/src/main/java/com/ning/billing/subscription/api/SubscriptionBaseInternalApi.java b/api/src/main/java/com/ning/billing/subscription/api/SubscriptionBaseInternalApi.java
index 02a1bd9..9662d65 100644
--- a/api/src/main/java/com/ning/billing/subscription/api/SubscriptionBaseInternalApi.java
+++ b/api/src/main/java/com/ning/billing/subscription/api/SubscriptionBaseInternalApi.java
@@ -73,4 +73,7 @@ public interface SubscriptionBaseInternalApi {
public List<EntitlementAOStatusDryRun> getDryRunChangePlanStatus(final UUID subscriptionId, @Nullable final String baseProductName,
final DateTime requestedDate, final InternalTenantContext context) throws SubscriptionBaseApiException;
+
+
+ public void updateExternalKey(final UUID bundleId, final String newExternalKey, final InternalCallContext context);
}
diff --git a/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultSubscriptionApi.java b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultSubscriptionApi.java
index 928930a..0c18efd 100644
--- a/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultSubscriptionApi.java
+++ b/entitlement/src/main/java/com/ning/billing/entitlement/api/DefaultSubscriptionApi.java
@@ -30,6 +30,7 @@ import org.joda.time.DateTimeZone;
import com.ning.billing.ErrorCode;
import com.ning.billing.ObjectType;
+import com.ning.billing.callcontext.InternalCallContext;
import com.ning.billing.callcontext.InternalTenantContext;
import com.ning.billing.entitlement.AccountEntitlements;
import com.ning.billing.entitlement.EntitlementInternalApi;
@@ -42,6 +43,7 @@ import com.ning.billing.subscription.api.user.SubscriptionBaseApiException;
import com.ning.billing.subscription.api.user.SubscriptionBaseBundle;
import com.ning.billing.util.cache.Cachable.CacheType;
import com.ning.billing.util.cache.CacheControllerDispatcher;
+import com.ning.billing.util.callcontext.CallContext;
import com.ning.billing.util.callcontext.InternalCallContextFactory;
import com.ning.billing.util.callcontext.TenantContext;
import com.ning.billing.util.customfield.ShouldntHappenException;
@@ -136,6 +138,12 @@ public class DefaultSubscriptionApi implements SubscriptionApi {
}
@Override
+ public void updateExternalKey(final UUID uuid, final String newExternalKey, final CallContext callContext) {
+ final InternalCallContext internalContext = internalCallContextFactory.createInternalCallContext(callContext);
+ subscriptionBaseInternalApi.updateExternalKey(uuid, newExternalKey, internalContext);
+ }
+
+ @Override
public List<SubscriptionBundle> getSubscriptionBundlesForAccountIdAndExternalKey(final UUID accountId, final String externalKey, final TenantContext context) throws SubscriptionApiException {
return ImmutableList.<SubscriptionBundle>copyOf(Iterables.<SubscriptionBundle>filter(getSubscriptionBundlesForAccount(accountId, context),
new Predicate<SubscriptionBundle>() {
@@ -152,7 +160,7 @@ public class DefaultSubscriptionApi implements SubscriptionApi {
try {
final UUID activeSubscriptionIdForKey = entitlementUtils.getFirstActiveSubscriptionIdForKeyOrNull(externalKey, internalContext);
if (activeSubscriptionIdForKey == null) {
- throw new SubscriptionApiException(new SubscriptionBaseApiException(ErrorCode.SUB_CREATE_ACTIVE_BUNDLE_KEY_EXISTS, externalKey));
+ throw new SubscriptionApiException(new SubscriptionBaseApiException(ErrorCode.SUB_GET_INVALID_BUNDLE_KEY, externalKey));
}
final SubscriptionBase subscriptionBase = subscriptionBaseInternalApi.getSubscriptionFromId(activeSubscriptionIdForKey, internalContext);
return getSubscriptionBundle(subscriptionBase.getBundleId(), context);
diff --git a/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultSubscriptionApi.java b/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultSubscriptionApi.java
index 6856ec9..6e610df 100644
--- a/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultSubscriptionApi.java
+++ b/entitlement/src/test/java/com/ning/billing/entitlement/api/TestDefaultSubscriptionApi.java
@@ -122,7 +122,7 @@ public class TestDefaultSubscriptionApi extends EntitlementTestSuiteWithEmbedded
subscriptionApi.getActiveSubscriptionBundleForExternalKey(externalKey, callContext);
Assert.fail("Expected getActiveSubscriptionBundleForExternalKey to fail after cancellation");
} catch (SubscriptionApiException e) {
- assertEquals(e.getCode(), ErrorCode.SUB_CREATE_ACTIVE_BUNDLE_KEY_EXISTS.getCode());
+ assertEquals(e.getCode(), ErrorCode.SUB_GET_INVALID_BUNDLE_KEY.getCode());
}
diff --git a/invoice/src/main/java/com/ning/billing/invoice/InvoiceDispatcher.java b/invoice/src/main/java/com/ning/billing/invoice/InvoiceDispatcher.java
index 2c94cb9..64a699c 100644
--- a/invoice/src/main/java/com/ning/billing/invoice/InvoiceDispatcher.java
+++ b/invoice/src/main/java/com/ning/billing/invoice/InvoiceDispatcher.java
@@ -191,6 +191,7 @@ public class InvoiceDispatcher {
final LocalDate targetDate = dateAndTimeZoneContext != null ? dateAndTimeZoneContext.computeTargetDate(targetDateTime) : null;
final Invoice invoice = targetDate != null ? generator.generateInvoice(accountId, billingEvents, invoices, targetDate, targetCurrency) : null;
+ boolean isRealInvoiceWithItems = false;
if (invoice == null) {
log.info("Generated null invoice for accountId {} and targetDate {} (targetDateTime {})", new Object[]{accountId, targetDate, targetDateTime});
if (!dryRun) {
@@ -210,7 +211,7 @@ public class InvoiceDispatcher {
return input.getInvoiceId();
}
}));
- final boolean isRealInvoiceWithItems = adjustedUniqueOtherInvoiceId.remove(invoice.getId());
+ isRealInvoiceWithItems = adjustedUniqueOtherInvoiceId.remove(invoice.getId());
if (isRealInvoiceWithItems) {
log.info("Generated invoice {} with {} items for accountId {} and targetDate {} (targetDateTime {})", new Object[]{invoice.getId(), invoice.getNumberOfItems(), accountId, targetDate, targetDateTime});
@@ -265,7 +266,7 @@ public class InvoiceDispatcher {
}
}
- if (account.isNotifiedForInvoices() && invoice != null && !dryRun) {
+ if (account.isNotifiedForInvoices() && isRealInvoiceWithItems && !dryRun) {
// Need to re-hydrate the invoice object to get the invoice number (record id)
// API_FIX InvoiceNotifier public API?
invoiceNotifier.notify(account, new DefaultInvoice(invoiceDao.getById(invoice.getId(), context)), buildTenantContext(context));
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
index f1727d0..87c8abc 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/AccountResource.java
@@ -635,7 +635,7 @@ public class AccountResource extends JaxRsResourceBase {
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@HeaderParam(HDR_REASON) final String reason,
@HeaderParam(HDR_COMMENT) final String comment,
- @javax.ws.rs.core.Context final HttpServletRequest request) {
+ @javax.ws.rs.core.Context final HttpServletRequest request) throws CustomFieldApiException {
return super.deleteCustomFields(UUID.fromString(id), customFieldList,
context.createContext(createdBy, reason, comment, request));
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java
index a29f632..423f861 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/BundleResource.java
@@ -177,7 +177,7 @@ public class BundleResource extends JaxRsResourceBase {
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@HeaderParam(HDR_REASON) final String reason,
@HeaderParam(HDR_COMMENT) final String comment,
- @javax.ws.rs.core.Context final HttpServletRequest request) {
+ @javax.ws.rs.core.Context final HttpServletRequest request) throws CustomFieldApiException {
return super.deleteCustomFields(UUID.fromString(id), customFieldList,
context.createContext(createdBy, reason, comment, request));
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/InvoiceResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/InvoiceResource.java
index 44522e0..71e278d 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/InvoiceResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/InvoiceResource.java
@@ -447,7 +447,7 @@ public class InvoiceResource extends JaxRsResourceBase {
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@HeaderParam(HDR_REASON) final String reason,
@HeaderParam(HDR_COMMENT) final String comment,
- @javax.ws.rs.core.Context final HttpServletRequest request) {
+ @javax.ws.rs.core.Context final HttpServletRequest request) throws CustomFieldApiException {
return super.deleteCustomFields(UUID.fromString(id), customFieldList,
context.createContext(createdBy, reason, comment, request));
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxRsResourceBase.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxRsResourceBase.java
index 5a265fd..c915b37 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxRsResourceBase.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/JaxRsResourceBase.java
@@ -26,6 +26,7 @@ import java.util.List;
import java.util.Map;
import java.util.UUID;
+import javax.annotation.Nullable;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
@@ -71,8 +72,10 @@ import com.ning.billing.util.tag.TagDefinition;
import com.fasterxml.jackson.core.JsonGenerator;
import com.google.common.base.Function;
+import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
public abstract class JaxRsResourceBase implements JaxrsResource {
@@ -184,10 +187,43 @@ public abstract class JaxRsResourceBase implements JaxrsResource {
return uriBuilder.buildResponse(this.getClass(), "createCustomFields", id);
}
+ /**
+ * @param id the if of the object for which the custom fields apply
+ * @param customFieldList a comma separated list of custom field ids or null if they should all be removed
+ * @param context the context
+ * @return
+ * @throws CustomFieldApiException
+ */
protected Response deleteCustomFields(final UUID id,
- final String customFieldList,
- final CallContext context) {
- // STEPH missing API to delete custom fields
+ @Nullable final String customFieldList,
+ final CallContext context) throws CustomFieldApiException {
+
+ // Retrieve all the custom fields for the object
+ final List<CustomField> fields = customFieldUserApi.getCustomFieldsForObject(id, getObjectType(), context);
+
+ final String[] requestedIds = customFieldList != null ? customFieldList.split("\\s*,\\s*") : null;
+
+ // Filter the proposed list to only keep the one that exist and indeed match our object
+ final Iterable inputIterable = Iterables.filter(fields, new Predicate<CustomField>() {
+ @Override
+ public boolean apply(final CustomField input) {
+ if (customFieldList == null) {
+ return true;
+ }
+ for (final String cur : requestedIds) {
+ final UUID curId = UUID.fromString(cur);
+ if (input.getId().equals(curId)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ });
+
+ if (inputIterable.iterator().hasNext()) {
+ final List<CustomField> input = ImmutableList.<CustomField>copyOf(inputIterable);
+ customFieldUserApi.removeCustomFields(input, context);
+ }
return Response.status(Response.Status.OK).build();
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentResource.java
index 73ac13a..96e09b8 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/PaymentResource.java
@@ -321,7 +321,7 @@ public class PaymentResource extends JaxRsResourceBase {
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@HeaderParam(HDR_REASON) final String reason,
@HeaderParam(HDR_COMMENT) final String comment,
- @javax.ws.rs.core.Context final HttpServletRequest request) {
+ @javax.ws.rs.core.Context final HttpServletRequest request) throws CustomFieldApiException {
return super.deleteCustomFields(UUID.fromString(id), customFieldList,
context.createContext(createdBy, reason, comment, request));
}
diff --git a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/SubscriptionResource.java b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/SubscriptionResource.java
index eeb33e6..6c19a71 100644
--- a/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/SubscriptionResource.java
+++ b/jaxrs/src/main/java/com/ning/billing/jaxrs/resources/SubscriptionResource.java
@@ -422,7 +422,7 @@ public class SubscriptionResource extends JaxRsResourceBase {
@HeaderParam(HDR_REASON) final String reason,
@HeaderParam(HDR_COMMENT) final String comment,
@javax.ws.rs.core.Context final UriInfo uriInfo,
- @javax.ws.rs.core.Context final HttpServletRequest request) {
+ @javax.ws.rs.core.Context final HttpServletRequest request) throws CustomFieldApiException {
return super.deleteCustomFields(UUID.fromString(id), customFieldList,
context.createContext(createdBy, reason, comment, request));
}
pom.xml 2(+1 -1)
diff --git a/pom.xml b/pom.xml
index a91fd65..e73a51d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill-oss-parent</artifactId>
<groupId>com.ning.billing</groupId>
- <version>0.8.0-SNAPSHOT</version>
+ <version>0.5.17</version>
</parent>
<artifactId>killbill</artifactId>
<version>0.8.8-SNAPSHOT</version>
diff --git a/server/src/main/resources/killbill-server.properties.xno b/server/src/main/resources/killbill-server.properties.xno
new file mode 100644
index 0000000..1c18f0f
--- /dev/null
+++ b/server/src/main/resources/killbill-server.properties.xno
@@ -0,0 +1,66 @@
+#
+# Copyright 2010-2013 Ning, Inc.
+#
+# Ning licenses this file to you under the Apache License, version 2.0
+# (the "License"); you may not use this file except in compliance with the
+# License. You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+
+
+# Use skeleton properties for server and configure killbill database
+com.ning.jetty.jdbi.url=jdbc:mysql://xnomdbgeneral06.ningops.com:3306/irs_xno
+com.ning.jetty.jdbi.user=irs_read
+com.ning.jetty.jdbi.password=r3@don74!
+
+com.ning.billing.analytics.dbi.password=r3@don74!
+com.ning.billing.analytics.dbi.url=jdbc:mysql://xnomdbgeneral06.ningops.com:3306/irs_xno
+com.ning.billing.analytics.dbi.user=irs_read
+
+com.ning.billing.osgi.jdbc.url=jdbc:mysql://xnomdbgeneral06.ningops.com:3306/irs_xno
+com.ning.billing.osgi.jdbc.user=irs_read
+com.ning.billing.osgi.jdbc.password=r3@don74!
+
+
+# Use the SpyCarAdvanced.xml catalog
+killbill.catalog.uri=TheNingCatalog.xml
+
+# Set default timezone to UTC
+user.timezone=UTC
+
+# For bundles that use antlr (string template)
+ANTLR_USE_DIRECT_CLASS_LOADING=true
+
+# To enable test endpoint and have Kill Bill run with a ClockMock
+killbill.server.test.mode=true
+
+
+killbill.billing.notificationq.main.sleep=100000000
+killbill.billing.notificationq.main.off=true
+
+killbill.billing.persistent.bus.main.sleep=100000000
+killbill.billing.persistent.bus.main.nbThreads=1
+killbill.billing.persistent.bus.main.claimed=1
+killbill.billing.persistent.bus.main.off=true
+
+killbill.billing.persistent.bus.external.sleep=100000000
+killbill.billing.persistent.bus.external.off=true
+killbill.billing.persistent.bus.external.nbThreads=1
+killbill.billing.persistent.bus.external.claimed=1
+killbill.billing.persistent.bus.external.tableName=bus_ext_events
+killbill.billing.persistent.bus.external.historyTableName=bus_ext_events_history
+
+killbill.billing.notificationq.analytics.tableName=analytics_notifications
+killbill.billing.notificationq.analytics.off=true
+killbill.billing.notificationq.analytics.sleep=100000000
+
+killbill.server.multitenant=false
+killbill.server.rbac=false
+
server/src/main/resources/TheNingCatalog.xml 3279(+3279 -0)
diff --git a/server/src/main/resources/TheNingCatalog.xml b/server/src/main/resources/TheNingCatalog.xml
new file mode 100644
index 0000000..4dc173e
--- /dev/null
+++ b/server/src/main/resources/TheNingCatalog.xml
@@ -0,0 +1,3279 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
+ xsi:noNamespaceSchemaLocation="../../../../../../../../../killbill/catalog/src/test/resources/CatalogSchema.xsd">
+
+ <effectiveDate>2000-01-01T00:00:00+00:00</effectiveDate>
+
+ <catalogName>Ning</catalogName>
+
+ <currencies>
+ <currency>USD</currency>
+ <currency>GBP</currency>
+ <currency>BRL</currency>
+ <currency>EUR</currency>
+ <currency>AUD</currency>
+ <currency>MXN</currency>
+ </currencies>
+
+ <products>
+
+ <!-- Bedazzle Products -->
+ <product name="Basic">
+ <category>BASE</category>
+ <included>
+ <addonProduct>BrandedMusic</addonProduct>
+ <addonProduct>BrandedVideo</addonProduct>
+ <addonProduct>Events</addonProduct>
+ <addonProduct>Groups</addonProduct>
+ <addonProduct>PaidAccess</addonProduct>
+ <addonProduct>DoItForMe</addonProduct>
+ <addonProduct>DomainNameAddOn</addonProduct>
+ </included>
+ </product>
+ <product name="Performance">
+ <category>BASE</category>
+ <included>
+ <addonProduct>BrandedMusic</addonProduct>
+ <addonProduct>BrandedVideo</addonProduct>
+ <addonProduct>Events</addonProduct>
+ <addonProduct>Groups</addonProduct>
+ <addonProduct>PaidAccess</addonProduct>
+ <addonProduct>DoItForMe</addonProduct>
+ <addonProduct>DomainNameAddOn</addonProduct>
+ </included>
+ </product>
+ <product name="Business">
+ <category>BASE</category>
+ <included>
+ <addonProduct>BrandedMusic</addonProduct>
+ <addonProduct>BrandedVideo</addonProduct>
+ <addonProduct>Events</addonProduct>
+ <addonProduct>Groups</addonProduct>
+ <addonProduct>PaidAccess</addonProduct>
+ <addonProduct>DoItForMe</addonProduct>
+ <addonProduct>DomainNameAddOn</addonProduct>
+ </included>
+ </product>
+ <product name="BusinessPlus">
+ <category>BASE</category>
+ <included>
+ <addonProduct>BrandedMusic</addonProduct>
+ <addonProduct>BrandedVideo</addonProduct>
+ <addonProduct>Events</addonProduct>
+ <addonProduct>Groups</addonProduct>
+ <addonProduct>PaidAccess</addonProduct>
+ <addonProduct>DoItForMe</addonProduct>
+ <addonProduct>DomainNameAddOn</addonProduct>
+ </included>
+ </product>
+ <product name="Corporate">
+ <category>BASE</category>
+ <included>
+ <addonProduct>BrandedMusic</addonProduct>
+ <addonProduct>BrandedVideo</addonProduct>
+ <addonProduct>Events</addonProduct>
+ <addonProduct>Groups</addonProduct>
+ <addonProduct>PaidAccess</addonProduct>
+ <addonProduct>DoItForMe</addonProduct>
+ <addonProduct>DomainNameAddOn</addonProduct>
+ </included>
+ </product>
+ <product name="Demo">
+ <category>BASE</category>
+ <included>
+ <addonProduct>BrandedMusic</addonProduct>
+ <addonProduct>BrandedVideo</addonProduct>
+ <addonProduct>Events</addonProduct>
+ <addonProduct>Groups</addonProduct>
+ <addonProduct>PaidAccess</addonProduct>
+ <addonProduct>DoItForMe</addonProduct>
+ <addonProduct>DomainNameAddOn</addonProduct>
+ </included>
+ </product>
+
+ <!-- These products are pre-Bedazzle -->
+ <product name="BrandedMusic">
+ <category>ADD_ON</category>
+ </product>
+ <product name="BrandedVideo">
+ <category>ADD_ON</category>
+ </product>
+ <product name="Events">
+ <category>ADD_ON</category>
+ </product>
+ <product name="Groups">
+ <category>ADD_ON</category>
+ </product>
+ <product name="PaidAccess">
+ <category>ADD_ON</category>
+ </product>
+ <product name="Ads">
+ <category>STANDALONE</category>
+ </product>
+ <product name="DoItForMe">
+ <category>ADD_ON</category>
+ </product>
+ <product name="Domain">
+ <category>STANDALONE</category>
+ </product>
+ <product name="Mini">
+ <category>BASE</category>
+ <available>
+ <addonProduct>BrandedMusic</addonProduct>
+ <addonProduct>BrandedVideo</addonProduct>
+ <addonProduct>Events</addonProduct>
+ <addonProduct>Groups</addonProduct>
+ <addonProduct>PaidAccess</addonProduct>
+ <addonProduct>DoItForMe</addonProduct>
+ <addonProduct>DomainNameAddOn</addonProduct>
+ </available>
+ </product>
+ <product name="PartnerSupport">
+ <category>STANDALONE</category>
+ </product>
+ <product name="PersonalSupport">
+ <category>STANDALONE</category>
+ </product>
+ <product name="Plus">
+ <category>BASE</category>
+ <included>
+ <addonProduct>Events</addonProduct>
+ <addonProduct>Groups</addonProduct>
+ </included>
+ <available>
+ <addonProduct>BrandedMusic</addonProduct>
+ <addonProduct>BrandedVideo</addonProduct>
+ <addonProduct>PaidAccess</addonProduct>
+ <addonProduct>DoItForMe</addonProduct>
+ <addonProduct>DomainNameAddOn</addonProduct>
+ </available>
+ </product>
+ <product name="PrepaidCredit">
+ <category>STANDALONE</category>
+ </product>
+ <product name="Pro">
+ <category>BASE</category>
+ <included>
+ <addonProduct>BrandedMusic</addonProduct>
+ <addonProduct>BrandedVideo</addonProduct>
+ <addonProduct>Events</addonProduct>
+ <addonProduct>Groups</addonProduct>
+ </included>
+ <available>
+ <addonProduct>PaidAccess</addonProduct>
+ <addonProduct>DoItForMe</addonProduct>
+ <addonProduct>DomainNameAddOn</addonProduct>
+ </available>
+ </product>
+ <product name="ProfessionalSupport">
+ <category>STANDALONE</category>
+ </product>
+ <product name="RemoveLinks">
+ <category>STANDALONE</category>
+ </product>
+ <product name="DomainNameAddOn">
+ <category>ADD_ON</category>
+ </product>
+ <product name="PriceChangeTest">
+ <category>BASE</category>
+ </product>
+ <product name="StorageBandwidth">
+ <category>STANDALONE</category>
+ </product>
+ </products>
+
+ <rules>
+ <changePolicy>
+ <!-- Changes to Rescue Pricing are always EOT -->
+ <changePolicyCase>
+ <toPriceList>rescue-cheap</toPriceList>
+ <policy>END_OF_TERM</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <toPriceList>rescue-expensive</toPriceList>
+ <policy>END_OF_TERM</policy>
+ </changePolicyCase>
+ <!-- Trial changes are always immediate -->
+ <changePolicyCase>
+ <phaseType>TRIAL</phaseType>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <!-- Changes to/from unpublished plans are always immediate -->
+ <changePolicyCase>
+ <fromProduct>BusinessPlus</fromProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromProduct>Corporate</fromProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromProduct>Demo</fromProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <toProduct>BusinessPlus</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <toProduct>Corporate</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <toProduct>Demo</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <!-- Billing period change longer-> Immediate -->
+ <changePolicyCase>
+ <fromBillingPeriod>MONTHLY</fromBillingPeriod>
+ <toBillingPeriod>ANNUAL</toBillingPeriod>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <!-- Conversions to Bedazzle -> Immediate -->
+ <changePolicyCase>
+ <fromProduct>Mini</fromProduct>
+ <toProduct>Basic</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromProduct>Mini</fromProduct>
+ <toProduct>Performance</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromProduct>Mini</fromProduct>
+ <toProduct>Business</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromProduct>Plus</fromProduct>
+ <toProduct>Basic</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromProduct>Plus</fromProduct>
+ <toProduct>Performance</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromProduct>Plus</fromProduct>
+ <toProduct>Business</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromProduct>Pro</fromProduct>
+ <toProduct>Basic</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromProduct>Pro</fromProduct>
+ <toProduct>Performance</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromProduct>Pro</fromProduct>
+ <toProduct>Business</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+
+ <!-- Upgrades -> Immediate -->
+ <changePolicyCase>
+ <fromProduct>Basic</fromProduct>
+ <toProduct>Performance</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromProduct>Basic</fromProduct>
+ <toProduct>Business</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromProduct>Performance</fromProduct>
+ <toProduct>Business</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+
+ <changePolicyCase>
+ <fromProduct>Mini</fromProduct>
+ <toProduct>Plus</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromProduct>Mini</fromProduct>
+ <toProduct>Pro</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <changePolicyCase>
+ <fromProduct>Plus</fromProduct>
+ <toProduct>Pro</toProduct>
+ <policy>IMMEDIATE</policy>
+ </changePolicyCase>
+ <!-- default policy is EOT -->
+ <changePolicyCase>
+ <policy>END_OF_TERM</policy>
+ </changePolicyCase>
+ </changePolicy>
+ <changeAlignment>
+ <!-- Discount plans align to subscription start-->
+ <changeAlignmentCase>
+ <toPriceList>earlydiscount</toPriceList>
+ <alignment>CHANGE_OF_PLAN</alignment>
+ </changeAlignmentCase>
+ <changeAlignmentCase>
+ <toPriceList>trialpay</toPriceList>
+ <alignment>CHANGE_OF_PLAN</alignment>
+ </changeAlignmentCase>
+ <changeAlignmentCase>
+ <toPriceList>cafepress</toPriceList>
+ <alignment>CHANGE_OF_PLAN</alignment>
+ </changeAlignmentCase>
+ <changeAlignmentCase>
+ <toPriceList>pearson</toPriceList>
+ <alignment>CHANGE_OF_PLAN</alignment>
+ </changeAlignmentCase>
+ <changeAlignmentCase>
+ <toPriceList>wego</toPriceList>
+ <alignment>CHANGE_OF_PLAN</alignment>
+ </changeAlignmentCase>
+ <changeAlignmentCase>
+ <toPriceList>pro-annual-discount-pricelist</toPriceList>
+ <alignment>CHANGE_OF_PLAN</alignment>
+ </changeAlignmentCase>
+ <changeAlignmentCase>
+ <toPriceList>pro-annual-dev-discount-pricelist</toPriceList>
+ <alignment>CHANGE_OF_PLAN</alignment>
+ </changeAlignmentCase>
+ <changeAlignmentCase>
+ <toPriceList>plus-annual-discount-pricelist</toPriceList>
+ <alignment>CHANGE_OF_PLAN</alignment>
+ </changeAlignmentCase>
+ <changeAlignmentCase>
+ <toPriceList>standard-comp-strategic</toPriceList>
+ <alignment>CHANGE_OF_PLAN</alignment>
+ </changeAlignmentCase>
+ <changeAlignmentCase>
+ <toPriceList>standard-comp-internal</toPriceList>
+ <alignment>CHANGE_OF_PLAN</alignment>
+ </changeAlignmentCase>
+ <changeAlignmentCase>
+ <toPriceList>standard-comp-external</toPriceList>
+ <alignment>CHANGE_OF_PLAN</alignment>
+ </changeAlignmentCase>
+ <!-- Rescue plans align to the change of pricelist -->
+ <changeAlignmentCase>
+ <toPriceList>rescue-cheap</toPriceList>
+ <alignment>CHANGE_OF_PRICELIST</alignment>
+ </changeAlignmentCase>
+ <changeAlignmentCase>
+ <toPriceList>rescue-expensive</toPriceList>
+ <alignment>CHANGE_OF_PRICELIST</alignment>
+ </changeAlignmentCase>
+ <!-- By default everything else aligns to bundle start -->
+ <changeAlignmentCase>
+ <alignment>START_OF_BUNDLE</alignment>
+ </changeAlignmentCase>
+ </changeAlignment>
+ <cancelPolicy>
+ <cancelPolicyCase>
+ <phaseType>TRIAL</phaseType>
+ <policy>IMMEDIATE</policy>
+ </cancelPolicyCase>
+ <cancelPolicyCase>
+ <policy>END_OF_TERM</policy>
+ </cancelPolicyCase>
+ </cancelPolicy>
+ <createAlignment>
+ <createAlignmentCase>
+ <alignment>START_OF_BUNDLE</alignment>
+ </createAlignmentCase>
+ </createAlignment>
+ <billingAlignment>
+ <billingAlignmentCase>
+ <productCategory>BASE</productCategory>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <alignment>SUBSCRIPTION</alignment>
+ </billingAlignmentCase>
+ <billingAlignmentCase>
+ <alignment>ACCOUNT</alignment>
+ </billingAlignmentCase>
+ </billingAlignment>
+ <priceList>
+ <priceListCase>
+ <!-- Any change initially goes to default after migration we may move to proper price list behavior-->
+ <toPriceList>DEFAULT</toPriceList>
+ </priceListCase>
+ </priceList>
+ </rules>
+
+ <plans>
+ <!-- Bedazzle Plans -->
+ <plan name="basic-monthly">
+ <product>Basic</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>14</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>22</value></price>
+ <price><currency>MXN</currency><value>420</value></price>
+ <price><currency>BRL</currency><value>70</value></price>
+ <price><currency>EUR</currency><value>27</value></price>
+ <price><currency>AUD</currency><value>30</value></price>
+ <price><currency>USD</currency><value>30</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="basic-monthly-notrial">
+ <product>Basic</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>22</value></price>
+ <price><currency>MXN</currency><value>420</value></price>
+ <price><currency>BRL</currency><value>70</value></price>
+ <price><currency>EUR</currency><value>27</value></price>
+ <price><currency>AUD</currency><value>30</value></price>
+ <price><currency>USD</currency><value>30</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="basic-annual">
+ <product>Basic</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>14</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>216</value></price>
+ <price><currency>MXN</currency><value>4188</value></price>
+ <price><currency>BRL</currency><value>660</value></price>
+ <price><currency>EUR</currency><value>264</value></price>
+ <price><currency>AUD</currency><value>300</value></price>
+ <price><currency>USD</currency><value>300</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="basic-annual-notrial">
+ <product>Basic</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>216</value></price>
+ <price><currency>MXN</currency><value>4188</value></price>
+ <price><currency>BRL</currency><value>660</value></price>
+ <price><currency>EUR</currency><value>264</value></price>
+ <price><currency>AUD</currency><value>300</value></price>
+ <price><currency>USD</currency><value>300</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="performance-monthly">
+ <product>Performance</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>14</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>49</value></price>
+ <price><currency>MXN</currency><value>849</value></price>
+ <price><currency>BRL</currency><value>139</value></price>
+ <price><currency>EUR</currency><value>55</value></price>
+ <price><currency>AUD</currency><value>59</value></price>
+ <price><currency>USD</currency><value>59</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="performance-monthly-notrial">
+ <product>Performance</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>49</value></price>
+ <price><currency>MXN</currency><value>849</value></price>
+ <price><currency>BRL</currency><value>139</value></price>
+ <price><currency>EUR</currency><value>55</value></price>
+ <price><currency>AUD</currency><value>59</value></price>
+ <price><currency>USD</currency><value>59</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="performance-annual">
+ <product>Performance</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>14</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>480</value></price>
+ <price><currency>MXN</currency><value>8388</value></price>
+ <price><currency>BRL</currency><value>1308</value></price>
+ <price><currency>EUR</currency><value>540</value></price>
+ <price><currency>AUD</currency><value>588</value></price>
+ <price><currency>USD</currency><value>588</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="performance-annual-notrial">
+ <product>Performance</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>480</value></price>
+ <price><currency>MXN</currency><value>8388</value></price>
+ <price><currency>BRL</currency><value>1308</value></price>
+ <price><currency>EUR</currency><value>540</value></price>
+ <price><currency>AUD</currency><value>588</value></price>
+ <price><currency>USD</currency><value>588</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="business-monthly">
+ <product>Business</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>14</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>90</value></price>
+ <price><currency>MXN</currency><value>1699</value></price>
+ <price><currency>BRL</currency><value>279</value></price>
+ <price><currency>EUR</currency><value>99</value></price>
+ <price><currency>AUD</currency><value>119</value></price>
+ <price><currency>USD</currency><value>119</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="business-monthly-notrial">
+ <product>Business</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>90</value></price>
+ <price><currency>MXN</currency><value>1699</value></price>
+ <price><currency>BRL</currency><value>279</value></price>
+ <price><currency>EUR</currency><value>99</value></price>
+ <price><currency>AUD</currency><value>119</value></price>
+ <price><currency>USD</currency><value>119</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="business-annual">
+ <product>Business</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>14</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>900</value></price>
+ <price><currency>MXN</currency><value>16788</value></price>
+ <price><currency>BRL</currency><value>2628</value></price>
+ <price><currency>EUR</currency><value>984</value></price>
+ <price><currency>AUD</currency><value>1180</value></price>
+ <price><currency>USD</currency><value>1188</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="business-annual-notrial">
+ <product>Business</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>900</value></price>
+ <price><currency>MXN</currency><value>16788</value></price>
+ <price><currency>BRL</currency><value>2628</value></price>
+ <price><currency>EUR</currency><value>984</value></price>
+ <price><currency>AUD</currency><value>1180</value></price>
+ <price><currency>USD</currency><value>1188</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="businessplus-monthly">
+ <product>BusinessPlus</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>758</value></price>
+ <price><currency>MXN</currency><value>14131</value></price>
+ <price><currency>BRL</currency><value>2212</value></price>
+ <price><currency>EUR</currency><value>828</value></price>
+ <price><currency>AUD</currency><value>993</value></price>
+ <price><currency>USD</currency><value>999.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="businessplus-annual">
+ <product>BusinessPlus</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>9090</value></price>
+ <price><currency>MXN</currency><value>169567</value></price>
+ <price><currency>BRL</currency><value>26544</value></price>
+ <price><currency>EUR</currency><value>9939</value></price>
+ <price><currency>AUD</currency><value>11919</value></price>
+ <price><currency>USD</currency><value>11999.40</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="corporatetier1-monthly">
+ <product>Corporate</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>2273</value></price>
+ <price><currency>MXN</currency><value>42394</value></price>
+ <price><currency>BRL</currency><value>6636</value></price>
+ <price><currency>EUR</currency><value>2485</value></price>
+ <price><currency>AUD</currency><value>2980</value></price>
+ <price><currency>USD</currency><value>3000</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="corporatetier1-annual">
+ <product>Corporate</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>27273</value></price>
+ <price><currency>MXN</currency><value>508727</value></price>
+ <price><currency>BRL</currency><value>79636</value></price>
+ <price><currency>EUR</currency><value>29818</value></price>
+ <price><currency>AUD</currency><value>35758</value></price>
+ <price><currency>USD</currency><value>36000</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="corporatetier2-monthly">
+ <product>Corporate</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>758</value></price>
+ <price><currency>MXN</currency><value>14131</value></price>
+ <price><currency>BRL</currency><value>2212</value></price>
+ <price><currency>EUR</currency><value>828</value></price>
+ <price><currency>AUD</currency><value>993</value></price>
+ <price><currency>USD</currency><value>1000</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="corporatetier2-annual">
+ <product>Corporate</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>9091</value></price>
+ <price><currency>MXN</currency><value>169576</value></price>
+ <price><currency>BRL</currency><value>26545</value></price>
+ <price><currency>EUR</currency><value>9939</value></price>
+ <price><currency>AUD</currency><value>11919</value></price>
+ <price><currency>USD</currency><value>12000</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="corporatetier3-monthly">
+ <product>Corporate</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>379</value></price>
+ <price><currency>MXN</currency><value>7066</value></price>
+ <price><currency>BRL</currency><value>1106</value></price>
+ <price><currency>EUR</currency><value>414</value></price>
+ <price><currency>AUD</currency><value>497</value></price>
+ <price><currency>USD</currency><value>500</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="corporatetier3-annual">
+ <product>Corporate</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>4545</value></price>
+ <price><currency>MXN</currency><value>84788</value></price>
+ <price><currency>BRL</currency><value>13273</value></price>
+ <price><currency>EUR</currency><value>4970</value></price>
+ <price><currency>AUD</currency><value>5960</value></price>
+ <price><currency>USD</currency><value>6000</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="demo-monthly">
+ <product>Demo</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="basic-monthly-comp-strategic">
+ <product>Basic</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>21.95</value></price>
+ <price><currency>MXN</currency><value>449</value></price>
+ <price><currency>BRL</currency><value>69.95</value></price>
+ <price><currency>EUR</currency><value>24.95</value></price>
+ <price><currency>AUD</currency><value>32.95</value></price>
+ <price><currency>USD</currency><value>29.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="performance-monthly-comp-strategic">
+ <product>Performance</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>419.40</value></price>
+ <price><currency>MXN</currency><value>8388</value></price>
+ <price><currency>BRL</currency><value>1319.40</value></price>
+ <price><currency>EUR</currency><value>239.40</value></price>
+ <price><currency>AUD</currency><value>599.40</value></price>
+ <price><currency>USD</currency><value>599.40</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="business-monthly-comp-strategic">
+ <product>Business</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>99.95</value></price>
+ <price><currency>MXN</currency><value>1799</value></price>
+ <price><currency>BRL</currency><value>279.95</value></price>
+ <price><currency>EUR</currency><value>99.95</value></price>
+ <price><currency>AUD</currency><value>129.95</value></price>
+ <price><currency>USD</currency><value>119.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="businessplus-monthly-comp-strategic">
+ <product>BusinessPlus</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>USD</currency><value>999.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="corporate-monthly-comp-internal">
+ <product>Corporate</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="corporate-monthly-comp-external">
+ <product>Corporate</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </finalPhase>
+ </plan>
+ <!-- Plans prior to Bedazzle -->
+ <plan name="brandedmusic-monthly">
+ <product>BrandedMusic</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>6.95</value></price>
+ <price><currency>MXN</currency><value>139</value></price>
+ <price><currency>BRL</currency><value>19</value></price>
+ <price><currency>EUR</currency><value>7.95</value></price>
+ <price><currency>AUD</currency><value>9.95</value></price>
+ <price><currency>USD</currency><value>9.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="brandedmusic-monthly-comp-strategic">
+ <product>BrandedMusic</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>6.95</value></price>
+ <price><currency>MXN</currency><value>139</value></price>
+ <price><currency>BRL</currency><value>19</value></price>
+ <price><currency>EUR</currency><value>7.95</value></price>
+ <price><currency>AUD</currency><value>9.95</value></price>
+ <price><currency>USD</currency><value>9.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="brandedmusic-monthly-comp-internal">
+ <product>BrandedMusic</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="brandedvideo-monthly">
+ <product>BrandedVideo</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>9.95</value></price>
+ <price><currency>MXN</currency><value>209</value></price>
+ <price><currency>BRL</currency><value>29</value></price>
+ <price><currency>EUR</currency><value>11.95</value></price>
+ <price><currency>AUD</currency><value>14.95</value></price>
+ <price><currency>USD</currency><value>14.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="brandedvideo-monthly-comp-strategic">
+ <product>BrandedVideo</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>9.95</value></price>
+ <price><currency>MXN</currency><value>209</value></price>
+ <price><currency>BRL</currency><value>29</value></price>
+ <price><currency>EUR</currency><value>11.95</value></price>
+ <price><currency>AUD</currency><value>14.95</value></price>
+ <price><currency>USD</currency><value>14.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="brandedvideo-monthly-comp-internal">
+ <product>BrandedVideo</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="events-monthly">
+ <product>Events</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>6.95</value></price>
+ <price><currency>MXN</currency><value>139</value></price>
+ <price><currency>BRL</currency><value>19</value></price>
+ <price><currency>EUR</currency><value>7.95</value></price>
+ <price><currency>AUD</currency><value>9.95</value></price>
+ <price><currency>USD</currency><value>9.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="events-monthly-comp-strategic">
+ <product>Events</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>6.95</value></price>
+ <price><currency>MXN</currency><value>139</value></price>
+ <price><currency>BRL</currency><value>19</value></price>
+ <price><currency>EUR</currency><value>7.95</value></price>
+ <price><currency>AUD</currency><value>9.95</value></price>
+ <price><currency>USD</currency><value>9.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="events-monthly-comp-internal">
+ <product>Events</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="groups-monthly">
+ <product>Groups</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>6.95</value></price>
+ <price><currency>MXN</currency><value>139</value></price>
+ <price><currency>BRL</currency><value>19</value></price>
+ <price><currency>EUR</currency><value>7.95</value></price>
+ <price><currency>AUD</currency><value>9.95</value></price>
+ <price><currency>USD</currency><value>9.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="groups-monthly-comp-internal">
+ <product>Groups</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="groups-monthly-comp-strategic">
+ <product>Groups</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>6.95</value></price>
+ <price><currency>MXN</currency><value>139</value></price>
+ <price><currency>BRL</currency><value>19</value></price>
+ <price><currency>EUR</currency><value>7.95</value></price>
+ <price><currency>AUD</currency><value>9.95</value></price>
+ <price><currency>USD</currency><value>9.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="paidaccess-monthly">
+ <product>PaidAccess</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>12.95</value></price>
+ <price><currency>MXN</currency><value>229</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>14.95</value></price>
+ <price><currency>AUD</currency><value>19.95</value></price>
+ <price><currency>USD</currency><value>19.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="paidaccess-monthly-comp-strategic">
+ <product>PaidAccess</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>0</value></price>
+ <price><currency>MXN</currency><value>0</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>0</value></price>
+ <price><currency>AUD</currency><value>0</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>12.95</value></price>
+ <price><currency>MXN</currency><value>229</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>14.95</value></price>
+ <price><currency>AUD</currency><value>19.95</value></price>
+ <price><currency>USD</currency><value>19.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="paidaccess-monthly-comp-external">
+ <product>PaidAccess</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>0</value></price>
+ <price><currency>MXN</currency><value>0</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>0</value></price>
+ <price><currency>AUD</currency><value>0</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="legacy-ads-comp">
+ <product>Ads</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="legacy-ads">
+ <product>Ads</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>24.95</value></price>
+ </recurringPrice>
+ <fixedPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </fixedPrice>
+ </finalPhase>
+ </plan>
+ <plan name="doitforme-onetime">
+ <product>DoItForMe</product>
+ <finalPhase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>1</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ <price><currency>GBP</currency><value>299.95</value></price>
+ <price><currency>MXN</currency><value>5899</value></price>
+ <price><currency>BRL</currency><value>829</value></price>
+ <price><currency>EUR</currency><value>359.95</value></price>
+ <price><currency>AUD</currency><value>499.95</value></price>
+ <price><currency>USD</currency><value>499.95</value></price>
+ </fixedPrice>
+ </finalPhase>
+ </plan>
+ <plan name="doitforme-onetime599">
+ <product>DoItForMe</product>
+ <finalPhase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>1</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ <price><currency>GBP</currency><value>369.95</value></price>
+ <price><currency>MXN</currency><value>7199</value></price>
+ <price><currency>BRL</currency><value>949</value></price>
+ <price><currency>EUR</currency><value>429.95</value></price>
+ <price><currency>AUD</currency><value>569.95</value></price>
+ <price><currency>USD</currency><value>599.95</value></price>
+ </fixedPrice>
+ </finalPhase>
+ </plan>
+ <plan name="doitforme-onetime799">
+ <product>DoItForMe</product>
+ <finalPhase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>1</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ <price><currency>GBP</currency><value>509.95</value></price>
+ <price><currency>MXN</currency><value>9799</value></price>
+ <price><currency>BRL</currency><value>1189</value></price>
+ <price><currency>EUR</currency><value>569.95</value></price>
+ <price><currency>AUD</currency><value>709.95</value></price>
+ <price><currency>USD</currency><value>799.95</value></price>
+ </fixedPrice>
+ </finalPhase>
+ </plan>
+ <plan name="doitforme-onetime699">
+ <product>DoItForMe</product>
+ <finalPhase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>1</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ <price><currency>GBP</currency><value>439.95</value></price>
+ <price><currency>MXN</currency><value>8499</value></price>
+ <price><currency>BRL</currency><value>1069</value></price>
+ <price><currency>EUR</currency><value>499.95</value></price>
+ <price><currency>AUD</currency><value>639.95</value></price>
+ <price><currency>USD</currency><value>699.95</value></price>
+ </fixedPrice>
+ </finalPhase>
+ </plan>
+ <plan name="doitforme-onetime-fullprice">
+ <product>DoItForMe</product>
+ <finalPhase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>1</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ <price><currency>GBP</currency><value>649.95</value></price>
+ <price><currency>MXN</currency><value>12999</value></price>
+ <price><currency>BRL</currency><value>1999</value></price>
+ <price><currency>EUR</currency><value>799.95</value></price>
+ <price><currency>AUD</currency><value>999.95</value></price>
+ <price><currency>USD</currency><value>999.95</value></price>
+ </fixedPrice>
+ </finalPhase>
+ </plan>
+ <plan name="domain-monthly-comp">
+ <product>Domain</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="domain-monthly">
+ <product>Domain</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>4.95</value></price>
+ </recurringPrice>
+ <fixedPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </fixedPrice>
+ </finalPhase>
+ </plan>
+ <plan name="mini-annual-early-discount">
+ <product>Mini</product>
+ <initialPhases>
+ <phase type="DISCOUNT">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>19.95</value></price>
+ <price><currency>MXN</currency><value>399</value></price>
+ <price><currency>BRL</currency><value>59</value></price>
+ <price><currency>EUR</currency><value>9.95</value></price>
+ <price><currency>AUD</currency><value>29.95</value></price>
+ <price><currency>USD</currency><value>18.29</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>19.95</value></price>
+ <price><currency>MXN</currency><value>399</value></price>
+ <price><currency>BRL</currency><value>59</value></price>
+ <price><currency>EUR</currency><value>19.95</value></price>
+ <price><currency>AUD</currency><value>29.95</value></price>
+ <price><currency>USD</currency><value>19.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="mini-trialpay">
+ <product>Mini</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>2.95</value></price>
+ <price><currency>MXN</currency><value>49</value></price>
+ <price><currency>BRL</currency><value>9</value></price>
+ <price><currency>EUR</currency><value>2.95</value></price>
+ <price><currency>AUD</currency><value>3.95</value></price>
+ <price><currency>USD</currency><value>2.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="mini-cafepress">
+ <product>Mini</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>2.95</value></price>
+ <price><currency>MXN</currency><value>49</value></price>
+ <price><currency>BRL</currency><value>9</value></price>
+ <price><currency>EUR</currency><value>2.95</value></price>
+ <price><currency>AUD</currency><value>3.95</value></price>
+ <price><currency>USD</currency><value>2.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="mini-pearson">
+ <product>Mini</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>36</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>2.95</value></price>
+ <price><currency>MXN</currency><value>49</value></price>
+ <price><currency>BRL</currency><value>9</value></price>
+ <price><currency>EUR</currency><value>2.95</value></price>
+ <price><currency>AUD</currency><value>3.95</value></price>
+ <price><currency>USD</currency><value>2.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="mini-monthly-comp-internal">
+ <product>Mini</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="mini-monthly-comp-strategic">
+ <product>Mini</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>2.95</value></price>
+ <price><currency>MXN</currency><value>49</value></price>
+ <price><currency>BRL</currency><value>9</value></price>
+ <price><currency>EUR</currency><value>2.95</value></price>
+ <price><currency>AUD</currency><value>3.95</value></price>
+ <price><currency>USD</currency><value>2.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="mini-monthly">
+ <product>Mini</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>2.95</value></price>
+ <price><currency>MXN</currency><value>49</value></price>
+ <price><currency>BRL</currency><value>9</value></price>
+ <price><currency>EUR</currency><value>2.95</value></price>
+ <price><currency>AUD</currency><value>3.95</value></price>
+ <price><currency>USD</currency><value>2.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="mini-monthly-notrial">
+ <product>Mini</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>2.95</value></price>
+ <price><currency>MXN</currency><value>49</value></price>
+ <price><currency>BRL</currency><value>9</value></price>
+ <price><currency>EUR</currency><value>2.95</value></price>
+ <price><currency>AUD</currency><value>3.95</value></price>
+ <price><currency>USD</currency><value>2.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="mini-annual">
+ <product>Mini</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>19.95</value></price>
+ <price><currency>MXN</currency><value>399</value></price>
+ <price><currency>BRL</currency><value>59</value></price>
+ <price><currency>EUR</currency><value>19.95</value></price>
+ <price><currency>AUD</currency><value>29.95</value></price>
+ <price><currency>USD</currency><value>19.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="mini-annual-notrial">
+ <product>Mini</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>19.95</value></price>
+ <price><currency>MXN</currency><value>399</value></price>
+ <price><currency>BRL</currency><value>59</value></price>
+ <price><currency>EUR</currency><value>19.95</value></price>
+ <price><currency>AUD</currency><value>29.95</value></price>
+ <price><currency>USD</currency><value>19.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="mini-monthly-locaweb">
+ <product>Mini</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>2.95</value></price>
+ <price><currency>MXN</currency><value>49</value></price>
+ <price><currency>BRL</currency><value>7</value></price>
+ <price><currency>EUR</currency><value>2.95</value></price>
+ <price><currency>AUD</currency><value>3.95</value></price>
+ <price><currency>USD</currency><value>2.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="mini-annual-locaweb">
+ <product>Mini</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>19.95</value></price>
+ <price><currency>MXN</currency><value>399</value></price>
+ <price><currency>BRL</currency><value>49</value></price>
+ <price><currency>EUR</currency><value>19.95</value></price>
+ <price><currency>AUD</currency><value>29.95</value></price>
+ <price><currency>USD</currency><value>19.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="legacy-partner-support-comp">
+ <product>PartnerSupport</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="legacy-partner-support">
+ <product>PartnerSupport</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>199.95</value></price>
+ <price><currency>MXN</currency><value>2975</value></price>
+ <price><currency>BRL</currency><value>399</value></price>
+ <price><currency>EUR</currency><value>199</value></price>
+ <price><currency>AUD</currency><value>250</value></price>
+ <price><currency>USD</currency><value>250</value></price>
+ </recurringPrice>
+ <fixedPrice>
+ <price><currency>GBP</currency><value>0</value></price>
+ <price><currency>MXN</currency><value>0</value></price>
+ <price><currency>BRL</currency><value>0</value></price>
+ <price><currency>EUR</currency><value>0</value></price>
+ <price><currency>AUD</currency><value>0</value></price>
+ <price><currency>USD</currency><value>-250</value></price>
+ </fixedPrice>
+ </finalPhase>
+ </plan>
+ <plan name="legacy-personal-support-comp">
+ <product>PersonalSupport</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="legacy-personal-support">
+ <product>PersonalSupport</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>10</value></price>
+ </recurringPrice>
+ <fixedPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </fixedPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-annual-early-discount">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="DISCOUNT">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>169.95</value></price>
+ <price><currency>MXN</currency><value>2299</value></price>
+ <price><currency>BRL</currency><value>399</value></price>
+ <price><currency>EUR</currency><value>149.95</value></price>
+ <price><currency>AUD</currency><value>249.95</value></price>
+ <price><currency>USD</currency><value>183.29</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>169.95</value></price>
+ <price><currency>MXN</currency><value>2299</value></price>
+ <price><currency>BRL</currency><value>399</value></price>
+ <price><currency>EUR</currency><value>149.95</value></price>
+ <price><currency>AUD</currency><value>249.95</value></price>
+ <price><currency>USD</currency><value>239.9</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-trialpay">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>3</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>16.95</value></price>
+ <price><currency>MXN</currency><value>229</value></price>
+ <price><currency>BRL</currency><value>39</value></price>
+ <price><currency>EUR</currency><value>14.95</value></price>
+ <price><currency>AUD</currency><value>24.95</value></price>
+ <price><currency>USD</currency><value>24.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-cafepress">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>16.95</value></price>
+ <price><currency>MXN</currency><value>229</value></price>
+ <price><currency>BRL</currency><value>39</value></price>
+ <price><currency>EUR</currency><value>14.95</value></price>
+ <price><currency>AUD</currency><value>24.95</value></price>
+ <price><currency>USD</currency><value>24.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-monthly-comp-internal">
+ <product>Plus</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-monthly-comp-strategic">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>16.95</value></price>
+ <price><currency>MXN</currency><value>229</value></price>
+ <price><currency>BRL</currency><value>39</value></price>
+ <price><currency>EUR</currency><value>14.95</value></price>
+ <price><currency>AUD</currency><value>24.95</value></price>
+ <price><currency>USD</currency><value>24.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-wego">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>16.95</value></price>
+ <price><currency>MXN</currency><value>229</value></price>
+ <price><currency>BRL</currency><value>39</value></price>
+ <price><currency>EUR</currency><value>14.95</value></price>
+ <price><currency>AUD</currency><value>24.95</value></price>
+ <price><currency>USD</currency><value>24.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-annual-discount">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="DISCOUNT">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>155</value></price>
+ <price><currency>MXN</currency><value>2099</value></price>
+ <price><currency>BRL</currency><value>369</value></price>
+ <price><currency>EUR</currency><value>137.5</value></price>
+ <price><currency>AUD</currency><value>229.95</value></price>
+ <price><currency>USD</currency><value>183.29</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>169.95</value></price>
+ <price><currency>MXN</currency><value>2299</value></price>
+ <price><currency>BRL</currency><value>399</value></price>
+ <price><currency>EUR</currency><value>149.95</value></price>
+ <price><currency>AUD</currency><value>249.95</value></price>
+ <price><currency>USD</currency><value>239.9</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-monthly-discount-bulk100">
+ <product>Plus</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>12.95</value></price>
+ <price><currency>MXN</currency><value>169</value></price>
+ <price><currency>BRL</currency><value>29</value></price>
+ <price><currency>EUR</currency><value>11.25</value></price>
+ <price><currency>AUD</currency><value>18.7</value></price>
+ <price><currency>USD</currency><value>18</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="starter-discount">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>169.95</value></price>
+ <price><currency>MXN</currency><value>49</value></price>
+ <price><currency>BRL</currency><value>399</value></price>
+ <price><currency>EUR</currency><value>149.5</value></price>
+ <price><currency>AUD</currency><value>249.95</value></price>
+ <price><currency>USD</currency><value>19.95</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>169.95</value></price>
+ <price><currency>MXN</currency><value>2299</value></price>
+ <price><currency>BRL</currency><value>399</value></price>
+ <price><currency>EUR</currency><value>149.95</value></price>
+ <price><currency>AUD</currency><value>249.95</value></price>
+ <price><currency>USD</currency><value>239.9</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-monthly">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>16.95</value></price>
+ <price><currency>MXN</currency><value>229</value></price>
+ <price><currency>BRL</currency><value>39</value></price>
+ <price><currency>EUR</currency><value>14.95</value></price>
+ <price><currency>AUD</currency><value>24.95</value></price>
+ <price><currency>USD</currency><value>24.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-monthly-notrial">
+ <product>Plus</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>16.95</value></price>
+ <price><currency>MXN</currency><value>229</value></price>
+ <price><currency>BRL</currency><value>39</value></price>
+ <price><currency>EUR</currency><value>14.95</value></price>
+ <price><currency>AUD</currency><value>24.95</value></price>
+ <price><currency>USD</currency><value>24.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-annual">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>169.95</value></price>
+ <price><currency>MXN</currency><value>2299</value></price>
+ <price><currency>BRL</currency><value>399</value></price>
+ <price><currency>EUR</currency><value>149.95</value></price>
+ <price><currency>AUD</currency><value>249.95</value></price>
+ <price><currency>USD</currency><value>239.9</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-annual-notrial">
+ <product>Plus</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>169.95</value></price>
+ <price><currency>MXN</currency><value>2299</value></price>
+ <price><currency>BRL</currency><value>399</value></price>
+ <price><currency>EUR</currency><value>149.95</value></price>
+ <price><currency>AUD</currency><value>249.95</value></price>
+ <price><currency>USD</currency><value>239.9</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-monthly-upgrade-promo">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>3</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>8.49</value></price>
+ <price><currency>MXN</currency><value>114.5</value></price>
+ <price><currency>BRL</currency><value>19.5</value></price>
+ <price><currency>EUR</currency><value>7.5</value></price>
+ <price><currency>AUD</currency><value>12.49</value></price>
+ <price><currency>USD</currency><value>12.45</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>16.95</value></price>
+ <price><currency>MXN</currency><value>229</value></price>
+ <price><currency>BRL</currency><value>39</value></price>
+ <price><currency>EUR</currency><value>14.95</value></price>
+ <price><currency>AUD</currency><value>24.95</value></price>
+ <price><currency>USD</currency><value>24.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-annual-upgrade-promo">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>149.95</value></price>
+ <price><currency>MXN</currency><value>2099</value></price>
+ <price><currency>BRL</currency><value>369</value></price>
+ <price><currency>EUR</currency><value>137.95</value></price>
+ <price><currency>AUD</currency><value>229.95</value></price>
+ <price><currency>USD</currency><value>219.95</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>169.95</value></price>
+ <price><currency>MXN</currency><value>2299</value></price>
+ <price><currency>BRL</currency><value>399</value></price>
+ <price><currency>EUR</currency><value>149.95</value></price>
+ <price><currency>AUD</currency><value>249.95</value></price>
+ <price><currency>USD</currency><value>239.9</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-annual-domain-included">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>169.95</value></price>
+ <price><currency>MXN</currency><value>2299</value></price>
+ <price><currency>BRL</currency><value>399</value></price>
+ <price><currency>EUR</currency><value>149.95</value></price>
+ <price><currency>AUD</currency><value>249.95</value></price>
+ <price><currency>USD</currency><value>239.95</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>189.9</value></price>
+ <price><currency>MXN</currency><value>2598</value></price>
+ <price><currency>BRL</currency><value>440</value></price>
+ <price><currency>EUR</currency><value>169.9</value></price>
+ <price><currency>AUD</currency><value>274.9</value></price>
+ <price><currency>USD</currency><value>264.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-annual-locaweb">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>169.95</value></price>
+ <price><currency>MXN</currency><value>2299</value></price>
+ <price><currency>BRL</currency><value>319</value></price>
+ <price><currency>EUR</currency><value>149.95</value></price>
+ <price><currency>AUD</currency><value>249.95</value></price>
+ <price><currency>USD</currency><value>199.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-monthly-locaweb">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>16.95</value></price>
+ <price><currency>MXN</currency><value>229</value></price>
+ <price><currency>BRL</currency><value>31</value></price>
+ <price><currency>EUR</currency><value>14.95</value></price>
+ <price><currency>AUD</currency><value>24.95</value></price>
+ <price><currency>USD</currency><value>19.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-annual-rescue-expensive">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="DISCOUNT">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>149.95</value></price>
+ <price><currency>MXN</currency><value>2099</value></price>
+ <price><currency>BRL</currency><value>369</value></price>
+ <price><currency>EUR</currency><value>137.95</value></price>
+ <price><currency>AUD</currency><value>229.95</value></price>
+ <price><currency>USD</currency><value>219.95</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>169.95</value></price>
+ <price><currency>MXN</currency><value>2299</value></price>
+ <price><currency>BRL</currency><value>399</value></price>
+ <price><currency>EUR</currency><value>149.95</value></price>
+ <price><currency>AUD</currency><value>249.95</value></price>
+ <price><currency>USD</currency><value>239.9</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="plus-annual-rescue-cheap">
+ <product>Plus</product>
+ <initialPhases>
+ <phase type="DISCOUNT">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>139.95</value></price>
+ <price><currency>MXN</currency><value>1919</value></price>
+ <price><currency>BRL</currency><value>333</value></price>
+ <price><currency>EUR</currency><value>124.95</value></price>
+ <price><currency>AUD</currency><value>209.95</value></price>
+ <price><currency>USD</currency><value>199.95</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>169.95</value></price>
+ <price><currency>MXN</currency><value>2299</value></price>
+ <price><currency>BRL</currency><value>399</value></price>
+ <price><currency>EUR</currency><value>149.95</value></price>
+ <price><currency>AUD</currency><value>249.95</value></price>
+ <price><currency>USD</currency><value>239.9</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="prepaid-credit-check">
+ <product>PrepaidCredit</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>0</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </fixedPrice>
+ </finalPhase>
+ </plan>
+ <plan name="prepaid-credit-wiretransfer">
+ <product>PrepaidCredit</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>0</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </fixedPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-annual-early-discount">
+ <product>Pro</product>
+ <initialPhases>
+ <phase type="DISCOUNT">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>399.95</value></price>
+ <price><currency>MXN</currency><value>5499</value></price>
+ <price><currency>BRL</currency><value>999</value></price>
+ <price><currency>EUR</currency><value>349.95</value></price>
+ <price><currency>AUD</currency><value>599.95</value></price>
+ <price><currency>USD</currency><value>458.29</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>399.95</value></price>
+ <price><currency>MXN</currency><value>5499</value></price>
+ <price><currency>BRL</currency><value>999</value></price>
+ <price><currency>EUR</currency><value>349.95</value></price>
+ <price><currency>AUD</currency><value>599.95</value></price>
+ <price><currency>USD</currency><value>599.9</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-monthly-comp-internal">
+ <product>Pro</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-monthly-comp-strategic">
+ <product>Pro</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>39.95</value></price>
+ <price><currency>MXN</currency><value>549</value></price>
+ <price><currency>BRL</currency><value>99</value></price>
+ <price><currency>EUR</currency><value>34.95</value></price>
+ <price><currency>AUD</currency><value>59.95</value></price>
+ <price><currency>USD</currency><value>59.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-annual-discount">
+ <product>Pro</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>359.95</value></price>
+ <price><currency>MXN</currency><value>5099</value></price>
+ <price><currency>BRL</currency><value>915</value></price>
+ <price><currency>EUR</currency><value>320.95</value></price>
+ <price><currency>AUD</currency><value>549.95</value></price>
+ <price><currency>USD</currency><value>458.29</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>399.95</value></price>
+ <price><currency>MXN</currency><value>5499</value></price>
+ <price><currency>BRL</currency><value>999</value></price>
+ <price><currency>EUR</currency><value>349.95</value></price>
+ <price><currency>AUD</currency><value>599.95</value></price>
+ <price><currency>USD</currency><value>599.9</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-monthly">
+ <product>Pro</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>39.95</value></price>
+ <price><currency>MXN</currency><value>549</value></price>
+ <price><currency>BRL</currency><value>99</value></price>
+ <price><currency>EUR</currency><value>34.95</value></price>
+ <price><currency>AUD</currency><value>59.95</value></price>
+ <price><currency>USD</currency><value>59.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-monthly-notrial">
+ <product>Pro</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>39.95</value></price>
+ <price><currency>MXN</currency><value>549</value></price>
+ <price><currency>BRL</currency><value>99</value></price>
+ <price><currency>EUR</currency><value>34.95</value></price>
+ <price><currency>AUD</currency><value>59.95</value></price>
+ <price><currency>USD</currency><value>59.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-annual">
+ <product>Pro</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>399.95</value></price>
+ <price><currency>MXN</currency><value>5499</value></price>
+ <price><currency>BRL</currency><value>999</value></price>
+ <price><currency>EUR</currency><value>349.95</value></price>
+ <price><currency>AUD</currency><value>599.95</value></price>
+ <price><currency>USD</currency><value>599.9</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-annual-notrial">
+ <product>Pro</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>399.95</value></price>
+ <price><currency>MXN</currency><value>5499</value></price>
+ <price><currency>BRL</currency><value>999</value></price>
+ <price><currency>EUR</currency><value>349.95</value></price>
+ <price><currency>AUD</currency><value>599.95</value></price>
+ <price><currency>USD</currency><value>599.9</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-monthly-upgrade-promo">
+ <product>Pro</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>3</number>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>19.95</value></price>
+ <price><currency>MXN</currency><value>274.5</value></price>
+ <price><currency>BRL</currency><value>49.5</value></price>
+ <price><currency>EUR</currency><value>17.5</value></price>
+ <price><currency>AUD</currency><value>29.95</value></price>
+ <price><currency>USD</currency><value>29.95</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>39.95</value></price>
+ <price><currency>MXN</currency><value>549</value></price>
+ <price><currency>BRL</currency><value>99</value></price>
+ <price><currency>EUR</currency><value>34.95</value></price>
+ <price><currency>AUD</currency><value>59.95</value></price>
+ <price><currency>USD</currency><value>59.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-annual-upgrade-promo">
+ <product>Pro</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>359.95</value></price>
+ <price><currency>MXN</currency><value>5099</value></price>
+ <price><currency>BRL</currency><value>915</value></price>
+ <price><currency>EUR</currency><value>320.95</value></price>
+ <price><currency>AUD</currency><value>549.95</value></price>
+ <price><currency>USD</currency><value>549.95</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>399.95</value></price>
+ <price><currency>MXN</currency><value>5499</value></price>
+ <price><currency>BRL</currency><value>999</value></price>
+ <price><currency>EUR</currency><value>349.95</value></price>
+ <price><currency>AUD</currency><value>599.95</value></price>
+ <price><currency>USD</currency><value>599.9</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-annual-domain-included">
+ <product>Pro</product>
+ <initialPhases>
+ <phase type="FIXEDTERM">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>399.95</value></price>
+ <price><currency>MXN</currency><value>5499</value></price>
+ <price><currency>BRL</currency><value>999</value></price>
+ <price><currency>EUR</currency><value>349.95</value></price>
+ <price><currency>AUD</currency><value>599.95</value></price>
+ <price><currency>USD</currency><value>599.95</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>419.9</value></price>
+ <price><currency>MXN</currency><value>5798</value></price>
+ <price><currency>BRL</currency><value>1040</value></price>
+ <price><currency>EUR</currency><value>369.9</value></price>
+ <price><currency>AUD</currency><value>624.9</value></price>
+ <price><currency>USD</currency><value>624.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-annual-dev-discount">
+ <product>Pro</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>199.95</value></price>
+ <price><currency>MXN</currency><value>2749.5</value></price>
+ <price><currency>BRL</currency><value>499</value></price>
+ <price><currency>EUR</currency><value>174.95</value></price>
+ <price><currency>AUD</currency><value>299.95</value></price>
+ <price><currency>USD</currency><value>100</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-monthly-locaweb">
+ <product>Pro</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>39.95</value></price>
+ <price><currency>MXN</currency><value>549</value></price>
+ <price><currency>BRL</currency><value>79</value></price>
+ <price><currency>EUR</currency><value>34.95</value></price>
+ <price><currency>AUD</currency><value>59.95</value></price>
+ <price><currency>USD</currency><value>49.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-annual-rescue-cheap">
+ <product>Pro</product>
+ <initialPhases>
+ <phase type="DISCOUNT">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>329.95</value></price>
+ <price><currency>MXN</currency><value>4599</value></price>
+ <price><currency>BRL</currency><value>833</value></price>
+ <price><currency>EUR</currency><value>289.95</value></price>
+ <price><currency>AUD</currency><value>499.95</value></price>
+ <price><currency>USD</currency><value>499.95</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>399.95</value></price>
+ <price><currency>MXN</currency><value>5499</value></price>
+ <price><currency>BRL</currency><value>999</value></price>
+ <price><currency>EUR</currency><value>349.95</value></price>
+ <price><currency>AUD</currency><value>599.95</value></price>
+ <price><currency>USD</currency><value>599.9</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-monthly-comp-external">
+ <product>Pro</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-annual-locaweb">
+ <product>Pro</product>
+ <initialPhases>
+ <phase type="TRIAL">
+ <duration>
+ <unit>DAYS</unit>
+ <number>30</number>
+ </duration>
+ <billingPeriod>NO_BILLING_PERIOD</billingPeriod>
+ <fixedPrice></fixedPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>399.95</value></price>
+ <price><currency>MXN</currency><value>5499</value></price>
+ <price><currency>BRL</currency><value>799</value></price>
+ <price><currency>EUR</currency><value>349.95</value></price>
+ <price><currency>AUD</currency><value>599.95</value></price>
+ <price><currency>USD</currency><value>499.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="pro-annual-rescue-expensive">
+ <product>Pro</product>
+ <initialPhases>
+ <phase type="DISCOUNT">
+ <duration>
+ <unit>MONTHS</unit>
+ <number>12</number>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>359.95</value></price>
+ <price><currency>MXN</currency><value>5099</value></price>
+ <price><currency>BRL</currency><value>915</value></price>
+ <price><currency>EUR</currency><value>320.95</value></price>
+ <price><currency>AUD</currency><value>549.95</value></price>
+ <price><currency>USD</currency><value>549.95</value></price>
+ </recurringPrice>
+ </phase>
+ </initialPhases>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>399.95</value></price>
+ <price><currency>MXN</currency><value>5499</value></price>
+ <price><currency>BRL</currency><value>999</value></price>
+ <price><currency>EUR</currency><value>349.95</value></price>
+ <price><currency>AUD</currency><value>599.95</value></price>
+ <price><currency>USD</currency><value>599.9</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="legacy-professional-support">
+ <product>ProfessionalSupport</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="legacy-professional-support-comp">
+ <product>ProfessionalSupport</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>100</value></price>
+ </recurringPrice>
+ <fixedPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </fixedPrice>
+ </finalPhase>
+ </plan>
+ <plan name="legacy-remove-links-comp">
+ <product>RemoveLinks</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="legacy-remove-links">
+ <product>RemoveLinks</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>24.95</value></price>
+ </recurringPrice>
+ <fixedPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </fixedPrice>
+ </finalPhase>
+ </plan>
+ <plan name="domain-only">
+ <product>DomainNameAddOn</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>19.95</value></price>
+ <price><currency>MXN</currency><value>299</value></price>
+ <price><currency>BRL</currency><value>41</value></price>
+ <price><currency>EUR</currency><value>19.95</value></price>
+ <price><currency>AUD</currency><value>24.95</value></price>
+ <price><currency>USD</currency><value>24.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="domain-idprotect">
+ <product>DomainNameAddOn</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>29.95</value></price>
+ <price><currency>MXN</currency><value>399</value></price>
+ <price><currency>BRL</currency><value>59</value></price>
+ <price><currency>EUR</currency><value>24.95</value></price>
+ <price><currency>AUD</currency><value>34.95</value></price>
+ <price><currency>USD</currency><value>34.95</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="domain-only-comp">
+ <product>DomainNameAddOn</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="domain-idprotect-comp">
+ <product>DomainNameAddOn</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>ANNUAL</billingPeriod>
+ <recurringPrice></recurringPrice>
+ </finalPhase>
+ </plan>
+ <plan name="legacy-storage-bandwidth">
+ <product>StorageBandwidth</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>9.95</value></price>
+ </recurringPrice>
+ <fixedPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </fixedPrice>
+ </finalPhase>
+ </plan>
+ <plan name="legacy-storage-bandwidth-comp">
+ <product>StorageBandwidth</product>
+ <finalPhase type="EVERGREEN">
+ <duration>
+ <unit>UNLIMITED</unit>
+ </duration>
+ <billingPeriod>MONTHLY</billingPeriod>
+ <recurringPrice>
+ <price><currency>GBP</currency><value>-1</value></price>
+ <price><currency>MXN</currency><value>-1</value></price>
+ <price><currency>BRL</currency><value>-1</value></price>
+ <price><currency>EUR</currency><value>-1</value></price>
+ <price><currency>AUD</currency><value>-1</value></price>
+ <price><currency>USD</currency><value>0</value></price>
+ </recurringPrice>
+ </finalPhase>
+ </plan>
+ </plans>
+
+ <priceLists>
+ <defaultPriceList name="DEFAULT">
+ <plans>
+ <plan>basic-monthly</plan>
+ <plan>basic-annual</plan>
+ <plan>performance-monthly</plan>
+ <plan>performance-annual</plan>
+ <plan>business-monthly</plan>
+ <plan>business-annual</plan>
+ <plan>businessplus-monthly</plan>
+ <plan>businessplus-annual</plan>
+ <plan>corporatetier1-monthly</plan>
+ <plan>corporatetier1-annual</plan>
+ <plan>demo-monthly</plan>
+ <plan>brandedmusic-monthly</plan>
+ <plan>brandedvideo-monthly</plan>
+ <plan>events-monthly</plan>
+ <plan>groups-monthly</plan>
+ <plan>paidaccess-monthly</plan>
+ <plan>legacy-ads</plan>
+ <plan>domain-monthly</plan>
+ <plan>mini-monthly</plan>
+ <plan>mini-annual</plan>
+ <plan>plus-monthly</plan>
+ <plan>plus-annual</plan>
+ <plan>pro-monthly</plan>
+ <plan>pro-annual</plan>
+ </plans>
+ </defaultPriceList>
+ <childPriceList name="standard-notrial">
+ <plans>
+ <plan>basic-monthly-notrial</plan>
+ <plan>basic-annual-notrial</plan>
+ <plan>performance-monthly-notrial</plan>
+ <plan>performance-annual-notrial</plan>
+ <plan>business-monthly-notrial</plan>
+ <plan>business-annual-notrial</plan>
+ <plan>mini-monthly-notrial</plan>
+ <plan>mini-annual-notrial</plan>
+ <plan>plus-monthly-notrial</plan>
+ <plan>plus-annual-notrial</plan>
+ <plan>pro-monthly-notrial</plan>
+ <plan>pro-annual-notrial</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="corporatetier2">
+ <plans>
+ <plan>corporatetier2-monthly</plan>
+ <plan>corporatetier2-annual</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="corporatetier3">
+ <plans>
+ <plan>corporatetier3-monthly</plan>
+ <plan>corporatetier3-annual</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="standard-comp-strategic">
+ <plans>
+ <plan>basic-monthly-comp-strategic</plan>
+ <plan>performance-monthly-comp-strategic</plan>
+ <plan>business-monthly-comp-strategic</plan>
+ <plan>businessplus-monthly-comp-strategic</plan>
+ <plan>brandedmusic-monthly-comp-strategic</plan>
+ <plan>brandedvideo-monthly-comp-strategic</plan>
+ <plan>events-monthly-comp-strategic</plan>
+ <plan>groups-monthly-comp-strategic</plan>
+ <plan>paidaccess-monthly-comp-strategic</plan>
+ <plan>domain-monthly-comp</plan>
+ <plan>mini-monthly-comp-strategic</plan>
+ <plan>plus-monthly-comp-strategic</plan>
+ <plan>pro-monthly-comp-strategic</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="standard-comp-internal">
+ <plans>
+ <plan>corporate-monthly-comp-internal</plan>
+ <plan>brandedmusic-monthly-comp-internal</plan>
+ <plan>brandedvideo-monthly-comp-internal</plan>
+ <plan>events-monthly-comp-internal</plan>
+ <plan>groups-monthly-comp-internal</plan>
+ <plan>mini-monthly-comp-internal</plan>
+ <plan>plus-monthly-comp-internal</plan>
+ <plan>pro-monthly-comp-internal</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="standard-comp-external">
+ <plans>
+ <plan>corporate-monthly-comp-external</plan>
+ <plan>paidaccess-monthly-comp-external</plan>
+ <plan>pro-monthly-comp-external</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="legacy-ads-comp-pricelist">
+ <plans>
+ <plan>legacy-ads-comp</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="doitforme-onetime-pricelist">
+ <plans>
+ <plan>doitforme-onetime</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="doitforme-onetime599-pricelist">
+ <plans>
+ <plan>doitforme-onetime599</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="doitforme-onetime799-pricelist">
+ <plans>
+ <plan>doitforme-onetime799</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="doitforme-onetime699-pricelist">
+ <plans>
+ <plan>doitforme-onetime699</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="doitforme-onetime-fullprice-pricelist">
+ <plans>
+ <plan>doitforme-onetime-fullprice</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="earlydiscount">
+ <plans>
+ <plan>mini-annual-early-discount</plan>
+ <plan>plus-annual-early-discount</plan>
+ <plan>pro-annual-early-discount</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="trialpay">
+ <plans>
+ <plan>mini-trialpay</plan>
+ <plan>plus-trialpay</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="cafepress">
+ <plans>
+ <plan>mini-cafepress</plan>
+ <plan>plus-cafepress</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="pearson">
+ <plans>
+ <plan>mini-pearson</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="locaweb">
+ <plans>
+ <plan>mini-monthly-locaweb</plan>
+ <plan>mini-annual-locaweb</plan>
+ <plan>plus-annual-locaweb</plan>
+ <plan>plus-monthly-locaweb</plan>
+ <plan>pro-monthly-locaweb</plan>
+ <plan>pro-annual-locaweb</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="legacy-partner-support-comp-pricelist">
+ <plans>
+ <plan>legacy-partner-support-comp</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="legacy-partner-support-pricelist">
+ <plans>
+ <plan>legacy-partner-support</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="legacy-personal-support-comp-pricelist">
+ <plans>
+ <plan>legacy-personal-support-comp</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="legacy-personal-support-pricelist">
+ <plans>
+ <plan>legacy-personal-support</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="wego">
+ <plans>
+ <plan>plus-wego</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="plus-annual-discount-pricelist">
+ <plans>
+ <plan>plus-annual-discount</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="bulk100">
+ <plans>
+ <plan>plus-monthly-discount-bulk100</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="starter-discount-pricelist">
+ <plans>
+ <plan>starter-discount</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="upgradepromo">
+ <plans>
+ <plan>plus-monthly-upgrade-promo</plan>
+ <plan>plus-annual-upgrade-promo</plan>
+ <plan>pro-monthly-upgrade-promo</plan>
+ <plan>pro-annual-upgrade-promo</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="domainincluded">
+ <plans>
+ <plan>plus-annual-domain-included</plan>
+ <plan>pro-annual-domain-included</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="rescue-expensive">
+ <plans>
+ <plan>plus-annual-rescue-expensive</plan>
+ <plan>pro-annual-rescue-expensive</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="rescue-cheap">
+ <plans>
+ <plan>plus-annual-rescue-cheap</plan>
+ <plan>pro-annual-rescue-cheap</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="prepaid-credit-check-pricelist">
+ <plans>
+ <plan>prepaid-credit-check</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="prepaid-credit-wiretransfer-pricelist">
+ <plans>
+ <plan>prepaid-credit-wiretransfer</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="pro-annual-discount-pricelist">
+ <plans>
+ <plan>pro-annual-discount</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="pro-annual-dev-discount-pricelist">
+ <plans>
+ <plan>pro-annual-dev-discount</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="legacy-professional-support-pricelist">
+ <plans>
+ <plan>legacy-professional-support</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="legacy-professional-support-comp-pricelist">
+ <plans>
+ <plan>legacy-professional-support-comp</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="legacy-remove-links-comp-pricelist">
+ <plans>
+ <plan>legacy-remove-links-comp</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="legacy-remove-links-pricelist">
+ <plans>
+ <plan>legacy-remove-links</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="domain-only-pricelist">
+ <plans>
+ <plan>domain-only</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="domain-idprotect-pricelist">
+ <plans>
+ <plan>domain-idprotect</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="domain-only-comp-pricelist">
+ <plans>
+ <plan>domain-only-comp</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="domain-idprotect-comp-pricelist">
+ <plans>
+ <plan>domain-idprotect-comp</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="legacy-storage-bandwidth-pricelist">
+ <plans>
+ <plan>legacy-storage-bandwidth</plan>
+ </plans>
+ </childPriceList>
+ <childPriceList name="legacy-storage-bandwidth-comp-pricelist">
+ <plans>
+ <plan>legacy-storage-bandwidth-comp</plan>
+ </plans>
+ </childPriceList>
+ </priceLists>
+
+</catalog>
diff --git a/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java b/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java
index 5c0542e..385745d 100644
--- a/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java
+++ b/server/src/test/java/com/ning/billing/jaxrs/TestAccount.java
@@ -38,6 +38,7 @@ import com.ning.billing.jaxrs.json.RefundJson;
import com.ning.billing.jaxrs.json.TagJson;
import com.ning.billing.jaxrs.resources.JaxrsResource;
import com.ning.billing.util.api.AuditLevel;
+import com.ning.billing.util.customfield.dao.CustomFieldDao;
import com.ning.http.client.Response;
import com.fasterxml.jackson.core.type.TypeReference;
@@ -306,7 +307,7 @@ public class TestAccount extends TestJaxrsBase {
customFields.add(new CustomFieldJson("1", "value1", null));
customFields.add(new CustomFieldJson("2", "value2", null));
customFields.add(new CustomFieldJson("3", "value3", null));
- final String baseJson = mapper.writeValueAsString(customFields);
+ String baseJson = mapper.writeValueAsString(customFields);
final String uri = JaxrsResource.ACCOUNTS_PATH + "/" + accountJson.getAccountId() + "/" + JaxrsResource.CUSTOM_FIELDS;
Response response = doPost(uri, baseJson, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
@@ -316,6 +317,17 @@ public class TestAccount extends TestJaxrsBase {
final String url = getUrlFromUri(uri);
response = doGetWithUrl(url, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
Assert.assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
+
+ // Delete all custom fields for account
+ response = doDelete(uri, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
+ assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
+
+ response = doGet(uri, DEFAULT_EMPTY_QUERY, DEFAULT_HTTP_TIMEOUT_SEC);
+ assertEquals(response.getStatusCode(), Status.OK.getStatusCode());
+ baseJson = response.getResponseBody();
+ final List<CustomFieldDao> remainingCustomFields = mapper.readValue(baseJson, new TypeReference<List<CustomFieldDao>>() {});
+ assertEquals(remainingCustomFields.size(), 0);
+
}
private void searchAccount(final AccountJson input, @Nullable final AccountJson output) throws Exception {
diff --git a/subscription/src/main/java/com/ning/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java b/subscription/src/main/java/com/ning/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java
index 25336b3..b19d8ed 100644
--- a/subscription/src/main/java/com/ning/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java
+++ b/subscription/src/main/java/com/ning/billing/subscription/api/svcs/DefaultSubscriptionInternalApi.java
@@ -339,6 +339,11 @@ public class DefaultSubscriptionInternalApi extends SubscriptionApiBase implemen
return result;
}
+ @Override
+ public void updateExternalKey(final UUID bundleId, final String newExternalKey, final InternalCallContext context) {
+ dao.updateBundleExternalKey(bundleId, newExternalKey, context);
+ }
+
private List<EffectiveSubscriptionInternalEvent> convertEffectiveSubscriptionInternalEventFromSubscriptionTransitions(final SubscriptionBase subscription,
final InternalTenantContext context, final List<SubscriptionBaseTransition> transitions) {
return ImmutableList.<EffectiveSubscriptionInternalEvent>copyOf(Collections2.transform(transitions, new Function<SubscriptionBaseTransition, EffectiveSubscriptionInternalEvent>() {
diff --git a/subscription/src/main/java/com/ning/billing/subscription/engine/dao/BundleSqlDao.java b/subscription/src/main/java/com/ning/billing/subscription/engine/dao/BundleSqlDao.java
index 1610b1b..5fce8b0 100644
--- a/subscription/src/main/java/com/ning/billing/subscription/engine/dao/BundleSqlDao.java
+++ b/subscription/src/main/java/com/ning/billing/subscription/engine/dao/BundleSqlDao.java
@@ -38,6 +38,12 @@ public interface BundleSqlDao extends EntitySqlDao<SubscriptionBundleModelDao, S
@SqlUpdate
@Audited(ChangeType.UPDATE)
+ public void updateBundleExternalKey(@Bind("id") String id,
+ @Bind("externalKey") String externalKey,
+ @BindBean final InternalCallContext context);
+
+ @SqlUpdate
+ @Audited(ChangeType.UPDATE)
public void updateBundleLastSysTime(@Bind("id") String id,
@Bind("lastSysUpdateDate") Date lastSysUpdate,
@BindBean final InternalCallContext context);
diff --git a/subscription/src/main/java/com/ning/billing/subscription/engine/dao/DefaultSubscriptionDao.java b/subscription/src/main/java/com/ning/billing/subscription/engine/dao/DefaultSubscriptionDao.java
index 07096eb..a183a12 100644
--- a/subscription/src/main/java/com/ning/billing/subscription/engine/dao/DefaultSubscriptionDao.java
+++ b/subscription/src/main/java/com/ning/billing/subscription/engine/dao/DefaultSubscriptionDao.java
@@ -966,6 +966,19 @@ public class DefaultSubscriptionDao implements SubscriptionDao {
});
}
+ @Override
+ public void updateBundleExternalKey(final UUID bundleId, final String externalKey, final InternalCallContext context) {
+ transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<Void>() {
+ @Override
+ public Void inTransaction(final EntitySqlDaoWrapperFactory<EntitySqlDao> entitySqlDaoWrapperFactory) throws Exception {
+
+ final BundleSqlDao bundleSqlDao = entitySqlDaoWrapperFactory.become(BundleSqlDao.class);
+ bundleSqlDao.updateBundleExternalKey(bundleId.toString(), externalKey, context);
+ return null;
+ }
+ });
+ }
+
private DefaultSubscriptionBase createSubscriptionForInternalUse(final SubscriptionBase shellSubscription, final List<SubscriptionBaseEvent> events) {
final DefaultSubscriptionBase result = new DefaultSubscriptionBase(new SubscriptionBuilder(((DefaultSubscriptionBase) shellSubscription)), null, clock);
if (events.size() > 0) {
diff --git a/subscription/src/main/java/com/ning/billing/subscription/engine/dao/RepairSubscriptionDao.java b/subscription/src/main/java/com/ning/billing/subscription/engine/dao/RepairSubscriptionDao.java
index fe12bc3..26f50cd 100644
--- a/subscription/src/main/java/com/ning/billing/subscription/engine/dao/RepairSubscriptionDao.java
+++ b/subscription/src/main/java/com/ning/billing/subscription/engine/dao/RepairSubscriptionDao.java
@@ -301,6 +301,11 @@ public class RepairSubscriptionDao implements SubscriptionDao, RepairSubscriptio
}
@Override
+ public void updateBundleExternalKey(final UUID bundleId, final String externalKey, final InternalCallContext context) {
+ throw new SubscriptionBaseError(NOT_IMPLEMENTED);
+ }
+
+ @Override
public List<SubscriptionBaseBundle> getSubscriptionBundlesForKey(final String bundleKey, final InternalTenantContext context) {
throw new SubscriptionBaseError(NOT_IMPLEMENTED);
}
diff --git a/subscription/src/main/java/com/ning/billing/subscription/engine/dao/SubscriptionDao.java b/subscription/src/main/java/com/ning/billing/subscription/engine/dao/SubscriptionDao.java
index 77229e4..3caa123 100644
--- a/subscription/src/main/java/com/ning/billing/subscription/engine/dao/SubscriptionDao.java
+++ b/subscription/src/main/java/com/ning/billing/subscription/engine/dao/SubscriptionDao.java
@@ -90,6 +90,8 @@ public interface SubscriptionDao {
public void transfer(UUID srcAccountId, UUID destAccountId, BundleMigrationData data, List<TransferCancelData> transferCancelData, InternalCallContext fromContext, InternalCallContext toContext);
+ public void updateBundleExternalKey(UUID bundleId, String externalKey, final InternalCallContext context);
+
// Repair
public void repair(UUID accountId, UUID bundleId, List<SubscriptionDataRepair> inRepair, InternalCallContext context);
}
diff --git a/subscription/src/main/resources/com/ning/billing/subscription/ddl.sql b/subscription/src/main/resources/com/ning/billing/subscription/ddl.sql
index 314fae5..1cc4b77 100644
--- a/subscription/src/main/resources/com/ning/billing/subscription/ddl.sql
+++ b/subscription/src/main/resources/com/ning/billing/subscription/ddl.sql
@@ -37,7 +37,6 @@ CREATE TABLE subscriptions (
bundle_start_date datetime NOT NULL,
active_version int(11) DEFAULT 1,
charged_through_date datetime DEFAULT NULL,
- paid_through_date datetime DEFAULT NULL,
created_by varchar(50) NOT NULL,
created_date datetime NOT NULL,
updated_by varchar(50) NOT NULL,
diff --git a/subscription/src/main/resources/com/ning/billing/subscription/engine/dao/BundleSqlDao.sql.stg b/subscription/src/main/resources/com/ning/billing/subscription/engine/dao/BundleSqlDao.sql.stg
index b026267..7238aee 100644
--- a/subscription/src/main/resources/com/ning/billing/subscription/engine/dao/BundleSqlDao.sql.stg
+++ b/subscription/src/main/resources/com/ning/billing/subscription/engine/dao/BundleSqlDao.sql.stg
@@ -36,6 +36,17 @@ where id = :id
;
>>
+updateBundleExternalKey() ::= <<
+update <tableName()>
+set
+external_key = :externalKey
+, updated_by = :createdBy
+, updated_date = :createdDate
+where id = :id
+<AND_CHECK_TENANT()>
+;
+>>
+
getBundlesForKey() ::= <<
select <allTableFields()>
from bundles
diff --git a/subscription/src/test/java/com/ning/billing/subscription/api/user/TestUserApiCreate.java b/subscription/src/test/java/com/ning/billing/subscription/api/user/TestUserApiCreate.java
index ebb176c..d4d3c0b 100644
--- a/subscription/src/test/java/com/ning/billing/subscription/api/user/TestUserApiCreate.java
+++ b/subscription/src/test/java/com/ning/billing/subscription/api/user/TestUserApiCreate.java
@@ -68,6 +68,12 @@ public class TestUserApiCreate extends SubscriptionTestSuiteWithEmbeddedDB {
testListener.pushExpectedEvents(NextEvent.CREATE, NextEvent.PHASE);
final DefaultSubscriptionBase newSubscription = (DefaultSubscriptionBase) subscriptionInternalApi.createSubscription(newBundle.getId(),
testUtil.getProductSpecifier(productName, planSetName, term, null), requestedDate, internalCallContext);
+
+ subscriptionInternalApi.updateExternalKey(newBundle.getId(), "myNewSuperKey", internalCallContext);
+
+ final SubscriptionBaseBundle bundleWithNewKey = subscriptionInternalApi.getBundleFromId(newBundle.getId(), internalCallContext);
+ assertEquals(bundleWithNewKey.getExternalKey(), "myNewSuperKey");
+
assertListenerStatus();
assertNotNull(newSubscription);
}
diff --git a/subscription/src/test/java/com/ning/billing/subscription/engine/dao/MockSubscriptionDaoMemory.java b/subscription/src/test/java/com/ning/billing/subscription/engine/dao/MockSubscriptionDaoMemory.java
index 4d23fd3..79f9e47 100644
--- a/subscription/src/test/java/com/ning/billing/subscription/engine/dao/MockSubscriptionDaoMemory.java
+++ b/subscription/src/test/java/com/ning/billing/subscription/engine/dao/MockSubscriptionDaoMemory.java
@@ -460,4 +460,8 @@ public class MockSubscriptionDaoMemory implements SubscriptionDao {
final List<TransferCancelData> transferCancelData, final InternalCallContext fromContext,
final InternalCallContext toContext) {
}
+
+ @Override
+ public void updateBundleExternalKey(final UUID bundleId, final String externalKey, final InternalCallContext context) {
+ }
}
diff --git a/util/src/main/java/com/ning/billing/util/customfield/api/DefaultCustomFieldUserApi.java b/util/src/main/java/com/ning/billing/util/customfield/api/DefaultCustomFieldUserApi.java
index 903659d..79f2ca2 100644
--- a/util/src/main/java/com/ning/billing/util/customfield/api/DefaultCustomFieldUserApi.java
+++ b/util/src/main/java/com/ning/billing/util/customfield/api/DefaultCustomFieldUserApi.java
@@ -83,14 +83,22 @@ public class DefaultCustomFieldUserApi implements CustomFieldUserApi {
}
@Override
- public void addCustomFields(final List<CustomField> fields, final CallContext context) throws CustomFieldApiException {
+ public void addCustomFields(final List<CustomField> customFields, final CallContext context) throws CustomFieldApiException {
// TODO make it transactional
- for (final CustomField cur : fields) {
+ for (final CustomField cur : customFields) {
customFieldDao.create(new CustomFieldModelDao(cur), internalCallContextFactory.createInternalCallContext(cur.getObjectId(), cur.getObjectType(), context));
}
}
@Override
+ public void removeCustomFields(final List<CustomField> customFields, final CallContext context) throws CustomFieldApiException {
+ // TODO make it transactional
+ for (final CustomField cur : customFields) {
+ customFieldDao.deleteCustomField(cur.getId(), internalCallContextFactory.createInternalCallContext(cur.getObjectId(), cur.getObjectType(), context));
+ }
+ }
+
+ @Override
public List<CustomField> getCustomFieldsForObject(final UUID objectId, final ObjectType objectType, final TenantContext context) {
return withCustomFieldsTransform(customFieldDao.getCustomFieldsForObject(objectId, objectType, internalCallContextFactory.createInternalTenantContext(context)));
}
diff --git a/util/src/main/java/com/ning/billing/util/customfield/dao/CustomFieldDao.java b/util/src/main/java/com/ning/billing/util/customfield/dao/CustomFieldDao.java
index 20e962f..66985bc 100644
--- a/util/src/main/java/com/ning/billing/util/customfield/dao/CustomFieldDao.java
+++ b/util/src/main/java/com/ning/billing/util/customfield/dao/CustomFieldDao.java
@@ -20,6 +20,7 @@ import java.util.List;
import java.util.UUID;
import com.ning.billing.ObjectType;
+import com.ning.billing.callcontext.InternalCallContext;
import com.ning.billing.callcontext.InternalTenantContext;
import com.ning.billing.util.api.CustomFieldApiException;
import com.ning.billing.util.customfield.CustomField;
@@ -36,4 +37,5 @@ public interface CustomFieldDao extends EntityDao<CustomFieldModelDao, CustomFie
public List<CustomFieldModelDao> getCustomFieldsForAccount(final InternalTenantContext context);
+ void deleteCustomField(UUID customFieldId, InternalCallContext context) throws CustomFieldApiException;
}
diff --git a/util/src/main/java/com/ning/billing/util/customfield/dao/CustomFieldModelDao.java b/util/src/main/java/com/ning/billing/util/customfield/dao/CustomFieldModelDao.java
index e3d4b1e..f943e52 100644
--- a/util/src/main/java/com/ning/billing/util/customfield/dao/CustomFieldModelDao.java
+++ b/util/src/main/java/com/ning/billing/util/customfield/dao/CustomFieldModelDao.java
@@ -32,6 +32,8 @@ public class CustomFieldModelDao extends EntityBase implements EntityModelDao<Cu
private String fieldValue;
private UUID objectId;
private ObjectType objectType;
+ private Boolean isActive;
+
public CustomFieldModelDao() { /* For the DAO mapper */ }
@@ -42,6 +44,7 @@ public class CustomFieldModelDao extends EntityBase implements EntityModelDao<Cu
this.fieldValue = fieldValue;
this.objectId = objectId;
this.objectType = objectType;
+ this.isActive = true;
}
public CustomFieldModelDao(final CustomField customField) {
@@ -81,6 +84,14 @@ public class CustomFieldModelDao extends EntityBase implements EntityModelDao<Cu
this.objectType = objectType;
}
+ public Boolean getIsActive() {
+ return isActive;
+ }
+
+ public void setIsActive(final Boolean isActive) {
+ this.isActive = isActive;
+ }
+
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
@@ -89,6 +100,7 @@ public class CustomFieldModelDao extends EntityBase implements EntityModelDao<Cu
sb.append(", fieldValue='").append(fieldValue).append('\'');
sb.append(", objectId=").append(objectId);
sb.append(", objectType=").append(objectType);
+ sb.append(", isActive=").append(isActive);
sb.append('}');
return sb.toString();
}
@@ -119,6 +131,9 @@ public class CustomFieldModelDao extends EntityBase implements EntityModelDao<Cu
if (objectType != that.objectType) {
return false;
}
+ if (isActive != null ? !isActive.equals(that.isActive) : that.isActive != null) {
+ return false;
+ }
return true;
}
@@ -130,6 +145,7 @@ public class CustomFieldModelDao extends EntityBase implements EntityModelDao<Cu
result = 31 * result + (fieldValue != null ? fieldValue.hashCode() : 0);
result = 31 * result + (objectId != null ? objectId.hashCode() : 0);
result = 31 * result + (objectType != null ? objectType.hashCode() : 0);
+ result = 31 * result + (isActive != null ? isActive.hashCode() : 0);
return result;
}
diff --git a/util/src/main/java/com/ning/billing/util/customfield/dao/CustomFieldSqlDao.java b/util/src/main/java/com/ning/billing/util/customfield/dao/CustomFieldSqlDao.java
index b54503c..1961d2b 100644
--- a/util/src/main/java/com/ning/billing/util/customfield/dao/CustomFieldSqlDao.java
+++ b/util/src/main/java/com/ning/billing/util/customfield/dao/CustomFieldSqlDao.java
@@ -23,18 +23,27 @@ import java.util.UUID;
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.BindBean;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
+import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.Define;
import org.skife.jdbi.v2.sqlobject.customizers.FetchSize;
import com.ning.billing.ObjectType;
+import com.ning.billing.callcontext.InternalCallContext;
import com.ning.billing.callcontext.InternalTenantContext;
+import com.ning.billing.util.audit.ChangeType;
import com.ning.billing.util.customfield.CustomField;
+import com.ning.billing.util.entity.dao.Audited;
import com.ning.billing.util.entity.dao.EntitySqlDao;
import com.ning.billing.util.entity.dao.EntitySqlDaoStringTemplate;
@EntitySqlDaoStringTemplate
public interface CustomFieldSqlDao extends EntitySqlDao<CustomFieldModelDao, CustomField> {
+ @SqlUpdate
+ @Audited(ChangeType.DELETE)
+ void markTagAsDeleted(@Bind("id") String customFieldId,
+ @BindBean InternalCallContext context);
+
@SqlQuery
List<CustomFieldModelDao> getCustomFieldsForObject(@Bind("objectId") UUID objectId,
@Bind("objectType") ObjectType objectType,
diff --git a/util/src/main/java/com/ning/billing/util/customfield/dao/DefaultCustomFieldDao.java b/util/src/main/java/com/ning/billing/util/customfield/dao/DefaultCustomFieldDao.java
index d3642a4..8eaf2a0 100644
--- a/util/src/main/java/com/ning/billing/util/customfield/dao/DefaultCustomFieldDao.java
+++ b/util/src/main/java/com/ning/billing/util/customfield/dao/DefaultCustomFieldDao.java
@@ -99,6 +99,18 @@ public class DefaultCustomFieldDao extends EntityDaoBase<CustomFieldModelDao, Cu
}
@Override
+ public void deleteCustomField(final UUID customFieldId, final InternalCallContext context) throws CustomFieldApiException {
+ transactionalSqlDao.execute(new EntitySqlDaoTransactionWrapper<Void>() {
+ @Override
+ public Void inTransaction(final EntitySqlDaoWrapperFactory<EntitySqlDao> entitySqlDaoWrapperFactory) throws Exception {
+ entitySqlDaoWrapperFactory.become(CustomFieldSqlDao.class).markTagAsDeleted(customFieldId.toString(), context);
+ return null;
+ }
+ });
+
+ }
+
+ @Override
protected CustomFieldApiException generateAlreadyExistsException(final CustomFieldModelDao entity, final InternalCallContext context) {
return new CustomFieldApiException(ErrorCode.CUSTOM_FIELD_ALREADY_EXISTS, entity.getId());
}
diff --git a/util/src/main/resources/com/ning/billing/util/customfield/dao/CustomFieldSqlDao.sql.stg b/util/src/main/resources/com/ning/billing/util/customfield/dao/CustomFieldSqlDao.sql.stg
index ee146da..0367199 100644
--- a/util/src/main/resources/com/ning/billing/util/customfield/dao/CustomFieldSqlDao.sql.stg
+++ b/util/src/main/resources/com/ning/billing/util/customfield/dao/CustomFieldSqlDao.sql.stg
@@ -1,10 +1,13 @@
group CustomFieldSqlDao: EntitySqlDao;
+andCheckSoftDeletionWithComma(prefix) ::= "and <prefix>is_active"
+
tableName() ::= "custom_fields"
tableFields(prefix) ::= <<
<prefix>object_id
, <prefix>object_type
+, <prefix>is_active
, <prefix>field_name
, <prefix>field_value
, <prefix>created_by
@@ -16,6 +19,7 @@ tableFields(prefix) ::= <<
tableValues() ::= <<
:objectId
, :objectType
+, :isActive
, :fieldName
, :fieldValue
, :createdBy
@@ -26,6 +30,14 @@ tableValues() ::= <<
historyTableName() ::= "custom_field_history"
+markTagAsDeleted() ::= <<
+update <tableName()> t
+set t.is_active = 0
+where <idField("t.")> = :id
+<AND_CHECK_TENANT("t.")>
+;
+>>
+
getCustomFieldsForObject() ::= <<
select
@@ -34,6 +46,7 @@ from <tableName()>
where
object_id = :objectId
and object_type = :objectType
+and is_active
<AND_CHECK_TENANT()>
<defaultOrderBy()>
;
diff --git a/util/src/main/resources/com/ning/billing/util/ddl.sql b/util/src/main/resources/com/ning/billing/util/ddl.sql
index 84e9491..6fcbf12 100644
--- a/util/src/main/resources/com/ning/billing/util/ddl.sql
+++ b/util/src/main/resources/com/ning/billing/util/ddl.sql
@@ -6,6 +6,7 @@ CREATE TABLE custom_fields (
id char(36) NOT NULL,
object_id char(36) NOT NULL,
object_type varchar(30) NOT NULL,
+ is_active bool DEFAULT true,
field_name varchar(30) NOT NULL,
field_value varchar(255),
created_by varchar(50) NOT NULL,
@@ -28,6 +29,7 @@ CREATE TABLE custom_field_history (
target_record_id int(11) unsigned NOT NULL,
object_id char(36) NOT NULL,
object_type varchar(30) NOT NULL,
+ is_active bool DEFAULT true,
field_name varchar(30),
field_value varchar(255),
change_type char(6) NOT NULL,
@@ -232,4 +234,4 @@ create table sessions (
, host varchar(100) default null
, session_data mediumblob default null
, primary key(record_id)
-) character set utf8 collate utf8_bin;
\ No newline at end of file
+) character set utf8 collate utf8_bin;
diff --git a/util/src/test/java/com/ning/billing/util/customfield/api/TestDefaultCustomFieldUserApi.java b/util/src/test/java/com/ning/billing/util/customfield/api/TestDefaultCustomFieldUserApi.java
index 7d11d99..5465917 100644
--- a/util/src/test/java/com/ning/billing/util/customfield/api/TestDefaultCustomFieldUserApi.java
+++ b/util/src/test/java/com/ning/billing/util/customfield/api/TestDefaultCustomFieldUserApi.java
@@ -72,5 +72,9 @@ public class TestDefaultCustomFieldUserApi extends UtilTestSuiteWithEmbeddedDB {
return null;
}
});
+
+ customFieldUserApi.removeCustomFields(customFields, callContext);
+ final List<CustomField> remainingCustomFields = customFieldUserApi.getCustomFieldsForObject(accountId, ObjectType.ACCOUNT, callContext);
+ Assert.assertEquals(remainingCustomFields.size(), 0);
}
}
diff --git a/util/src/test/java/com/ning/billing/util/customfield/dao/MockCustomFieldDao.java b/util/src/test/java/com/ning/billing/util/customfield/dao/MockCustomFieldDao.java
index fd0c414..42ccc73 100644
--- a/util/src/test/java/com/ning/billing/util/customfield/dao/MockCustomFieldDao.java
+++ b/util/src/test/java/com/ning/billing/util/customfield/dao/MockCustomFieldDao.java
@@ -21,6 +21,7 @@ import java.util.List;
import java.util.UUID;
import com.ning.billing.ObjectType;
+import com.ning.billing.callcontext.InternalCallContext;
import com.ning.billing.callcontext.InternalTenantContext;
import com.ning.billing.util.api.CustomFieldApiException;
import com.ning.billing.util.customfield.CustomField;
@@ -55,4 +56,9 @@ public class MockCustomFieldDao extends MockEntityDaoBase<CustomFieldModelDao, C
public Pagination<CustomFieldModelDao> searchCustomFields(final String searchKey, final Long offset, final Long limit, final InternalTenantContext context) {
throw new UnsupportedOperationException();
}
+
+ @Override
+ public void deleteCustomField(final UUID customFieldId, final InternalCallContext context) throws CustomFieldApiException {
+ throw new UnsupportedOperationException();
+ }
}