AdoptOS

Assistance with Open Source adoption

Open Source News

Joomla 3.8.6 Release

Joomla! - Tue, 03/13/2018 - 08:45

Joomla 3.8.6 is now available. This is a security fix release for the 3.x series of Joomla addressing one security vulnerability and including over 60 bug fixes and improvements.

Categories: CMS

5 Must-have Tips To Capture More Global Shoppers

PrestaShop - Tue, 03/13/2018 - 06:26
For eCommerce companies, it’s a big world. That may be contrary to Walt Disney’s perception, but “big” is the best word to describe global eCommerce today, as illustrated by stats like these:
Categories: E-commerce

Five IT Management Issues Solved with Digital Experience Platforms

Liferay - Fri, 03/09/2018 - 11:54

The modern age of digital business has arrived, bringing both new possibilities and new challenges when it comes to effective IT management, which is how a company manages its technological resources in accordance with its needs and priorities. As such, companies today are looking for an effective solution that can meet the new needs of both customers and workforces.

As highlighted by Gartner’s Magic Quadrant for Digital Experience Platforms, businesses are turning to modern technologies to solve complex problems within the digital age. With customer expectations regarding experiences higher than ever and businesses working to leverage large amounts of data in less time than ever, companies depend on software that can support a wide variety of needs. Today, this can be found in digital experience platforms (DXP). Because of its broad capabilities, a DXP can help businesses solve both front-end and back-end issues to better empower companies.

The following five common IT management problems, which can impact both everyday business functions and customer experiences, can find solutions in the implementation of digital experience platforms.

1. Customer Targeting

According to Forrester research, 72% of companies selected improving customer experiences as their top priority when it came to business strategies. With customer experiences becoming a more integral part of both new customer marketing and audience retention, creating a great experience is more highly valued than ever. Today, these experiences depend on effectively targeting customers based on their past interactions and current interests.

Properly understanding target audiences on a customer-by-customer basis takes well-integrated systems and a wealth of strongly managed data. A DXP is designed to effectively collect this data and apply it directly to the customer experiences being formed through the software, which can help businesses across industries effectively tackle this common concern.

2. Content Management

Businesses of all sizes can quickly build up a large amount of content that can become difficult to manage and locate when not consolidated with the right software. Through the use of a digital experience platform, redundant and contradicting documents can be eliminated, including tracking past changes so that employees can be kept up to date and coordinated. With a company’s online presence built on a DXP, businesses have greater control over their content strategy, ensuring that there is consistency across experiences and that audiences avoid confusion caused by contradictory information.

As discussed by Enginess.io, content management through digital experience platforms also vastly improves content discovery for both employees and customers. These platforms make it easier for businesses to publish important content and make it easily discoverable by those who need it.

3. Administration Costs

Business expenses can steadily increase over time due to many small factors, such as wasted time and resources, adding up and becoming a disruption within the larger scope of IT management. However, while some companies may consider decreasing the size of their workforce or making major overhauls to business operations, the streamlining of work processes and an increase in return on investment through the reduction of waste can make a noticeable difference in administration costs. Additionally, by moving documentation online, companies can reduce the amount of paper waste that results from doing business.

These cost decreases are possible through a more efficient workforce, helping to increase the ROI of each worker, which can quickly add up in a large business. In addition, eliminating physical paperwork can decrease the amount of money spent on documents when they have been digitized. Other changes, including automating financial processes and streamlining accounting services, allow a company to work smarter and with less wasted time and energy.

4. Remote Working and Task Workflow

The modern worker depends on online tools and communications in order to perform his or her duties, with portals and intranets assisting employees across industries in ways not previously possible. Benedict Evans highlights that today’s applications are providing newer and better alternatives to the common usage of software like Excel and PowerPoint, which are often used to calculate, collect and present data in ways they were never meant to do. In using new technology available in DXPs, businesses are not only finding better tools within their preexisting workflows, but also changing and improving the fundamental ways that they do business.

But it’s not only workflows that depend on great modern technology. According to a 2017 Gallup survey reported by The New York Times, 43 percent of U.S. workers spend at least some time working remotely, showing a four percentage point increase from 2012. This steadily growing remote workforce means that a well-built digital workplace will only continue to play a more important role in the lives of workers for years to come.

5. Omnichannel Experiences

The modern customer journey takes place across many platforms and devices, with individual audience members most often interacting with a company multiple times and via multiple avenues before deciding on a purchase. As defined by Gartner’s Magic Quadrant Report, a DXP is designed with the ability to support multifaceted, multichannel and multisite initiatives instead of only a single website. By providing a user with unified and personalized access to a wide variety of systems, businesses have a greater ability to provide omnichannel experiences.

While customers may only see a front-end experience that shifts to meet their unique needs and suit the various devices being used across their journey, businesses will know that these omnichannel experiences depend on interconnected back-end systems. Because DXPs are designed to unify websites, portals, applications and more on a single platform, the alignment of back-end systems needed to provide true omnichannel experiences is within reach for companies.

Why Gartner Chose Liferay DXP as a Leader in the Field

Gartner recently released their first ever Magic Quadrant Report for Digital Experience Platforms and named Liferay as a Leader. With a portal heritage and the ability to connect both workforces and audiences, Liferay DXP is helping companies worldwide overcome their challenges and reach the next level of success.

Read the Magic Quadrant Report   Matthew Draper 2018-03-09T16:54:54Z
Categories: CMS, ECM

CiviCRM 4.7.31 and 4.6.36 release

CiviCRM - Thu, 03/08/2018 - 13:22
Greetings, CiviCRM community!   We are glad to announce the March CiviCRM release is now ready to download.  RELEASE NOTES: Big thanks to Andrew Hunt from AGH Strategies for putting up together release notes for this version.  The release notes for 4.7.31 can be accessed here.   SPECIAL THANKS:
Categories: CRM

Why do review collection methods matter?

PrestaShop - Thu, 03/08/2018 - 12:08
Ratings and reviews have become an integral part of every ecommerce business.
Categories: E-commerce

Three ways of collecting and displaying ratings and reviews can improve your SEO and Organic Search Ranking.

PrestaShop - Thu, 03/08/2018 - 11:11
In recent years ratings and reviews have turned into must-haves for every ecommerce business.
Categories: E-commerce

PrestaShop 1.7.3.0 Is Available!

PrestaShop - Thu, 03/08/2018 - 05:45
EASIER - FASTER - INTERNATIONAL
Categories: E-commerce

