Overview
The 15.3 release was released 2015-03-16. The largest changes and focus areas were:
- Improved Openstack integration We improved both the package-based billing and usage-based billing scenarios for our Openstack integration. The usage-based invoice handler is now integrated with the generic workflow making it easier to configure. We now support charging for volumes, bandwidth and snapshots in addition to instance hours. The VPS manager has received a large number of new features and improvements.
- Beta version of new order page We have created a completely new order page using a new default theme. This new order page is much easier to customize, extend, and maintain than our previous order page. It is available for testing right away, but we will keep supporting the current order page for a number of releases. The new order page can be found at GitHub but you need to ask for access via support ticket.
- New System tab in the Admin Panel There is now a new tab in the Admin Panel called “System” that contains functionality for making the life of an administrator easier. The System tab lets you see what is currently running, what has run recently, and gives easy access to run logs for scheduled tasks. It also contains performance trends and other statistics plus a scripting facility.
- Configure more via the Admin Panel We added a new feature to manage shops directly in the Admin Panel. With this functionality you can for example start selling a new TLD without having to change your configuration. Instead you just add it to the shops where you want to sell it, right inside the Admin Panel. We also added a page for creating and configuring resellers.
- Features visible to end users Many of the existing features in the Hosting Control Panel have been improved to make for a better user experience. The support for prepaid credits has received some fixes and is working better than ever. In the new release you are also able to start offering PostgreSQL hosting.
- General quality improvements We continued to focus a large percentage of our resources on fixing any known problems and other general quality and performance improvements. The new release thus contains a large number of bug fixes.
Software versions
The 15.3 release consists of the software versions listed below. Please note that you should always use the latest version available at the stable package repository, to make sure you get the latest security and stability updates.
- Action Trail: 15.3.5535.28284
- Admin Panel: 15.3.5553.12733
- Automation Server: 15.3.5535.27192
- Automation Server Client: 15.3.5535.27261
- Customer Panel: 15.3.5550.17060
- Atomia Billing: 15.3.5553.18084
- Hosting Control Panel: 15.3.5553.13494
- Atomia Identity: 15.3.5535.27388
- Public Order Page: 15.3.5543.28069
- Cloud Hosting Pack: 15.3.5550.25895
- Atomia Domain Registration: 1.1.161
- Atomia DNS: 1.1.34
- Filesystem Agent: 14.9.4
- Apache Agent: 14.9.3
- DynDNS Agent: 15.3.2
- Awstats Agent: 1.1.30
Upgrade instructions
In the 15.3 release the default configurations of the GUI application is still to use the old XML definition of hosting products. If you want to switch to the new shop feature where shops are defined in Atomia Billing and configured through the Admin Panel, instructions for this can be found in the Atomia Billing manual.
Changes
The list of changes since the last stable release (14.9, released at 2014-09-15) include:
New functionality in the Openstack integration
The changelog for the Data Center Pack is available here.
New features
- Admin Panel: Support refunding to credits as part of refund flow in addition to when crediting invoice.
- Admin Panel: Added support for Shops management.
- Admin Panel: Added scripting feature with script console, local scripts and remote script archive.
- Admin Panel: Added page to create new and/or edit existing resellers.
- Admin Panel: Added a statistics page to the monitoring section.
- Admin Panel: Added page for showing running processes
- Admin Panel: Added page for showing scheduled task run log
- Admin Panel: Added page for showing scheduled task items
- Atomia Billing: Added support for Shops
- Atomia Billing: Added logging of scheduled task runs where each scheduled task run will generate an entry in the scheduled_task_run table.
- Automation Server: Expose LastChangeTime for ProvisioningServiceProperty objects.
- Automation Server: Added GetPackageAddingPossibilities API method.
- Automation Server: Added GetNumberOfServicesForPackage API method.
- Cloud Hosting Pack: Added PostgreSQL module.
- Cloud Hosting Pack: Uniqueness checking can now be optionally be done in account groups instead of globally.
- Customer Panel: Added support for shop feature
- Hosting Control Panel: Add support for automatic upgrade to Installatron integration.
- Hosting Control Panel: Added support for shop feature
- Public Order Page: Added support for shop feature
Fixes
- Admin Panel: Make sure that the expanded menu is on top of everything.
- Admin Panel: Shorten doc id in the payments view.
- Admin Panel: Updated Atomia.Common.dll to include Canary Islands country code.
- Admin Panel: Fix customer card balance calculation when user paid with credits.
- Admin Panel: Fixed decimal rounding bug when adding payments.
- Admin Panel: Removed the delete button from credit invoice previews.
- Admin Panel: Fixed usages of CustomerValidation attribute where ResellerId property is needed.
- Admin Panel: Added ProductsProvider dll and configuration since it is needed for validation plugin.
- Admin Panel: Removed usage of removed Subscription’s property RenewalPeriod.
- Admin Panel: Display date and time in the orders list.
- Admin Panel: Added order page url validation for add/editing of resellers.
- Admin Panel: Made it impossible to terminate a reseller with active customers.
- Admin Panel: Fixed customer filter in the subscription view.
- Admin Panel: Don’t update original invoice when a credited invoice is created.
- Admin Panel: Updated Atomia.Web.Base.dll that includes LargeJsonResult.
- Admin Panel: Removed the partial credit option from the customer card.
- Admin Panel: Made name of custom mail templates clearer in the GUI.
- Admin Panel: Allow binding a subscription to another customers invoice.
- Admin Panel: Change account id in subscriptions when changing reseller of a customer.
- Admin Panel: Let Billing set AccountId and CreatedByAccountId on credited invoices.
- Admin Panel: Fixed Cyprus and Ireland VAT number validation.
- Admin Panel: Fixed updating reseller root domain when moving an account to another reseller.
- Admin Panel: Fixed localized date validation in campaign editor.
- Admin Panel: Fixed setting campaing editor time to 24h clock.
- Admin Panel: Fixed changing default discount when locale uses comma as decimal point.
- Admin Panel: Fixed viewing campaign discounts with no required products.
- Atomia Billing: Fixed FilterSubscriptions to include bound to the package subscriptions when package is already renewed for the same period.
- Atomia Billing: Don’t autopay renewal invoices that where already paid with credit.
- Atomia Billing: Throw exception when using DowngradeInvoiceSubscriptionsCustomAction without downgrade path configured.
- Atomia Billing: Fixed PrintInvoiceReminderHandler to process invoices even if customer doesn’t have billing email since it is not needed.
- Atomia Billing: Fixed Email and SMS invoice reminder handlers to add notification event if email/SMS is not sent since task is marked as finished and notification is often needed for scheduling next reminder.
- Atomia Billing: Fixed FilterSubscriptions to include/exclude bound to the package subscriptions based on PackageGroupId not main subscription. Also, it’ll leave bound to the package subscriptions for renewal if package is not recurring.
- Atomia Billing: Fixed invoice aggregation to increase invoice.Total for every subscription because invoice creation was skipped if first invoice had total = 0.
- Atomia Billing: Fixed Adyen payment plugin to check for recurring details existence before deleting it.
- Atomia Billing: Fixed Adyen plugin to round amount before redirecting customer.
- Atomia Billing: Fixed PrepaidCreditHelper to return only non-deleted prepaid credit product.
- Atomia Billing: Fixed PrepaidCredit payment method to work for orders too, i.e. to return status OK for order when customer has enough credits.
- Atomia Billing: Use customer settings when determening if reseller price should be used.
- Atomia Billing: Fixed ListItemsForReseller to fill internationals for retrieved items too.
- Atomia Billing: Fixed ListItemsForReseller to pre-cache items for language Guid.Empty later in order to avoid getting cached items without names when items for given language are requested.
- Atomia Billing: Fixed payment transaction locks were not released on safe missing payment profile attribute exceptions.
- Atomia Billing: Fixed CreatePayment to include refunds of previous payments into calculation of payment result when new payment is created.
- Atomia Billing: Send Message-ID in mails.
- Atomia Billing: Sync domain expiredate after successfull async registration completes, not only after initiation.
- Atomia Billing: Don’t retry provisioning actions after 10 failed attempts.
- Atomia Billing: Prevent invoices from being created if it doesn’t have any lines.
- Atomia Billing: Fixed provisioning of package extensions to select proper package based on PackageGroupId.
- Atomia Billing: Allowed provisioning of additional Hosting subscriptions when MultiPackage is enabled.
- Atomia Billing: Fixed possible KeyNotFoundException in renewal process when customerId is replaced with reseller’s id.
- Atomia Billing: Don’t send reminders for invoices that are credited, deleted or paid.
- Atomia Billing: Fixed bug in AuthorizationHelper cache that occured when user changed account.
- Atomia Billing: Don’t provision domain subscription where an equal is pending termination.
- Atomia Billing: Fixed the incorrect use of dataobject in ProvisioningActionSucceeded.
- Atomia Billing: Don’t increment attempt counter when checking async provisioning status.
- Atomia Billing: Fixed recurring payments via PayEx.
- Atomia Billing: Don’t return deleted items in ListItemsWithDetails.
- Atomia Billing: Don’t set recurring flag from old subscription if upgrade or downgrade.
- Atomia Billing: Fixed bug in FillExternalServiceProperties to use subscription’s quantity for SubscriptionNumberOfSeats property instead of preconfigured value.
- Atomia Billing: Fixed broken preview for customer welcome emails.
- Atomia Billing: Fixed duplicate prices bug in renewal period setter.
- Automation Server: Fixed sorting order in the FindServiceByPathAndProps method.
- Automation Server: Changed mapping type of the value property in params table to StringClob to avoid truncating large (above 4000 character) strings.
- Automation Server: Updated ActionTrail dlls.
- Automation Server: Updated to Atomia.Common.Authorization.dll that has caching bug fix.
- Automation Server: Fixed logging exceptions to provisioning journal before any further exception handling is done.
- Cloud Hosting Pack: Fixed bug in BaseKit model for Live property to support non standardized BaseKit api values.
- Cloud Hosting Pack: Allow TLD lengths from 2 to 22 characters in email validation.
- Customer Panel: Modified CommonPropertiesLoader to load prepaid credits without checking PrepaidCreditPaymentEnabled since payment methods are defined per reseller in Billing API.
- Customer Panel: Fixed bug when reseller is accessing customers subscriptions view.
- Customer Panel: Fixed bug with ordering more than one domain name for TLD which has DomainRegistrySpecific attributes.
- Customer Panel: Fixed creation of new orders to set status PlacementOK since default value for status enum is PlacementFailed.
- Customer Panel: Removed usage of removed Subscription’s property RenewalPeriod.
- Customer Panel: Fixed bug that displayed incorrect data in the invoice view.
- Customer Panel: Fixed usage of MainSubscription on MySubscriptions to reflect package selector state.
- Customer Panel: Fixed Cyprus and Ireland VAT number validation.
- Customer Panel: Fixed MySubscriptionsController to filter subscription for based on selected package.
- Customer Panel: Load content in MySubscriptions page based on location hash.
- Customer Panel: Display error message if auth code is empty on domain transfers.
- Hosting Control Panel: Fixed bug in the PostgreSQL index view.
- Hosting Control Panel: Modified PayPal confirmation page and actions to support canceling on both PayPal and our confirmation pages.
- Hosting Control Panel: Fixed css for previewing order on payment confirmation page.
- Hosting Control Panel: Fixed creation of new orders to set status PlacementOK since default value for status enum is PlacementFailed.
- Hosting Control Panel: Fixed missing flag icons bug in password reset view.
- Hosting Control Panel: Hide forwarding unless needed and fixed bug in post add view.
- Hosting Control Panel: Removed usage of removed Subscription’s property RenewalPeriod.
- Hosting Control Panel: Check if any DNS records exists for the subdomain when adding websites.
- Hosting Control Panel: Fixed grammar in the default email autoreply message.
- Hosting Control Panel: Made email alias editing equal to forwarders.
- Hosting Control Panel: Rethrow AtomiaServerSideValidationException in ManageMailboxAccount().
- Hosting Control Panel: Modified OneClickInstallerController and WebsiteController to allow post method for Index and BulkEditWizard actions in order to support package selecting.
- Hosting Control Panel: Changed regexp that is used for MX validation.
- Hosting Control Panel: Added condition to check if account id is empty in CheckGlobalAddingPossibilities.
- Hosting Control Panel: Don’t remove trailing slash in OneClickInstaller hostname concatenation.
- Hosting Control Panel: Fixed escaping configurable password patterns for use with JavaScript RegExp.
- Public Order Page: Fixed setting of payment method for new orders.
- Public Order Page: Fixed WorldPay plugin names.
- Public Order Page: Removed PayExConfirmRedirect action from controller since it is not used.
- Public Order Page: Fixed Cyprus and Ireland VAT number validation.
- Public Order Page: Fixed inadvertently removed terms checkbox validation.
- Public Order Page: Fixed broken css include paths and added missing ie7.css
Improvements
- Admin Panel: Introduced caching in GetAllItems method which fetches all items for a reseller for creating select list later.
- Admin Panel: Modified form models to enable replacing for ZIP code fields where it is configured in validation configuration.
- Admin Panel: Use reseller specific BCP/HCP links for login if possible.
- Admin Panel: Added possibility to unlink invoices from a subscription.
- Admin Panel: Added specific error message for missing SupportedCampaignConditionHandlers setting.
- Admin Panel: Added BCP login link in action menu and customer card.
- Admin Panel: Added link to support.atomia.com instead of the help page.
- Atomia Billing: Added MessagingHelper method GetBillingEmailAddress for getting billing email address from customer with option to fallback to main address if billing address doesn’t have email specified. Replaced usages of GetBillingAddress with GetBillingEmailAddress where only email is needed.
- Atomia Billing: Added public API operation for listing languages.
- Atomia Billing: Added IsPaymentPossible API operation which checks whether it is possible to add payment for invoice or not.
- Atomia Billing: Modified ProcessOrder to create payment profile only if transaction has status OK.
- Atomia Billing: Modified AddPaymentProfile to check if OnBeforeAddPaymentProfile added Cancel attribute and skips adding of profile if it did.
- Atomia Billing: Added implementation of OnBeforeAddPaymentProfile to payment plugins which support creating recurring payment agreements.
- Atomia Billing: Added InitialTransactionId property for payment transactions to support getting them in cases when payment gateway’s transaction id is not available.
- Atomia Billing: Added GetPaymentTransactionByInitialId API operation for getting payment transactions by their initial id.
- Atomia Billing: Modified PayPal plugin to skip capture if transaction has Failed status (which is set when customer cancels on PayPal or our confirmation page).
- Atomia Billing: Added filtering of prices by owner and currency when list of upgrade options is constructed.
- Atomia Billing: Added OrderPricesValidator which checks if all items have price in selected currency as a default validator when order is created.
- Atomia Billing: Removed unused Subscription’s RenewalPeriod and RenewalPeriodUnit properties and updated usages.
- Atomia Billing: Expose CreatedTime in the order business object.
- Atomia Billing: Send automatically converted text/plain part in addition to the normal text/html mail part.
- Atomia Billing: Added support for sending receipt emails if invoice is paid.
- Atomia Billing: Made template renewal units translatable.
- Atomia Billing: Added a new placeholder called RenewalWithoutUnit that doesn’t include a hard coded unit.
- Atomia Billing: Added resource files that contains translations for different units.
- Atomia Billing: Add support for useResellerOriginator in mail dispatcher.
- Atomia Billing: Add support for downgrade refund emails in GenericWorkflow.
- Atomia Billing: Moved category filtering to SQL query when generating invoice reminders.
- Atomia Billing: Add new RenewingAllowedType.AllowedAfterPaymentWhenInvoiced which means that renewal subscriptions without attached invoice can be provisioned immediately.
- Atomia Billing: The GetPaidAmount API method now takes refunds into consideration.
- Atomia Billing: Refunding without crediting now marks the invoice as Sent.
- Atomia Billing: Added support for having separate reminder logic for renewals and non-renewals through the ApplicableTo workflow configuration option.
- Atomia Billing: Improved validation of upgrade/downgrade orders.
- Atomia Billing: Log to action trail when a provisioning of a subscription was cancelled.
- Atomia Billing: Added method to retrieve data from the performance log.
- Atomia Billing: Added method to retrieve an overview of the tasks to run.
- Atomia Billing: New logging category and improved logging for all scheduled tasks.
- Atomia Billing: Modified order validator to copy cached package items for validation of included services.
- Atomia Billing: Modified InvoiceTemplating plugin to add same payment data as the one used for invoice email.
- Atomia Billing: All exceptions thrown by a scheduled task run is now linked together with a unique guid and logged.
- Atomia Billing: The event log and text log is now formatted in the same way.
- Atomia Billing: Additional logging data has been added to the action trail log, event log and text log.
- Atomia Billing: Modified GetPackageSubscriptions method to add DomainName custom attribute to package subscriptions in order to make this feature more user friendly.
- Atomia Billing: Added logging of performance counters.
- Atomia Billing: Added performance counters and currently executing method logging.
- Atomia Billing: Added support for configuring generic workflow per reseller.
- Atomia Billing: Added documentation for how prices are set and fixed bugs related to this.
- Cloud Hosting Pack: Added DomainSetLocal operation for DomainRegDomain.
- Customer Panel: Removed PayExRedirect confirm action since it is not needed any more.
- Customer Panel: Make it possible to hide create contact for configurable TLDs.
- Customer Panel: Added support for new model for internationals for products.
- Customer Panel: Made editing of customer identity properties configurable.
- Customer Panel: Modified invoice payment pages to support check if IsPaymentPossible for invoice and display message if not.
- Customer Panel: Modified PayPal confirmation page and actions to support canceling on both PayPal and our confirmation pages.
- Customer Panel: Added support for showing additional services info on MySubscription page if it is enabled.
- Customer Panel: Added support for configuring and showing custom attributes on MySubscription page.
- Customer Panel: My Subscriptions – it is possible to request custom subscription properties from view and for each subscription to get additional (child) subscriptions info.
- Customer Panel: Modified package selector to support package item name for better user experience.
- Customer Panel: Modified PackageSelectHelper to use DomainName custom attribute for package name if it is present in package subscription.
- Hosting Control Panel: Removed PayExRedirect confirm action since it is not needed any more.
- Hosting Control Panel: Added validation of summary length of frame forward fields on websites page. This should be less than 1900 characters.
- Hosting Control Panel: Display last changed time for databsae, ftp and mail accounts.
- Hosting Control Panel: Always check if an account/alias/forwarder exists when adding a forwarder.
- Hosting Control Panel: Made it possible to search for target emails in the mail forwarding view.
- Hosting Control Panel: Made it possible to search for email aliases.
- Hosting Control Panel: Added PostgreSQL module support.
- Hosting Control Panel: Modified package selector to support package item name for better user experience.
- Hosting Control Panel: Modified package selector to use DomainName custom attribute for package name if it is present in package subscription.
- Hosting Control Panel: Made generic plugin password requirements configurable.
- Public Order Page: Modified SubmitForm model to enable replacing for ZIP code fields where it is configured in validation configuration.
- Public Order Page: Modified PayPal confirmation page and actions to support canceling on both PayPal and our confirmation pages.
API Changes
The full list of changes to the APIs since the last release is:
Billing API
-
New event handlers
- OrderProcessedEventArgs now has an additional member called StatusBeforeProcessing.
-
New methods
- IsPaymentPossible
- GetTasksToRunOverview
- ListItemsForReseller
- GetDefaultShopForReseller
- GetActiveShopByNameForReseller
- GetShopById
- ListShopsByReseller
- CreateShop
- CreateClonedShop
- UpdateShop
- ValidateShop
- DeleteShop
- SearchShops
- GetDefaultShopProducts
- GetShopProducts
- ListShopItemCategories
- SearchScheduledTaskRuns
- GetPaymentTransactionByInitialId
- GetPerformanceCategories
- GetPerformanceCounter
- GetPerformanceCounterInstance
- GetMultiInstancePerformanceCounterAverage
- SearchPerformanceLog
- GetPerformanceLog
- GetExecutingMethods
-
Changed methods
- ListLanguages is now allowed for regular users, previously it was only available to resellers and administrators
-
Obsoleted methods that will be removed in future releases
- ListItemsWithDetails is marked as obsolete, you should use ListItemsForReseller instead.
Account API
-
New methods
- GetPerformanceCategories
- GetPerformanceCounter
- GetPerformanceCounterInstance
- GetMultiInstancePerformanceCounterAverage
- GetExecutingMethods
Core API
-
New methods
- GetPackageAddingPossibilities
- GetNumberOfServicesForPackage
User API
-
New methods
- ResellerAddRole
- ResellerAddUser
- ResellerAddUsersToRoles
- ResellerChangePassword
- ResellerChangeUsername
- ResellerDeleteRole
- ResellerFindByProperty
- ResellerFindUsersByEmail
- ResellerFindUsersByName
- ResellerFindUsersInRole
- ResellerGetAllRoles
- ResellerGetAllUsers
- ResellerGetRolesForUser
- ResellerGetUser
- ResellerGetUserNameByEmail
- ResellerGetUsersInRole
- ResellerModifyAtomiaUser
- ResellerModifyPassword
- ResellerRemoveUser
- ResellerRemoveUserFromRole
- ResellerValidateUser