Introduction
Version 8.9.0.0 is the first release after version 8.8.0.0 that has been made generally available. It contains many exciting new features and a number of bug fixes. Before upgrading, please read the Upgrade Compatibility Alerts for each version.
Version 8.9.0.0
Note that some of the features highlighted below are only available in the Enterprise Extensions. See here for full details of what is included only in the Enterprise Extensions.
New Features
- Added a full implementation for double opt-in for customer registration and for newsletter subscriptions. Double opt-in can be enabled by setting configuration variables.
- Added a framework to enable the sending of emails using an external email delivery service using the standard KonaKart email APIs. Two reference implementation modules are provided – for using SendGrid or APSIS.
- Introduced a new Customer Tag type (MULTI_INT_PLUS_TIME_TYPE) which stores Id and timestamp pairs. The timestamp is useful for more-detailed analysis of the Customer Tag data (for example in AI engines).
- Four new default Customer tags (of type MULTI_INT_PLUS_TIME_TYPE) have been introduced: PRODUCTS_TIME_VIEWED, CATEGORIES_TIME_VIEWED, MANUFACTURERS_TIME_VIEWED, PRODUCTS_TIME_IN_CART and PRODUCTS_TIME_IN_WISHLIST. By default these store the relevant Id along with an associated timestamp for more detailed analysis. These new tags can be used in expressions but only with the EQUALS and NOT_EQUALS operators which act on the Id only (and not the timestamp part). The new storefront now populates these new tags with the timestamp information and not the previous equivalent tags without the timestamps.
- Extended the size of the Customer Tag value field to 1024 characters to allow the storage of more analytical data.
- The KKEng API call sendTemplateEmailToCustomer1() can now be used to send template emails to non registered customers.
- Added an API call, isCustomerSubscribedToNewsletter(String emailAddr) in order to detect whether a customer has already subscribed to the newsletter.
- Updated storefront application, KonaKart and KonaKart Admin tiles to use more recent versions of jQuery, jQuery UI, Jcarousel, Underscore and Backbone. Stopped using jquery.json-2.3.js.
- Increase the size of the msg_value column in kk_msg allowing larger messages.
- New removeMallStore() API call to completely remove all the records belonging to a store.
- Upgrade to GWT 2.8.2
- Added a DEFAULT_CATALOG_KEY configuration variable to define a default catalog used by the storefront application if the customer hasn’t been assigned a catalog in the B2B_CATALOG_KEY customer tag.
- Upgraded numerous apache-commons jars to these versions: commons-beanutils-1.9.3, commons-codec-1.11, commons-collections4-4.1, commons-configuration2-2.2, commons-digester-2.1, commons-digester3-3.2 commons-discovery-0.5, commons-fileupload-1.3.3, commons-io-2.6, commons-lang-2.6, commons-lang3-3.7 and commons-text-1.2.
- Upgraded to gson-2.8.5.jar and guava-23.0-android.jar.
- Upgraded to httpclient-4.5.5.jar and httpcore-4.4.9.jar.
- Added httpmime-4.5.5.jar
- Upgraded to jackson-core-2.9.3.jar, jackson-databind-2.9.3.jar and jackson-annotations-2.9.3.jar.
- Removed jackson-core-lgpl-1.9.13.jar and jackson-mapper-lgpl-1.9.13.jar.
- Added RabbitMQ Mgr only for sending ERP integration messages.
- Resetting a customer’s password from the Admin App or Admin APIs now sends out a password that expires after a configurable number of minutes. The customer is prompted to change it on next login.
- Added product images to KonaKart tiles checkout screen.
- Upgraded the bundled apache-maven to version 3.5.2.
- Added configuration to admin app to allow you to hide the Images and Downloads tabs on the Edit Product panel.
- If a product has variants we hide the sku and quantity of the base product in the Quantities tab of the edit product panel in the Admin App to avoid confusion.
- Added functionality to Admin searchForProducts() API call to populate the product attributes and product quantities for the returned products.
- Enhanced the Products panel in the Admin App. When you move your mouse over the quantity of a product with variants, you can now see the quantity for all of the variants. You can also decide to display a variant quantity rather than the quantity of the base product.
- Admin App Console ease of use: Double-click on a row will edit the item selected (or view it if there is no edit option). ESC is the equivalent of the back button.
- Custom Attributes (custom_attrs) are now recorded in the orders_products table allowing more flexibility in storing product custom attribute information on orders.
- By default a sha256 encryption algorithm is used to encrypt passwords. The previous MD5-based algorithm will continue to work but new passwords will use the new sha256 algorithm. The customers_password column in the customers table and the password column in the kk_cust_pwd_hist table have been enlarged to accommodate the new password length.
- By default the AXIS service list is now disabled. Also, by default, the getVersion and AdminService calls are disabled. These can be enabled in the server-config.wsdd file in each applicable webapp.
- Quartz batch jobs: Note that by default the storeId is appended to the Group Name in konakart_jobs.xml. This is important when running in multi-store mode as only the jobs for the current store are now shown in the Admin Console.
- AdminAppLauncher: By default this now instantiates AdminAppAuthenticationMgr directly rather than using reflection to open a named class. The code is provided if you wish to revert to the previous behaviour. In addition the storeId is escaped when used in the HTML output produced.
- Made the license key field a password field so that its value isn’t shown.
- Modified the PayPal payment gateway to check the amount paid in the callback and also to discard duplicate transactions. Also, the data in the callback is now verified by sending it back to PayPal and receiving a response as to whether the data is valid.
- Added a new Configuration >> Integrations panel to the Admin App to store configuration variables related to products integrated with KonaKart.
- Upgraded to mysql-connector-java-5.1.46.jar which provides support for MySQL 8.0 (but only if run in the legacy or mysql_native_password authentication mode).
- Added functionality to allow role based access to the Custom tab on the EditProduct panel.
- Now easier to add a review with a specified name rather than always looking it up from the specified customerId on the review. When adding a review, specify a customerId of 0 to use the customerName on the review you are inserting. This can be useful for importing reviews from external systems that may not be KonaKart customers.
- Avoid a null exception occuring in the Order class if a quote is returned with null TotalExTax or null Tax.
- Now possible to run the storefront in Liferay 7 (overcoming previous limitations)(tested up to Liferay 7.1.0 GA1). A new jar called struts2-json-plugin-kk-2.3.8.jar replaces struts2-json-plugin-2.3.8.jar to provide this support.
- Added 10 extra custom attributes that can be used when defining promotions.
Bug Fixes
- productType wasn’t being used as a product search filter for searches using Solr.
- Prevent a null exception when Solr returns manufacturer Ids that no longer exist in the database.
- A manufacturer existing under more than one top level category was being indexed multiple times in Solr terms and so was appearing duplicated in the suggested search list.
- Promotions were not being displayed in the Admin App when the following conditions were all true:
- Enterprise mode
- No expressions inserted in the system
- Promotion Tester Expression configuration variable not empty
- Fixed a bug when formatting currencies. When the number of decimal places for the currency was being set in the admin app to a greater precision than the actual currency, the currency formatter was using the standard Java rule of ROUND_HALF_EVEN causing it in some cases to round down rather than up. This was only affecting the display of the currency and not the actual value, which was correct.
- In com.konakart.al.ProductMgr the returnCustomFacets attribute of the ProductSearch object was never being reset.
- On Windows, if an image is uploaded that isn’t scaled (i.e. not a product image) and it replaces one with the same name but with a different case, the file name was not changed on disk. This has been changed so that on Windows the file is first deleted from the disk in order to preserve the case of the newly-uploaded image file name.
Backwards Compatibility Alert
-
Moving up to commons-configuration2-2.2.jar may cause some of your custom code to fail (if you don’t keep the previous commons-configuration jar on your classpath which is possible to do as they are designed to co-exist).
If you choose to move up to the commons-configuration2-2.2.jar for your custom code typically you will need to change your imports to include the new classes:
Old : import org.apache.commons.configuration.Configuration;
New : import org.apache.commons.configuration2.Configuration;Old : import org.apache.commons.configuration.PropertiesConfiguration;
New : import org.apache.commons.configuration2.PropertiesConfiguration;Old : import org.apache.commons.configuration.ConfigurationException;
New : import org.apache.commons.configuration2.ex.ConfigurationException;For loading Properties/Configurations you can use this new static utility:
Configuration conf = PropertiesUtils.getConfiguration(inputFileName);
- Quartz batch jobs: If you are running in multi-store mode you should append the storeId to the Group Name in konakart_jobs.xml. This is important when running in multi-store mode as only the jobs for the current store are now shown in the Admin Console.