Tres maneras de mostrar que una aplicación bancaria es segura

Liferay - Thu, 03/08/2018 - 05:39

Las aplicaciones móviles de los bancos se han convertido en un aspecto fundamental de cómo las instituciones financieras se conectan y potencian todos los aspectos de su base de clientes. Según el estudio reciente realizado por Market Force, el 77% de los clientes cuyo banco les ofrece la opción de descargar una aplicación móvil, lo han llevado a cabo. Además, el estudio también concluyó que la tasa de adopción de estas apps se ha incrementado durante tres años consecutivos, y en todos los grupos de edad. Las personas se sienten cada vez más cómodas con la banca móvil y sus funcionalidades y capacidades, además, han permitido que bancos de todo el mundo lleguen a audiencias antes no explotadas.

Sin embargo, la banca móvil puede presentar riesgos de seguridad importantes en el caso de que se vean afectados por algún tipo de vulnerabilidad.

Por ello, es extremadamente importante que los bancos no solo trabajen para mantener sus aplicaciones seguras, evitando amenazas externas, sino que también consigan transmitir ese mensaje de seguridad a los clientes para calmar sus preocupaciones en este sentido, e incentivarlos a utilizarla habitualmente en sus operaciones bancarias.

Las siguientes tres mejoras en términos de seguridad (medibles y probadas), pueden convencer a tus clientes de que tu aplicación bancaria es segura y está lista para ser utilizada a largo plazo.

1. Explicar cómo estás protegiendo los datos

La mayor amenaza para la seguridad de las aplicaciones bancarias se encuentra en un cifrado débil de las comunicaciones entre dispositivos y servidores, un peligro del que los clientes están más concienciados que nunca.

La creación y la actualización constante del cifrado de datos no solo es crucial para garantizar aplicaciones seguras, sino que también permite que los usuarios se sientan más cómodos al considerar si deben usar la aplicación.

Existen numerosas formas en las que pueden producirse brechas de seguridad, incluido el tráfico de datos no seguro, el acceso al código fuente de la aplicación por parte de usuarios y el uso incorrecto por parte de los empleados que usan aplicaciones empresariales. Si bien es crucial que las empresas luchen contra estos problemas de seguridad a través del cifrado de datos, es igualmente importante que las medidas de seguridad sean bien comunicadas a los usuarios de la aplicación para incentivar su uso. La percepción que tienen los clientes de la seguridad de la aplicación puede ser reforzada a través de diversos métodos, entre ellos:

  • Parches de aplicaciones ágiles: cuándo una app sufre una brecha de seguridad, la noticia llega rápido a sus usuarios. Y los fallos de seguridad son explotados por los hackers aún más rápido. Por eso, es fundamental que los desarrolladores reparen los fallos lo cuanto antes y de forma eficiente. Si hay cualquier tipo de preocupación sobre la seguridad de la aplicación, el equipo de software debe ser capaz de proporcionar respuestas y mitigar los temores en el menor tiempo posible, y antes de que el impacto sea mayor.
  • Procedimientos de acceso: el acceso a la información de la aplicación puede ser un proceso frustrante para algunos usuarios, pero se trata de algo esencial para todas las aplicaciones que manejan informaciones financieras sensibles. Un sistema de acceso eficiente, robusto y consistente es, además de necesario, una manera de reforzar visualmente y a través de la experiencia de usuario la seguridad de la aplicación. Los sistemas de biometría, como puede ser la lectura de huellas dactilares, es un procedimiento ágil, además de seguro.
  • Actualizaciones detalladas: cuando vayas a actualizar cualquier aspecto de tu aplicación bancaria, las notificaciones deberían detallar, en un lenguaje comprensible para el usuario, qué es lo que ha sido mejorado. De forma demasiado frecuente, las aplicaciones describen vagamente sus actualizaciones, causando confusión o, incluso, preocupación en usuarios que no entienden exactamente lo que estas actualizaciones significan. Si lo haces de una manera transparente y ofreces detalles del procedimiento, obtendrás exactamente el efecto contrario.

Aportar consistencia y transparencia en estas áreas resultará en una mayor confianza por parte de los usuarios y aumentará el uso de tu app en el largo plazo.

2. Ofrecer capacidades de borrado seguro de datos.

Para que los usuarios puedan acceder adecuadamente y de forma rápida a la información, evitando frustraciones, las aplicaciones móviles suelen almacenar una pequeña cantidad de datos y documentos en el dispositivo en el que están descargadas. Algo que ocurre también con las aplicaciones bancarias, que, debido a la naturaleza de la actividad del negocio, almacena datos cuya sensibilidad es mucho mayor que la mayoría y resto de aplicaciones.

Pero, ¿qué pasa si el dispositivo dónde están almacenados estos datos se pierde o es robado? Tener una clave de acceso al teléfono móvil no es suficiente para garantizar su protección cuando alguien consigue llevar a cabo un acceso indebido al dispositivo.

Así, el miedo a perder el móvil es suficiente para desanimar a muchas personas a descargar en sus móviles aplicaciones que contengan información sensible. Como tal, es crucial que los bancos ofrezcan medidas de seguridad avanzadas teniendo en cuenta la posibilidad de pérdida o hurto del smartphone, o de cualquier otro dispositivo móvil. Según detalla Appcelerator, la capacidad de borrar datos de forma segura en remoto puede permitir que se eliminen las informaciones más sensibles que contiene la aplicación en el caso de que se pierda el dispositivo, tranquilizando así a los usuarios. Esto evitará que los clientes vean en la aplicación bancaria un constante riesgo para la seguridad de su información, alentando y promoviendo así tanto la instalación de la misma como su uso.

Así, el hecho de contar con un acceso ágil, sencillo y seguro, así como la posibilidad de realizar un borrado de información remoto, dará a tus clientes una sensación de que sus finanzas están securizadas.

3. Controlar las transacciones móviles de alto riesgo

Las aplicaciones móviles deben permitir que sus usuarios ejecuten una gran variedad de acciones para demostrar su importancia y valor en el día a día del cliente. Así, las apps que tienen en cuenta factores de riesgo como puede ser: la seguridad, la geolocalización o la seguridad de la conexión en la red, pueden evitar que algunos usuarios realicen acciones que puedan poner en riesgo sus informaciones. De esta manera los clientes sentirán que los bancos trabajan activamente para proteger sus datos.

Según Dark Reading, algunos de los comportamientos de los usuarios que les puede poner en riesgo y que las aplicaciones bancarias deberían prevenir son:

  • Transacciones realizadas en horarios o ubicaciones sospechosos o poco comunes en el usuario
  • Dispositivos afectados por virus u otros problemas de seguridad
  • Transacciones financieras más altas que de costumbre
  • Finalización de procesos a través de conexiones a redes no seguras

Los usuarios de aplicaciones móviles desean tener un determinado grado de libertad y cuando se enfrentan a algunas restricciones de uso pueden tener la tentación de abandonar la app. Sin embargo, cuando estas restricciones son mostradas al usuario como resultado del trabajo activo por parte del banco de cara a garantizar el bienestar de sus clientes, los usuarios de la aplicación sentirán que las instituciones financieras están cuidando de ellos, y no les están dejando abandonados a su suerte. Cuando se consigue ese equilibrio, el resultado es la creación de un vínculo más fuerte entre el banco y el cliente, más personal, generando un aumento de la fidelización.

Creando una mejor banca móvil

¿Quieres conocer ejemplos reales de cómo la banca móvil puede fortalecer una institución financiera? Descubre cómo la iniciativa de LGT SmartBanking fue posible a través de Liferay.

Caso de estudio de LGT  Rebeca Pimentel 2018-03-08T10:39:01Z
Categories: CMS, ECM

6 unique challenges that women in business face and how to overcome them

VTiger - Thu, 03/08/2018 - 04:36
There is no doubt that women are making great strides in the business world. Studies show that, women are better at taking calculated risks, less prone to overconfidence, more ambitious to climb up the corporate ladder, and are more successful at entrepreneurship. Yet, they continue to encounter (and overcome) unique challenges at workplace every day. […]
Categories: CRM

Drupal 8.5.0 is now available

Drupal - Wed, 03/07/2018 - 16:51
What's new in Drupal 8.5.0?

This new version makes Media module available for all, improves migrations significantly, stabilizes the Content Moderation and Settings Tray modules, serves dynamic pages faster with BigPipe enabled by default, and introduces a new experimental entity layout user interface. The release includes several very important fixes for workflows of content translations and supports running on PHP 7.2.

Download Drupal 8.5.0

Media in core improved and available to all site builders

In Drupal 8.4, we added a Media API to core that drew on work from the contributed Media Entity module, but the module was hidden from the user interface due to user experience issues. In Drupal 8.5, many of the usability issues have been addressed, and the module now can be enabled normally. Media in Drupal 8.5 supports uploading and playing audio and video files, as well as listing and reusing media.

For an optimal user experience, we suggest enhancing the core feature set with the rich ecosystem of contributed modules that extends the core Media module. In future releases, we will improve the core user experience with a media library and other tools, add WYSIWYG integration, add support for remote media types like YouTube videos, and provide an upgrade path for existing basic File and Image field data on existing sites.

Settings Tray and Content Moderation now stable

Two experimental modules originally added with Drupal 8.2.0 have been steadily improving in past releases and are now stable. The Settings Tray module provides a quick solution to manage settings in context, such as moving items around in a menu block. The Content Moderation module allows defining content workflow states such as Draft, Archived, and Published, as well as which roles have the ability to move content between states. Drupal 8.5.0 also adds support for translations to be moderated independently.

New experimental Layout Builder module

The new experimental Layout Builder module provides display layout capabilities for articles, pages, user profiles, and other entity displays. Layout Builder uses the same "outside-in" user interface that Settings Tray module does, allowing site builders to edit their layouts on the actual page (rather than having to go to a separate form on the backend). The current user interface is a basic implementation but we expect it will improve significantly in the coming months.

Big steps for migrations

After over four years of work, this release marks the Migrate system's architecture stable. The Drupal Migrate and Drupal Migrate UI modules are also considered stable for upgrading monolingual sites. (Multilingual site upgrades are still not fully supported.) Support for incremental migrations is also included in this release. See the migrate announcement for further details on migrating to Drupal 8.

BigPipe by default

The BigPipe module provides an advanced implementation of Facebook's BigPipe page rendering strategy for greatly improved perceived performance for pages with dynamic, personalized, or uncacheable content. The module was added in Drupal 8.1.0 experimentally and became stable in Drupal 8.3.0. Following real-world testing, Big Pipe is now included as part of Drupal 8.5.0's Standard installation profile, so that all Drupal 8 sites will be faster by default. BigPipe is also the first new Drupal 8 feature to mature from an experimental prototype all the way to being part of a standard installation!

Groundwork for a Drupal 8 "Out of the Box" demo

Drupal 8.5.0 includes the groundwork for a new demo profile and theme from the Out of the Box Initiative, which will be a beautiful, modern demonstration of Drupal's capabilities. This will allow us to provide the demo experimentally, possibly in a future Drupal 8.5 release. (The demo profile and theme should not be used on actual production or development sites since no backwards compatibility or upgrade paths are provided.) If you'd like to see this demo in action, you can also see it in the 8.6.x development version.

PHP 7.2 now supported

Drupal 8.5.0 now runs on PHP 7.2, which comes with new features and improves performance over PHP 7.1. PHP 7.2 is now the recommended PHP version to use with Drupal 8.

What does this mean for me? Drupal 8 site owners

Update to 8.5.0 to continue receiving bug and security fixes. The next bugfix release (8.5.1) is scheduled for April 4, 2018.

Updating your site from 8.4.5 to 8.5.0 with update.php is exactly the same as updating from 8.4.4 to 8.4.5. Drupal 8.5.0 also has updates to several dependencies, including a backwards-compatible update to a Symfony long-term-support release (which will be supported for many years). Modules, themes, and translations may need updates for these and other changes in this minor release, so test the update carefully before updating your production site.

Note that Drupal 8 will require PHP 7 starting in March 2019, one year from now. If your site is hosted on PHP 5.5 or 5.6, you should begin planning to upgrade (and consider upgrading to PHP 7.2 now that it is supported). See the Drupal core announcement about the PHP 5 end-of-life for more information.

Drupal 6 and 7 site owners

Drupal 7 is still fully supported and will continue to receive bug and security fixes throughout all minor releases of Drupal 8. Drupal 6 is no longer supported. See the migrate announcement for further details on migrating to Drupal 8.

Translation, module, and theme contributors

Minor releases like Drupal 8.5.0 include backwards-compatible API additions for developers as well as new features. Read the 8.5.0 release notes for more details on the improvements for developers in this release.

Since minor releases are backwards-compatible, modules, themes, and translations that supported Drupal 8.4.x and earlier will be compatible with 8.5.x as well. However, the new version does include some changes to strings, user interfaces, internal APIs and API deprecations. This means that some small updates may be required for your translations, modules, and themes. See the announcement of the 8.5.0 release candidate for more background information.

Categories: CMS

Big steps for migrations in Drupal 8.5.0

Drupal - Wed, 03/07/2018 - 16:51

After over four years of work with over 570 contributors and 1300+ closed issues, Drupal 8.5.0 releases the Migrate system's architecture as fully stable. This means that developers can write migration paths without worrying for stability of the underlying system.

On top of that the Migrate Drupal and Migrate Drupal UI modules (providing Drupal 6 and 7 to Drupal 8 migrations) are considered stable for upgrading monolingual sites. All of the remaining critical issues for the Migrate Drupal module's upgrade paths and stability are related to multilingual migration support (so multilingual site upgrades are still not fully supported).

Support for incremental migrations is now also available, which means that site owners can work gradually on their new Drupal 8 site while content is still being added to the old site. When migrations (including incremental migrations) are run through the user interface, site owners will now see a warning if some data on the Drupal 8 site might be overwritten. (A similar fix for Drush is not yet available, so be careful not to overwrite data if you run a migration on the command line.) 

Upgrade instructions for Drupal 6 and Drupal 7 sites can be found in the Upgrading to Drupal 8 handbook. Your old site can still remain up and running while you test migrating your data into your new Drupal 8 site. If you happen to find a bug, that is not a known migrate issue, your detailed bug report with steps to reproduce is a big help!

Unlike previous versions, Drupal 8 stores translated content as single entities. Multilingual sites with reference fields (node_reference, entity_reference) or multilingual menus can upgrade to Drupal 8 using Drush, executing the desired migrations one by one. In this process you need to create and run a series of additional custom migrations to reflect the new entity identifiers assigned during earlier migrations. There is no automation implemented for this process yet.

Data can be migrated to Drupal 8 also from non-Drupal sources such as CSV, XML, JSON, or directly from 3rd party systems' databases. For instructions and examples, refer to Migrate API handbook.

Huge thanks again to all the contributors who made this possible.

Categories: CMS

​​​​​​​Time to bridge the mobile gap!

PrestaShop - Wed, 03/07/2018 - 13:00
Mobile e-commerce traffic is increasing rapidly and is today larger than the PC traffic. But mobile sales are not developing at the same rate.
Categories: E-commerce

Fronting Liferay Tomcat with Apache HTTPd daemon Revisted

Liferay - Tue, 03/06/2018 - 19:42
Introduction

So originally I presented the blog post, Fronting Liferay Tomcat with Apache HTTPd daemon, but this post featured my partiality for using mod_jk to connect HTTPd and Tomcat.

Personally I think it is much easier to do the JkMount and JkUnmount mappings to point to Tomcat, plus Liferay sees the original request so when it generates URLs, it can generate them using the incoming request URL.

Remember that Liferay generates URLs for other assets such as stylesheets, javascripts, images, etc. Rather that being hard-coded, Liferay will create URLs based on the incoming request URL. This should mean that the host, port and protocol it uses for the generated URLs will correctly resolve back to the Liferay server.

When you front with HTTPd, it gets the actual request, not Tomcat. If you use the AJP binary protocol with mod_jk, the original URL goes to Liferay and it can generate URLs using the normal logic.

But when you use mod_proxy, things can be challenging. The URL that goes to Tomcat and Liferay is the URL request from HTTPd, not the external client browser. So if you are proxying from HTTPd to localhost:8080, a defaut Liferay configuration will end up generating URLs with localhost:8080 in them even though they will not be valid in the external client browser.

The challenge is getting the protocol, host and port correct when Liferay generates URLs.

Option 1 - Handle It In Liferay

The first way to get this right is to do it in Liferay.  By setting the following properties in portal-ext.properties, you control how Liferay generates URLs:

# Ports that apache HTTPd will be listening on web.server.http.port=80 web.server.https.port=443 # Host name to use in generated URLs, will typically be the name used to get to HTTPd web.server.host=www.example.com # Force all generated URLs to use the HTTPS protocol # If not set, will use the protocol from the connection from HTTPd to Tomcat. web.server.protocol=https

As specified above, regardless of the incoming request URL, Liferay will generate URLs in the form of https://www.example.com/...

In your httpd.conf file, all that is missing is the ProxyPass directives to send traffic to the local tomcat instance. Personally I want to send all traffic to Tomcat and specifically exclude those paths that should not go to Tomcat. I find this to be easier to manage rather than trying to figure out all URL patterns that Liferay might use to send traffic selectively to Tomcat:

# Serve /excluded from the local httpd data ProxyPass /excluded ! # Pass all traffic to a localhost tomcat. ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ # This would be the configuration to invoke a tomcat on another server # ProxyPass / http://192.168.1.6:8080/ # ProxyPassReverse / http://192.168.1.6:8080/

This is a very, very simplistic HTTPd configuration. It doesn't deal at all with virtual host configurations, http/https configurations, etc.

Also on the Liferay side it will generate URLs w/ www.example.com and may not use the Liferay configured virtual hosts correctly either.

Option 2 - Handle It In HTTPd

The second way to handle things is to push the heavy lifting to HTTPd.

We start by configuring httpd.conf (and the child files) to use the Virtual Hosts:

<VirtualHost *:80> # Set the header for the http protocol RequestHeader set X-Forwarded-Proto "http" # Serve /excluded from the local httpd data ProxyPass /excluded ! # Preserve the host when invoking tomcat ProxyPreserveHost on # Pass all traffic to a localhost tomcat. ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ # This would be the configuration to invoke a tomcat on another server # ProxyPass / http://192.168.1.6:8080/ # ProxyPassReverse / http://192.168.1.6:8080/ </VirtualHost> <VirtualHost *:443> # Set the header for the https protocol RequestHeader set X-Forwarded-Proto "https" # Serve /excluded from the local httpd data ProxyPass /excluded ! # Preserve the host when invoking tomcat ProxyPreserveHost on # Pass all traffic to a localhost tomcat. ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ # This would be the configuration to invoke a tomcat on another server # ProxyPass / http://192.168.1.6:8080/ # ProxyPassReverse / http://192.168.1.6:8080/ </VirtualHost>

So this sets up two virtual hosts, but using wildcards so they will actually handle all incoming requests that get to HTTPd. Each virtual host is tied to the HTTP or HTTPS protocol and set a header, X-Forwarded-Proto with the protocol to use.

Also it includes the ProxyPreserveHost directive which will preserve the incoming host when sending the request to Tomcat (it will get the incoming host instead of the localhost from the ProxyPass directive).  The X-Forwarded-Host header will also be set.

On the Liferay side, the portal-ext.property changes are simpler since we didn't change the expected header names:

# # Set this to true to use the property "web.server.forward.host.header" to # get the host. The property "web.server.host" must be set its default # value. # web.server.forwarded.host.enabled=true # # Set this to true to use the property "web.server.forward.port.header" to # get the port. # web.server.forwarded.port.enabled=true # # Set this to true to use the property "web.server.forward.protocol.header" # to get the protocol. The property "web.server.protocol" must not have been # overriden. # web.server.forwarded.protocol.enabled=true

This configuration elegantly handles virtual hosts correctly in HTTPd and in Liferay, it respects the incoming protocol correctly (to support mixed mode requests) and it is just easy to set up and validate, plus it won't require property changes when you add a new virtual host to Liferay.

Conclusion

So here's two options for configuring your server to support fronting Tomcat with HTTPd but using mod_proxy instead of mod_jk.

Personally I recommend using mod_jk, but if I had to go with mod_proxy, I would lean towards implementing it using Option 2 above.

 

David H Nebinger 2018-03-07T00:42:26Z
Categories: CMS, ECM

OSGi Version Details

Liferay - Tue, 03/06/2018 - 19:19

A good friend of mine, Minhchau Dang, pointed out to me that I have frequently used OSGi version ranges in my blogs.

I explained that I was concerned that I didn't want to bind to a specific version, I often wanted my code to work over a range of versions so I wouldn't have to go back and update my code.

He pointed me at the specifications, https://osgi.org/specification/osgi.core/7.0.0/framework.module.html#i3189032, which indicate that I didn't understand that a standalone version also work as a range. Yes this link is for the 7.0 specs and we're not at 7.0, but the 6.0 and 5.0 specs echo the same thing, I just didn't have a working link to that section.

So, in case you don't want to spin out to the specs document, I'll summarize here...

You can specify a range like version="[1.2.3,2)" to supply a fixed range, or 1.2.3 <= x < 2. This range specifies both the lower and upper bounds and allows you to be inclusive or exclusive of values.

But, if you simply use version="1.2.3", you are also using an unlimited range, or 1.2.3 <= x. This range only specifies the minimum version, anything greater is just fine.

Well, technically, that is. As far as OSGi is concerned, if 4.0.0 is available, it will happily mark the dependency as satisfied. You have to keep in mind, though, that there is never a guarantee of backwards compatibility on higher version numbers. So while OSGi will resolve the dependency with 4.0.0, it may not at all be compatible with what you need as a dependency. You are likely going to be okay if 1.3.4 is deployed, or 1.6.7, but you will likely encounter failure with version 2.0.0. So keep in mind that ranges, although not necessary, will help to constrain your module to platforms that will actually successfully host your module.

Now, I suppose we can still have a discussion of what to do with respect to Liferay releases. I mean, I don't know how Liferay will version portal-kernel for the upcoming 7.1 release, but let's consider the following...

Normally the Liferay tooling will start you with portal-kernel version 2.0.6 which we now know means 2.0.6 <= x, so any higher number is fine. But it actually likely will not be for 7.1. We might actually need to use a version range like [2.0.6,2.1) if 7.1 uses a minor version bump or [2.0.6,3) if 7.1 does a major version bump and our code doesn't work on 7.1.

I guess we'll cross that bridge when we get there...

 

David H Nebinger 2018-03-07T00:19:21Z
Categories: CMS, ECM

Crowdsourcing FOSS Project Success: Clearly defined project data, a smooth path to widespread adoption.

Open Source Initiative - Tue, 03/06/2018 - 13:09

PALO ALTO, Calif. - March 6, 2018 -- Today the Open Source Initiative® (OSI) announced its Incubator Project, ClearlyDefined, a crowdsourced project aimed at boosting the success of FOSS projects by clearly defining their status. Absences or ambiguities around licensing or known security vulnerabilities can erode confidence and limit project success. Project teams often are not aware of these concerns or do not know how to address them. ClearlyDefined identifies the gaps and works with project teams to fill them.

"This is an important project to amplify the success of FOSS projects through wider adoption and confidence. It aligns closely with OSI's mission to educate and advocate for open source," said Simon Phipps, President of the board of directors of the OSI, curator of the world's open source licenses.

While the project scope includes licensing, security, accessibility and other essential information, the initial focus is on factual licensing data such as licenses, copyright holders, and source code location. These are the key elements in understanding and meeting the license obligations related to consuming FOSS. Through a series of automated tools and human curation, the ClearlyDefined community has already curated licensing data for 1,000 of the most popular projects on GitHub and in key package management ecosystems.

"ClearlyDefined applies open source hallmarks—collaboration and openness—to the problem of curating FOSS itself. Contributing licensing and vulnerability data to the originating projects improves life for everyone. Project teams get updated information and guidance on enabling their community, and consumers gain the confidence they need to move fast and engage even more." — Jeff McAffer of the ClearlyDefined project team.

In addition to curating and contributing required data, ClearlyDefined provides a clearing house service, a one-stop shop, where consumers can get the data they need in canonical, machine-readable form. This enables unprecedented automation and rigor.

Today the Eclipse Foundation also announces that it will donate curated data to ClearlyDefined to assist in seeding information about projects within the Java ecosystem.

"ClearlyDefined is important to the Eclipse Foundation because as a large-scale producer of open source we want our projects to be more clearly defined, both for ourselves and our downstream consumers. We are excited to donate some of the curated data we have generated over the past decade about the FOSS we consume to help kick start ClearlyDefined's crowdsourcing effort," — Mike Milinkovich, Executive Director of the Eclipse Foundation.

"Complying with license terms is a critical part of our open source engagement. It is not unusual for a single product to use 1000s of FOSS components. Companies cumulatively spend millions of dollars a year discovering license terms and the information needed to comply. That work is duplicated many times over and takes away from deeper engagement and innovation. Being able to get and contribute the data we need through ClearlyDefined allows us to go faster and engage more." — Rashmi Chitrakar, Qualcomm Technologies, Inc.

As an incubator project of the OSI, ClearlyDefined is a vendor-neutral open source project with an open governance model. Standardized harvesting tools are run by community members and the resultant data contributed. Like any open source project, contributions are vetted and accepted by committers (called curators here), and pushed up to the original projects. Getting many eyes on the data enhances its quality and pushing the data upstream benefits everyone.

"Having a trusted source of curated upstream project metadata will help the entire ecosystem. The Linux Foundation's Open Compliance Projects--SPDX, FOSSology, and OpenChain--look forward to working with ClearlyDefined to create data that can be exchanged in a vendor-neutral manner." — Kate Stewart, Senior Director of Strategic Programs, The Linux Foundation.

ClearlyDefined is also important to the community as a whole and is an important initiative to capture data about FOSS that may be lost over time. The project is collaborating with Software Heritage to store the data in long term

.

"Software Heritage's mission is to collect, preserve and share all the software source code of the world. We are delighted to see ClearlyDefined taking up the important task of curating the metadata about software projects, and we are very pleased to work with them to preserve this precious information that would otherwise be lost as technology and developers move on." — Roberto Di Cosmo, CEO of Software Heritage, an initiative started by Inria, in collaboration with UNESCO.

About ClearlyDefined
ClearlyDefined (https://clearlydefined.io) is a working group of the Open Source Initiative, the stewards of open source licensing. Individuals from Microsoft, Qualcomm Technologies, Inc., HERE Technologies, Amazon, nexB, the Eclipse Foundation, and Software Heritage are collaborating to ensure the success of the initiative and welcome additional participation from the open source community.

About The Open Source Initiative
Founded in 1998, the Open Source Initiative (OSI) protects and promotes open source software, development and communities, championing software freedom in society through education, collaboration, and infrastructure, stewarding the Open Source Definition, and preventing abuse of the ideals and ethos inherent to the open source movement. The OSI is a California public benefit corporation, with 501(c)(3) tax-exempt status. For more information about the OSI, see https://opensource.org.

Categories: Open Source

OSI Celebration at Campus Party Brazil

Open Source Initiative - Mon, 03/05/2018 - 14:37

The Open Source Initiative (OSI) celebrated its 20th Anniversary at Campus Party Brazil 2018 during the first week of February. Campus Party Brazil is among the largest and most diverse tech events in the world. The eleventh edition of the event received a total of 120,000 attendees, of which 8000 were "campers" (participants who actually camp in tents inside this week long event). Approximately 40% of attendees were women, which is a very high mark for a tech event.

The OSI was well represented at Campus Party. Patrick Masson, the general manager of the OSI, flew in from New York to meet staff member Nick Vidal and two former OSI Board members who live in Brazil: Bruno Souza, founder of SouJava (the world's largest Java user group), and Fabio Kon, professor at USP university (the top higher education institution in Latin America).

Patrick gave his talk entitled The Third Decade of Open Source at the main stage, where he offered an overview of the first two decades of Open Source, and went on to predict the next decade. The first 10 years of open source were dedicated to advocacy and controlled by controversy. In the second 10 years we saw adoption and even ascendancy within many sectors. Ahead, in the third 10 years, the goal is assimilation, and the expectation is authenticity.

There were several talks and activities related to Open Source at Campus Party, including a keynote from the legendary Jon "Maddog" Hall, president of OptDyn. Maddog presented Subutai, an Open Source, container-based P2P Cloud computing platform that allows anyone to share, barter, or rent computer resources using Subutai's cryptocurrency.

Many Open Source communities and projects were present at Campus Party:

There were also several Open Source friendly companies present at Campus Party, including:

These were just a few communities and companies we were able to meet in person at Campus Party. An additional list of Open Source activities at Campus Party is available here.

To celebrate the 20th Anniversary of Open Source, the community led by Christiano Linuxmen and Luckas Judocka organized a wonderful Birthday Party attended by almost 100 people. The food was generously provided by iFood (thanks Eduardo Ximenes and Nara Zarino). Rachel Brochado also brought in a cake and some cupcakes. To celebrate the next decade of Open Source, we invited Guilherme Faria, a 10-year old boy who loves Linux, to blow out the candles. Guilherme represents the next generation of the Open Source community.

We want to thank everyone from the Open Source community who made this celebration so special. Our many thanks to the Campus Party organizers Thalis Antunes, Izabel Valverde, Juliana Teodoro, Paco Ragageles and Tonico Novaes.

We look forward to celebrating the 20th Anniversary of Open Source at these upcoming events in Brazil:

For upcoming events worldwide, please see:

https://opensource.net/events

If you are interested in learning more about Open Source in Brazil, please check this excellent summary from O’Reilly:

http://www.oreilly.com/programming/free/files/open-source-in-brazil.pdf

Categories: Open Source

Contact Management on-line training - March 7th at 1 pm MT

CiviCRM - Mon, 03/05/2018 - 13:50

Cividesk is offering our new user class on the Fundamentals of Contact Management this Wednesday, March 7th from 1 - 3 pm MT (3 - 5 pm ET).  Click here for more information and to register. Class size is kept small to allow for questions, and classes do fill up, so we recommend registering soon!

This is an excellent introduction to contact management for those who are new to CiviCRM or require more formal instruction.

Categories: CRM

New CiviCRM Extension - Collapse Comms and Demographics

CiviCRM - Fri, 03/02/2018 - 06:13

On many occasions, clients have mentioned that the contact summary screen loses a lot of prime space to the communication preferences and demographics sections.

“Is there no way to collapse them by default like you can with custom data? They are rarely used but are needed”

They’re aware that demographics and communication preferences can be removed via the UI (/civicrm/admin/setting/preferences/display?reset=1)

This is a simple extension that collapses both the communication preferences and demographics sections by default on the summary page.

Categories: CRM

Cuatro puntos de partida para eliminar los silos dentro de tu empresa

Liferay - Thu, 03/01/2018 - 15:39

La idea de trabajar dentro de los límites organizacionales de una empresa se remonta a finales de los años 80, con la visión de Jack Welch, el CEO de General Electrics en la época. Al eliminar lo que posteriormente se conoció como los silos organizacionales, Welch predijo que las compañías podrían conseguir  la velocidad y la innovación tecnológica que llegarían en el siglo XXI.

A día de hoy se puede decir que vivimos esta realidad, con organizaciones de todos los sectores esforzándose para evolucionar a la misma velocidad que los negocios modernos. Sin embargo, los silos organizacionales siguen estando presentes y afectando la manera en la que muchas marcas gestionan sus negocios. Eliminar estas barreras, así como instar a una reorganización efectiva puede parecer un proceso arduo y complicado. Según un estudio de PwC, el 50% de las compañías trabaja con silos, es decir, deciden por sí mismas qué áreas de operación son las más importantes.

Los siguientes cuatro puntos de partida pueden ayudar a tu empresa a comenzar el proceso de eliminación de silos de una manera efectiva y realista. Al hacerlo, podrás obtener un mejor rendimiento a través de una mayor productividad, una mejor colaboración interna, unas estrategias de marketing más eficientes y una mayor habilidad para alcanzar los objetivos de la empresa.

1. Comunicación entre departamentos

Eliminar los silos de comunicación de manera eficiente no implica, necesariamente, una reestructuración total de la organización de una empresa, sino estrechar los lazos que unen todos los diferentes aspectos y áreas de la compañía. La buena comunicación entre departamentos es un aspecto clave para romper los silos, tanto en lo que respecta a la comunicación entre empleados, como en lo que atañe a la forma en la que la información es compartida en la organización. Al simplificar y mejorar los canales de comunicación, las empresas serán capaces de ejecutar el resto de pasos más rápidamente y con más facilidad, ya que se apoyarán en una comunicación más eficiente.

Además, existe la posibilidad de que no seas totalmente consciente de cómo se comunican tus empleados entre sí. Según la investigación realizada por ClearCompany, solo un 18% de los empleados encuestados dijeron que la evaluación de la comunicación entraba dentro de la revisión de sus tareas , lo que indica que aunque la colaboración sea importante, la comunicación real dentro de la empresa rara vez es evaluada. Valore adecuadamente cómo su compañía se está comunicando internamente, a través de encuestas a empleados y evaluaciones de sus canales de comunicación.  Así, lo ideal es determinar una estrategia para mejorar la comunicación, como puede ser elegir un software de mensajería adecuado, lo que va a incentivar a que los empleados de distintos departamentos se reúnan más veces y compartan informaciones e insights. Esto les va a dar más poder para que expresen sus ideas a otros equipos con los que no han tenido la oportunidad de trabajar antes.

2. Acceso a la Información.

Tener los datos bien estructurados es extremadamente importante para la empresa. De esta forma, la organización será capaz de interpretarlos y utilizarlos de la mejor manera posible como para crear perfiles de clientes en el departamento de marketing o utilizar registros de atención al cliente para evaluar la calidad del producto. Sin embargo, la forma en la que esa información es almacenada puede generar la creación de silos, como por ejemplo cuándo los departamentos de atención al cliente son los únicos que tienen acceso a los registros de las llamadas, o cuándo el departamento que gestiona las redes sociales es el único que tiene acceso a la información referente al tipo de perfil de los seguidores de la marca.

Al compartir los datos obtenidos por cada departamento, surgirán nuevos usos para los mismos que, a su vez, aportarán un valor, imposible de conseguir si la información se quedase restringida al conocimiento de un solo departamento. Cuando la información obtenida por cada área de la organización es analizada en su conjunto, las empresas tienen una mayor posibilidad de crear un perfil de cliente preciso y real, basado en datos sólidos.

Para hacerlo, la empresa debe recopilar la información desde diferentes fuentes para ser capaz de determinar exactamente quién es su público objetivo: sus intereses, información geográfica, su historia, situación familiar, profesión y mucho más, permitiéndole mejorar los resultados de las acciones de marketing.

3. Análisis de la información.

No es suficiente tener acceso a todos los datos de la empresa. Es necesario, además, analizarlos para convertir esta información en algo útil para la compañía. Los datos inaccesibles están afectando a las empresas en todos los sectores y se espera que este problema crezca aún más en los próximos años. El informe de IBM indica que un 80% de todos los datos de las compañías son confusos y desestructurados, lo que significa que las empresas no pueden leerlos, ni usarlos en sus sistemas informáticos.  Con el volumen de datos generados alrededor del mundo incrementándose cada año, el estudio de IBM prevé que en 2020 un 93% de todos los datos serán desestructurados.

Frente a esta tendencia, las empresas deben asegurarse de que sus sistemas de back-end recopilan adecuadamente los datos resultantes  de las acciones de sus clientes y de que están utilizando procesos de analítica modernos para ser capaces de interpretar correctamente las tendencias e intereses de sus usuarios.

A día de hoy, las organizaciones están adoptando tecnologías de inteligencia artificial para analizar las informaciones desestructuradas de forma más rápida y con más precisión que un humano. Además, el análisis de datos en tiempo real puede ser utilizado para una mejor comprensión del público objetivo en el momento de su interacción con la marca. Esta información puede ser almacenada y puesta a disposición de  todos los departamentos para empoderarles y beneficiarles con los insights generados.

4. Visión completa de la Compañía.

Es muy fácil que los departamentos se desalineen tanto entre sí, como con los objetivos de la empresa como un todo cuando una organización no está creando proactivamente y enfatizando una visión completa y unificada de la compañía. Esto resulta en una visión fracturada de los objetivos, que, a su vez, puede generar una disparidad en las estrategias de cada departamento y en la manera con la que cada uno de ellos interactúa con el cliente. Un buen ejemplo de ello es cuando el equipo de SEO orienta el contenido de la página web a una audiencia completamente distinta de la que ha seleccionado el equipo de redes sociales. Según eConsultancy, el 40% de las empresas encuestadas en una investigación que hicieron sobre la experiencia del cliente dicen que los departamentos de su organización tienen su propia visión respecto a cómo interactuar con el cliente.

Una visión adecuada de la totalidad de la compañía no solo considera los objetivos medibles, sino que también considera las  tareas y estrategias específicas de cada departamento. Con ello, así como al asegurar que cada área sigue intentando alcanzar los objetivos establecidos, los distintos departamentos van a empezar a alinearse naturalmente el un al otro, teniendo en cuenta cómo pueden ayudarse mutuamente a alcanzar, tanto sus objetivos, como los de la organización.

Los beneficios de eliminar los silos.

Las empresas que consiguen eliminar los efectos negativos de los silos pueden beneficiarse de una comunicación más ágil, de una mejora en el uso de información, con departamentos que trabajan en sintonía, con una colaboración entre áreas y una visión global capaz de reflejar las acciones de cada departamento. El resultado es un ahorro de tiempo y de costes, así como la creación de un proceso más eficiente para alcanzar los objetivos de la empresa.

 

Mejora tu empresa a través de la transformación digital

La mejora de la coordinación de tu empresa y la capacidad de adoptar nuevas formas de hacer negocios, puede ser posible con la adopción de un software en el que puedas confiar. Liferay DXP ha dado a compañías en todo el mundo las herramientas para mejorar sus estrategias de negocio y sus procesos diarios. Descubre cómo Liferay puede también potenciar tu negocio.

Lee “Digital Experiences Platforms: Designed for Digital Transformation”   Marta Dueñas González 2018-03-01T20:39:59Z
Categories: CMS, ECM

Single Customer View Demystified

Liferay - Thu, 03/01/2018 - 13:06

Today’s customers expect to be known and cared about by companies. While modern online experiences can customize web page layouts and provide customer service representatives with a customer’s purchase history, the future of highly personalized experiences can be seen in the idea of a single customer view.

There are many perspectives on what makes a true single customer view (SCV), and one of the most common misconceptions is that an SCV is either a piece of software or an off-the-shelf product. Rather, SCV is not only a product but is actually a process that your data must follow to make it ready and suitable for marketing, analytics and insight. Through the extraction, transformation and load process, SCV should take all the data you hold concerning your customers and put it through an automated journey of matching, cleansing and enhancement.

More businesses than ever are interacting with their customers through multiple online channels, which is resulting in enormous amounts of data being created and stored in the digital space. According to an IDC study, consumers created 1.8 zettabytes of information in 2011, which will multiply approximately 50 times by the year 2020. With so much information available, it is up to companies to take the correct steps in collecting, organizing and analyzing it effectively.

Why Single Customer View?

SCV gives companies the chance to understand customers with better data to know who they are, where they are, what they do and, eventually, what they want. An online experience that is able to create a strong single customer view can provide tailored experiences similar to what can be seen in the best in-person experiences, such as a restaurant predicting and preparing the order of a faithful customer long before he or she orders it.

Better data creates better insights concerning a company’s target audience. When applied appropriately, this leads to:

  • Better Marketing - Derive interest based on pages visited, articles read and keywords searched to cater to audience interest and send more relevant promotions.
  • Better Sales - Create complete profiles with historical data to help sales people identify needs, budgets and timing for customers to more effectively close deals.
  • Better Support - After purchase, customers may encounter issues, report bugs or look for FAQs. This data can be gathered to form a proactive approach to solve issues and provide better training and documentation to solve issues before they arise.
  • Better Retention - Proactively track trends and data concerning what creates unhappy or happy customers to create better experiences and boost upselling and renewing for long-term customer relationships.

In the end, these all add up to a better customer experience.

The Benefits of Single Customer View

While companies should provide many well-designed online touchpoints to their customers in order to provide them with the best online experience possible, such as online chat and e-commerce checkout options, businesses should also see every point as a chance to connect and learn about individual consumers and interact with them in meaningful ways.

A successful single customer view is created by collecting all information related to your customers and providing a 360 ̊view for each person. These types of customer information can be pulled from touchpoints and include:

  • Individual Customer Identities & Demographics
  • Browsing Activities
  • Preferences
  • Sentiments
  • Customer Support Team Interactions
  • Firmographics
  • Sales Interactions
  • Event Attendance
  • Social Engagements
  • Transactions

While each type of data can give specific insights into a customer, they provide a robust view of individuals when combined as an SCV.

Four Steps for Aggregating SCV Data

Single customer view can act as a single source of truth for your business concerning your customers, which can aggregate data from mobile apps, websites, portals, databases, CRM, emails, social ads, e-commerce and customer service. In order to properly aggregate data, follow these four steps:

  1. Extract Data from Different Sources - Target data from mobile apps, websites, portals, emails and social media. This data can be collected from e-commerce, as well.
  2. Cleanse and Standardize - After extracting, convert data into a common format so it’s easier to analyze, especially if it is coming from different global regions.
  3. Merge Identities with PII - Information about the same person should be merged together using Personal Identifiable Information (PII), which includes combinations of emails, addresses and government-issued IDs to help identify individuals with user consent and the ability to remove if requested by customers.
  4. Model and Index - Collected data should be readable and cleanly organized in a unifiable schema so it can be used effectively by data teams.

Once information has been properly gathered through data visualization and analysis, the unified data can be used to:

  • Create Profiles, Dashboards and Reports - Helps keep track of trends and customer behaviors.
  • Calculate KPIs - Creates conversion rates, engagement scores, customer lifetime value and customer satisfaction scores.
  • Support Machine Learning - Feeds data into models to create sentiment and interest analysis or create a prediction model to identify the most valuable customer segments.
  • Improve Workflows and Audience Targeting - Provides data to workflows like audience targeting, campaign managers and AB testing to improve them.
The ETL Pipeline

Creating a data pipeline with the ETL (Extract, Transform and Load) process can help your business better collect, organize and analyze customer data to gain the most benefits from your SCV efforts. Before you start creating an ETL pipeline that can result in a single customer view, ask yourself the following questions: Where are your data sources? What do you want to measure and analyze? What are your business processes and how is data being collected? How can SCV creation be a company-wide effort?

This process can help you successfully approach a customer data pipeline and help you properly analyze it for the creation of a Single Customer View. The ETL pipeline consists of the following elements:

  • Extracting data from different sources, both structured and unstructured.
  • Transforming the data by cleaning, filtering, validating, merging and applying business logic.
  • Loading the transformed data into a queryable data warehouse ready for visualization and analysis.

By approaching your data through an ETL pipeline, you can have greater assurance that you will be creating accurate insights upon which to base your marketing and online experience strategies. The result can be more satisfied customers, a higher return on investment and long-term customer relationships for your business.

Improving Your Customer View

Great customer experiences are created through effective strategies that leverage modern technology. Learn more about how you can transform your customer experience in our whitepaper.

Read “Digital Experience Platforms: Designed for Digital Transformation”   Jonathan Lee 2018-03-01T18:06:12Z
Categories: CMS, ECM
Syndicate content