AdoptOS

Assistance with Open Source adoption

Open Source News

¿Por qué tu customer journey map no está reflejando la realidad de tus clientes?

Liferay - Fri, 02/16/2018 - 07:58

Las empresas diseñan buenas experiencias de clientes con el objetivo de satisfacer o superar las expectativas de su público objetivo; y lo hacen a través de la predicción de sus acciones e intereses. Sin embargo, las compañías necesitarán crear una descripción detallada y precisa de estas experiencias potenciales en forma de customer journey map, en el que estén representados todos los pasos que estos dan durante la interacción con la empresa. Estos mapas deben tener la función de trazar el recorrido desde la primera interacción hasta la ejecución de la compra o, incluso más allá. Dedicar recursos a llevar a cabo esta acción es especialmente importante, ya que un mapa del customer journey incorrecto, que no refleje la experiencia real de tu audiencia puede causar complicaciones innecesarias para tu negocio.

Independientemente de si tu empresa se encuentra actualmente en el proceso de definición de su customer journey, o de si ya ha finalizado este proceso, es importante que conozcas las principales razones por las que algunos customer journeys maps no funcionan. Y, si es el caso, puedas hacer los cambios necesarios para que el tuyo refleje perfectamente el recorrido de tu cliente a lo largo de su ciclo de vida.

Problemas comunes del Customer Journey Map

Si bien cada empresa debe hacer un esfuerzo por diseñar un customer journey map que refleje la realidad del cliente, hay un serie de problemas comunes que surgen a lo largo del proceso de diseño, y que pueden impedir la creación de un mapa ideal. A continuación ponemos algunos ejemplos de estos problemas frecuentes. Es importante que, en cada caso, pueda considerarse cómo cada uno de ellos puede afectar al customer journey de tu organización:

  • Recorrido idealizado: Existe una diferencia entre cómo te gustaría que se comportara tu cliente y cómo se comporta verdaderamente. Si tu customer journey solamente refleja el comportamiento e interacciones que te gustaría que tu audiencia tuviera con tu compañía , esta herramienta no podrá ser utilizada para analizar y orientar el comportamiento de los clientes para conseguir tus objetivos. Los customer journey maps que son realmente útiles para tu empresa y equipo son los que muestran cuál es el verdadero recorrido de tu público objetivo. De esta forma seréis capaces de poner en marcha los cambios necesarios que os ayuden a dirigir a vuestra audiencia hacia vuestro customer journey ideal.
  • Dejar de lado los pasos que no incluyen a tu marca o empresa: Un customer journey map de éxito es aquel que contempla todas y cada una de las fases del proceso, incluyendo aquellas que no están relacionadas con tu negocio. Lo que puede incluir aquellos momentos en los que el cliente analiza a la competencia o aprende algo sobre tu producto en una página de un tercero. Puede que no seas capaz de mantener un control sobre estas fases del proceso, pero debes tener en cuenta que también van a tener un impacto en el customer journey real.
  • Olvidar el Punto de vista del cliente: ¿Qué opinión tiene el cliente de tu empresa? Esta es una pregunta importante que toda compañía se debe hacer y que, además, va ayudarte a comprender cómo cada paso del customer journey va a impactar en dicha percepción, así como en incentivar o desmotivar al cliente para dar el siguiente paso hacia la compra. No olvides que este recorrido del cliente con tu empresa todavía depende de la visión y los intereses de la audiencia, independientemente de cómo de efectiva sea tu estrategia de experiencia del cliente.
  • Falta de Indicadores sobre el rendimiento del customer journey: Los mapas de customer journey también son capaces de identificar qué áreas pueden ser optimizadas, a través de la incorporación de indicadores que ayuden a medir su rendimiento. Según Tandem Seven, estos indicadores ofrecen insights sobre el estado emocional del cliente, facilitando la identificación de las razones que pueden estar impidiendo la finalización de la compra. No tener en cuenta este tipo de información puede impedir a la empresa conocer mejor las razones que hay detrás de la compra o abandono por parte del cliente.

Considerar los posibles problemas que pueden darse en el customer journey puede ayudar a las compañías a comprender mejor la efectividad de su mapeo y comenzar a ver las causas subyacentes de los posibles problemas para atajarlos y darles solución.

¿Qué está causando los problemas en tu mapa del Customer Journey?

Frecuentemente, un diseño incorrecto del customer journey es consecuencia de un alcance de visión limitado durante el proceso de su creación. Si una compañía no trabaja lo suficiente para definir con exactitud todas las fases de este proceso, así como para incorporar cada una de las perspectivas, la compañía no será capaz de definir un mapa lo suficientemente detallado y útil.

Asegúrate de que el mapa del customer journey que construyas refleja la opinión provista por parte de tus principales stakeholders, lo que va a proporcionar a tu equipo un mayor conocimiento de los pasos dados por el cliente y que involucran a varios departamentos de la empresa. Recibir la opinión e información de las diferentes áreas de la organización garantizará que ningún área en particular tendrá mayor peso en el diseño del mapa, como puede pasar cuando sólo se tiene en cuenta la interacción del usuario vía redes sociales y se olvidan detalles importantes que pueden aportar desde el servicio de atención al cliente. Según The Customer Framework, mapas del customer journey incorrectos pueden generar diseños que, aunque parezcan completos, en realidad no incluyen aspectos importantes del customer journey. El resultado de ello es la toma de decisión en base a un mapa inexacto, algo que seguramente no vaya a traer los resultados esperados.

Además de garantizar que todos los departamentos y equipos estén implicados en el diseño de este recorrido del cliente, no excluyas hacer una investigación detallada del que es el elemento principal de tu mapa: el cliente. MyCustomer.com señala que independentemente de la cantidad de informaciones que puedas adquirir internamente, conocer la opinión del cliente es fundamental. De esta forma, las empresas pueden obtener importantes insights y perspectivas distintas a las que se consiguen únicamente tomando como referencia el análisis de datos y feedback internos.

Creando un Mapa del Customer Journey preciso

A día de hoy, las empresas pueden utilizar analíticas detalladas para conseguir informaciones sobre cómo interactúan sus clientes con la marca online. Esto permitirá que tu mapa sea más preciso y basado en datos más reales y medibles. Estos datos pueden incluir: interacciones en redes sociales, anuncios, navegación web, llamadas al servicio de atención al cliente y cualquier otro tipo de acción que genere información que los sistemas de analítica puedan recopilar y clasificar.

Un análisis preciso es lo que va a garantizar que tu empresa pueda conocer realmente cómo interactúan los clientes con la compañía para obtener un customer journey más preciso. La consecuencia será que los cambios y mejoras que hagas en tus estrategias van a tener mayor probabilidad de afectar positivamente al negocio y satisfacer de forma más efectiva las demandas de tu audiencia.

Descubre cómo crear customer journey maps eficientes y capaces de identificar los principales pain points a los que se enfrentan los clientes en el proceso de interacción con la empresa en el siguiente post: Cómo descubrir los principales pain points en la relación de tu empresa con el cliente.

Transforma tu Customer Journey

Tras conocer más tu customer journey, vas a querer mejorarla al máximo. Aprende a cómo transformar las experiencias de tu cliente de la forma que más encaje con tu empresa a través de este whitepaper.

Lee “Four Strategies to Transform Your Customer Experience”   Rebeca Pimentel 2018-02-16T12:58:43Z
Categories: CMS, ECM

OSGi Fragment Bundles

Liferay - Thu, 02/15/2018 - 21:54

Okay, in case it is not yet clear, Liferay 7 uses an OSGi container.

I know what you're thinking: "Well, Duh..."

The point is that OSGi is actually a standard and anything that works within OSGi will work within Liferay. You just need to understand the specs to make something of it.

For example, I'd like to talk about OSGi Fragment Bundles. There's actually stuff in the specs that cover what fragment bundles can do, how they will be treated by the container, etc.

The only way that Liferay typically presents a fragment bundle as a solution is for a JSP fragment, but there's actually some additional stuff that can be done with them.

OSGi Fragment Bundles

Fragment bundles are covered in chapter 3.14 of the OSGi Core 6.0.0 specification document.  In technical terms,

Fragments are bundles that can be attached to one or more host bundles by the framework. Attaching is done as part of resolving: the Framework appends the relevant definitions of the fragment bundles to the host's definitions before the host is resolved. Fragments are therefore treated as part of the host, including any permitted headers.

The idea here is that fragments can supplement the content of a host bundle, but cannot replace files from the host. Since the fragment is appended to the host, resources will always be loaded from the host bundle before they are loaded from the fragment.

This is counter to the old way Liferay used to do JSP hooks, where these hooks could actually replace any JSP or static file from the original bundle.  Fragments can only add new files, but not replace existing ones.

So you might now be wondering how the JSP files from a fragment bundle actually do override the files from the host bundle. The answer? Liferay magic. Well, not magic, per se, but there is special handling of JSP files by the Liferay systems to use a JSP file from a fragment before the host, but this is not normal OSGi Fragment Bundle behavior.

What good are they if they can only add files?

Actually you can do quite a bit once you understand that bit.

For example, I was recently trying to help a team override the notification template handling from the calendar-service module, a ServiceBuilder service module for the Liferay calendar. The team needed to replace some of the internal classes to add some custom logic and had been unsuccessful. They had seen my blog post on Extending Liferay OSGi Modules, but the warnings in the blog were taken to heart and they didn't want to go down that road unless it became necessary.

The calendar-service module has a bunch of internal classes that are instantiated and wired up using the internal Spring context set up for ServiceBuilder service modules. So the team needed to provide new template files, but in addition they needed custom classes to replace the instances wired up by Spring when setting up the context, a seemingly difficult ask.

The Spring aspects of the host module in addition to the appending nature of the fragment bundle handling actually makes this pretty easy to do...

First, create a fragment bundle using the host and version from the original.  For this override, it is com.liferay.calendar.service and rather than use a specific version, I opted for a range [2.3.0,3.0.0).

Next I added a new class, src/main/java/com/liferay/calendar/notification/impl/CustomEmailNotificationSender.java.  It was basically a copy of the original EmailNotificationSender class from the same package, I just added in a bunch of log statements to see that it was being used.  Note that I was actually free to use any package I wanted to here, it really wasn't that important.

Next I added a src/main/resources/META-INF/spring/calendar-spring-ext.xml file to the fragment bundle with a replacement bean definition.  Instead of instantiating the original EmailNotificationSender, I just had to instantiate my custom class:

<?xml version="1.0"?> <beans default-destroy-method="destroy" default-init-method="afterPropertiesSet" xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" > <!-- Replace the Liferay bean definition with our own. --> <bean class="com.liferay.calendar.notification.impl.NotificationSenderFactory" id="com.liferay.calendar.notification.impl.NotificationSenderFactory"> <property name="notificationSenders"> <map> <entry key="email"> <bean class="com.liferay.calendar.notification.impl.CustomEmailNotificationSender" /> </entry> <entry key="im"> <bean class="com.liferay.calendar.notification.impl.IMNotificationSender" /> </entry> </map> </property> </bean> </beans>

So while I couldn't replace the old class, I could add a new class and a new Spring configuration file to replace the old definition with one that used my class.

Once the fragment was built and deployed, it was working as expected.  The project at this state is available here: https://github.com/dnebing/calendar-override

Additionally the team needed to alter the template files.  This was accomplished by adding a src/main/resources/portlet-ext.properties file with a replacement property key for the template to replace pointing to a new file also included in the fragment bundle.  Since the original portlet.properties file has an "include-and-override" line to pull in portlet-ext.properties, when the fragment bundle is appended to the host the replacement property key will be used and the new file from the fragment bundle will be loaded.

What Else Can I Use Fragments For?

While I don't have working code to demonstrate each of these, the working example makes me think you can use a fragment bundle to extend an existing Liferay ServiceBuilder service module.

Since ServiceBuilder modules are Spring-based and the default Spring configuration declaring the service is in META-INF/spring/module-spring.xml, we can use a fragment bundle to add a META-INF/spring/module-spring-ext.xml file and replace a default wiring to a service instance to a custom class, one that perhaps extends the original but overrides whatever code from the original. Spring would instantiate our class, it would have the right heirarchy and should make everything work.

This wouldn't work for services from portal-impl since they are not loaded by OSGi ServiceBuilder host modules, but it should work for those that are deployed this way.

Another idea is that it could be used to override static .css and/or .js files from the host bundle. Well, not override per se, but introduce new files that, in addition to a Configuration Admin config file, could use the replacements in lieu of the originals.

So, for example, calendar-web has a /css/main.css (actually main.scss file, but it will be built to main.css) file that is pulled in by the portlet. We could use a fragment bundle to add a new file, /css/main-ext.scss file. It could either have everything from main.scss with your changes or it could just contain the changes depending upon how you wanted to manage it going forward.  As a new file, it could be loaded if the portal was going for the file.

The original file is pulled in by the portal due to the properties on the CalendarPortlet annotation:

@Component( immediate = true, property = { "com.liferay.portlet.add-default-resource=true", "com.liferay.portlet.css-class-wrapper=calendar-portlet", "com.liferay.portlet.display-category=category.collaboration", "com.liferay.portlet.friendly-url-mapping=calendar", "com.liferay.portlet.header-portlet-css=/css/main.css", "com.liferay.portlet.icon=/icons/calendar.png", "com.liferay.portlet.preferences-owned-by-group=true", "com.liferay.portlet.preferences-unique-per-layout=false", "javax.portlet.display-name=Calendar", "javax.portlet.expiration-cache=0", "javax.portlet.init-param.copy-request-parameters=true", "javax.portlet.init-param.view-template=/view.jsp", "javax.portlet.name=" + CalendarPortletKeys.CALENDAR, "javax.portlet.resource-bundle=content.Language", "javax.portlet.security-role-ref=administrator,power-user,user", "javax.portlet.supports.mime-type=text/html" }, service = Portlet.class ) public class CalendarPortlet extends MVCPortlet {

So we would need the portlet to use a new set of properties that specifically changed from /css/main.css to /css/main-ext.css. This we can do by adding a file to $LIFERAY_HOME/osgi/configs/com.liferay.calendar.web.internal.portlet.CalendarPortlet.cfg file. This file format as defined here: https://dev.liferay.com/discover/portal/-/knowledge_base/7-0/understanding-system-configuration-files and basically allows you to create a file to replace configuration property key values w/ custom versions.

So in our file we would add a line, com.liferay.portlet.header-portlet-css=["/css/main.css","/css/main-ext.css"]. This is the format for including both files, if you just wanted the one file it would simply be com.liferay.portlet.header-portlet-css="/css/main-ext.css". This file would need to be manually deployed to the osgi/configs directory, but once it is done and combined with the fragment bundle, the main.css file and main-ext.css file would be included.

This is the same kind of process that you would use to handle static javascript files pulled in by the portlet's @Component annotation properties.

Conclusion

So OSGi Fragment Bundles can be used for things beyond simple JSP fragment bundles.

I'm hoping what I presented here gives you some ideas on how you might solve problems that you're facing with "overriding" Liferay default functionality.

If you have some ideas, please share below as they may be helpful to others struggling w/ similar issues.

 

David H Nebinger 2018-02-16T02:54:31Z
Categories: CMS, ECM

"Customize your Database with Custom Fields and Profiles" on-line training - Feb. 22nd

CiviCRM - Thu, 02/15/2018 - 18:39

Cividesk has created an on-line training session to guide you through the basics of creating custom fields and to show you how to use profiles to gather custom data from contacts through the creation of an on-line form. When you leave this class, you'll be able to customize CiviCRM to gather and store data that is unique to your organization, as well as better understand the various uses of profiles in CiviCRM.

Categories: CRM

Adding plugins to the Liferay Alloy Editor

Liferay - Thu, 02/15/2018 - 16:52

I have been working on adding CKEditor plugins to the Alloy Editor in Liferay DXP and figured I would share what I found. Specifically I was trying to add the YouTube Plugin. There are some articles online at Liferay but they focus more on packaged or custom developed plugins. I got close streaming the files into the Dynamic-Include, but there is a better way (thanks to Chema Balsas for the help!): The trick is to create a OSGI module fragment.

First we create a new Liferay Module Project Fragment – this module won’t have much in it, its purpose is to add the plugin files to the ckeditor module Liferay has in it’s core modules.

To do this, we download and extract the plugin, rename it to a simpler name – in my case youtube, and copy it into the resources/META-INF/resources/ckeditor/plugins folder:

Now all we need to do is edit the bnd.bnd file and inform the OSGI container of our awesome new plugin and that we would like to add it to the existing ckeditor module:

Bundle-Name: base22-alloyeditor-plugins Bundle-SymbolicName: base22.alloyeditor.plugins Bundle-Version: 1.0.0 Fragment-Host: com.liferay.frontend.editor.ckeditor.web

You can now test that it works by deploying our fragment and seeing if the js file is accessible. Go to http://localhost/o/frontend-editor-ckeditor-web/ckeditor/plugins/youtube/plugin.js and hopefully you see the JavaScript file.

As you can see we are accessing the same path as the standard editors plugins, we just added our own directory to it using the fragment. Powerful stuff.

Now that we have the plugin, we need to let the editor know we want to use it, and where. For this we need to create a module which implements the EditorConfigContributor – there is a good article at Liferay covering this as well.

We create our class and declare it as a component that is a EditorConfigContributor and tell it to configure the Alloy editor:

@Component(         property = {         "editor.name=alloyeditor",         "service.ranking:Integer=1000"},         service = EditorConfigContributor.class )

Next we extend the BaseEditorConfigContributor and override the populateConfigJSONObject. This is where we change the JSON that configures the editor. The JSON object will get passed to us and we will adjust it to include our new button.

As a tip, it is really useful to set a breakpoint in the code and look at the overall configuration as you are working with the configuration.

First, we are going to get the extraPlugins section of the configuration JSON and add our youtube plugin. We also want to make sure the ae_uibridge and ae_buttonbridge are loaded to ensure the CK editor plugin is bridged into Alloy editor.

@Override public void populateConfigJSONObject( JSONObject jsonObject, Map<String, Object> inputEditorTaglibAttributes, ThemeDisplay themeDisplay,     RequestBackedPortletURLFactory requestBackedPortletURLFactory) {     String extraPlugins = jsonObject.getString("extraPlugins");     if (extraPlugins == null) {     extraPlugins = extraPlugins+ "ae_uibridge";     }else{         extraPlugins = extraPlugins+ ",ae_uibridge";     }     if(!extraPlugins.contains("ae_buttonbridge")){         extraPlugins = extraPlugins+ ",ae_buttonbridge";     }     if(!extraPlugins.contains("youtube")){         extraPlugins = extraPlugins+ ",youtube";     }     jsonObject.put("extraPlugins", extraPlugins);

Now that the editor knows about our plugin, we need to add the button to a toolbar. We pull the toolbar from the JSON and add our button to it:

JSONObject toolbarsJSONObject = jsonObject.getJSONObject("toolbars"); if (toolbarsJSONObject == null) { toolbarsJSONObject = JSONFactoryUtil.createJSONObject(); }  JSONObject addJSONObject = toolbarsJSONObject.getJSONObject("add"); if (addJSONObject == null) {     addJSONObject = JSONFactoryUtil.createJSONObject(); } JSONArray buttons = addJSONObject.getJSONArray("buttons"); buttons.put("Youtube"); toolbarsJSONObject.put("add", addJSONObject); jsonObject.put("toolbars", toolbarsJSONObject);

Nothing extraordinary is needed in the Gradle or BND files. Deploy your modules and go edit some web content. Your new button should show where you placed it.

This is another way to use OSGI fragments as mentioned by David Nebinger in his post on OSGI fragments.

Christian Klein 2018-02-15T21:52:27Z
Categories: CMS, ECM

6 Vantagens de Plataformas de Experiência Digital com Herança de Portal

Liferay - Thu, 02/15/2018 - 13:36
Gartner lançou seu primeiro Quadrante Mágico para Digital Experience Platforms e reconheceu a Liferay como um Líder. A análise independente do Gartner avaliou 21 provedores baseando-se na abrangência de visão e capacidade de execução de cada tecnologia, com a Liferay entre um dos quatro Líderes.   O Quadrante Mágico para DXPs substituiu o já reconhecido Quadrante Mágico para Portais Horizontais, processo natural já apontado pelo Gartner através do seu artigo sobre a evolução dos portais em plataformas de experiência digital no ano passado. Plataformas de Experiência Digital (DXPs) fornecem um conjunto de ferramentas para gerenciar experiências que surgiram com a necessidade das empresas oferecerem interações consistentes e conectadas através de todos os pontos de contato, como portais, sites, dispositivos móveis e IoTs.   Conforme apresentado no relatório, DXPs geralmente são originadas de portais ou de  sistemas de gerenciamento de conteúdo (CMS). Tecnologias, incluindo o Liferay DXP, com herança de portal, contam com pontos fortes para conectar negócios tanto internamente como com seu público-alvo.   As seis vantagens apresentadas a seguir de DXPs baseadas em portal podem fortalecer os negócios de maneira única. Enquanto estes elementos podem também ser encontrados em algumas tecnologias originadas de CMS, eles são inerentes a maioria das plataformas de portal e, dessa maneira, contam com uma forte presença naquelas que se tornam DXPs, até em versões iniciais.   1.Capacidade de Integração  Plataformas de experiência digital permitem que empresas realizem sua transformação digital tanto em suas operações internas como nas experiências do cliente que criam. Uma experiência do cliente é considerada excelente quando o cliente consegue alternar perfeitamente a navegação entre distintos pontos de contato, como sites, aplicativos e sistemas de backend, enquanto as empresas coletam dados e fornecem serviços personalizados. Uma empresa deve integrar uma série de sistemas com o intuito de prover interações excepcionais.   DXPs com herança de portal contam com capacidades essenciais para a integração de sistemas de backend, que concede aos clientes, funcionários e outros usuários finais, o acesso a dados que eles precisam em vários sistemas que a empresa utiliza. Por exemplo, dados de clientes armazenados em um CRM ou em uma ferramenta de automação de marketing podem ser unificados e compartilhados através de um DXP com herança de portal. Assim, pode-se economizar tempo e esforço tanto das empresas como dos clientes, ao mesmo tempo em que ajuda as empresas a compreenderem e melhor apoiarem seu público-alvo através dos insights fornecidos por estes dados compartilhados.   2. Foco nas Relações de Longo-prazo com Clientes. Portais são projetados para ajudar empresas a conectarem-se com sua audiência através de interfaces seguras. Isto pode incluir bases de usuários específicas, como clientes que precisam acessar informações e ferramentas integradas às suas experiências. Rivet Logic destaca DXPs com herança de portais como particularmente fortes no apoio às relações com clientes a longo prazo, já que sua capacidade de criar experiências individuais únicas através de logins para apoiar e atender às necessidades dos clientes já é algo estabelecido e fundamental em portais desde que foram criados. Está é uma vantagem em comparação a tecnologias CMS, que foca tradicionalmente em prospectos anônimos.   Liferay fortaleceu uma série de negócios para entender e alcançar seu público-alvo através do uso de portais e DXPs com herança de portal. Por exemplo, o Mercury Insurance Group criou um customer portal para gerenciar cada relacionamento entre cliente e empresa, e fornece componentes de autoatendimento que aprimoram a experiência do cliente. Além disso, a empresa global de TI, Unisys, criou o VantagePoint utilizando Liferay, um portal de serviços corporativos usando funcionalidades de integração para fornecer serviços configuráveis para sua ampla variedade de clientes em todo o mundo. O relatório do Quadrante Mágico do Gartner destaca que departamentos de TI modernos estão encontrando frequentemente como solução DXPs com herança de portais horizontais. As experiências do cliente criadas pela plataforma podem ajudar a aumentar a taxa de retorno de clientes e melhor equipar os times de vendas através de insights aprofundados dos clientes.     3. Suporte ao Ambiente de Trabalho Digital Plataformas de experiência digital atendem uma série de necessidades online, incluindo a habilidade de prover suporte a cada funcionário. Ao alavancar as várias ferramentas e métodos de comunicação já utilizados em portais para funcionários, DXPs com herança de portal podem utilizar-se de métodos já comprovados e transformá-los em ambientes de trabalho digitais. Enquanto CMS e DXPs com herança de portal podem ser utilizadas para criar esses ambientes de trabalho digitais, softwares de portal têm o histórico de ser usado para intranets e áreas de trabalho. Estes cenários incluem interfaces customizadas baseadas nas preferências e atividades de cada funcionário, interfaces mobile-friendly que equipam times em andamento e recursos de gerenciamento de informações que melhoram a forma como uma empresa se comunica internamente. Estes vários elementos são usados em um grau ainda maior em locais de trabalho digitais criados por DXP.   Estes ambientes de trabalho digitais concedem aos times o acesso a uma série de informações fundamentais e ferramentas digitais que os ajudam a melhor completar suas atividades e atender às necessidades dos clientes. Com a flexibilidade de uma DXP, os ambientes digitais podem ser acessados através de diversos dispositivos, de maneira que cada funcionário possa encontrar o que ele precisa a qualquer hora. Com o uso de DXPs, as empresas estão renovando seus portais e intranets com o intuito de trazer o mesmo nível de cuidado e personalização dos clientes para funcionários em um ambiente de trabalho online mais eficiente e útil. Além disso, criar suporte para o local de trabalho para todos os departamentos em uma plataforma única pode eliminar silos da empresa através do compartilhamento de informações e insights.   4. Gerenciando Relacionamentos B2B  Conforme já discutido, portais têm um importante papel nos cenários B2C e B2E. No entanto, eles também são fundamentais para DXPs usadas no contexto B2B.   Muitas empresas B2B utilizavam tecnologias de portal para facilitar as interações ao criar interfaces seguras e úteis para os negócios que eles atendem. Harvard Business Review destaca que os processos modernos de compras B2B estão mais complexos do que nunca, levando a complicações e à falta de satisfação que poderiam ser resolvidos com experiências mais parecidas com a realidade de B2C. Isto traduz-se em uma interface do cliente mais clara e customizada que fornece serviços necessários que atendem a jornada do cliente. DXPs com herança de portal eficientes utilizam as conexões bem estabelecidas criadas pelo software de portal e elaboram uma experiência mais robusta através das suas diversas funcionalidades disponíveis. Desta maneira, empresas B2B podem manter as expectativas e fortalecer as relações com os negócios em uma era onde a competição é muito alta devido às rápidas inovações em experiências online.   5. Gerenciamento Seguro de Dados Insights providos por dados têm papel importante no marketing moderno e nas estratégias de serviço ao cliente para empresas dos diversos tipos de indústria. No entanto, estes dados devem estar seguros contra possíveis brechas para prevenir danos às empresas e às pessoas que confiaram suas informações. Além disso, o público atual gera uma grande quantidade de dados, que são utilizados para ações de marketing altamente personalizadas e estratégias de experiência do cliente. De maneira contrária a softwares de CMS, portais são preparados para suportar uma grande quantidade de usuários e um grande fluxo de informação, que às vezes contém dados sensíveis tanto dos negócios como dos clientes. Assim, DXPs com herança de portais são baseadas em sistemas criptografados e prontos para armazenar e analisar dados para um gerenciamento de informações seguro e perspicaz.    6. Agilidade Digital Conforme destacado pelo Gartner, portais podem ser usados como um framework de arquitetura comum. Esta funcionalidade de uma DXP baseada em portal permite que empresas construam sites e rapidamente reutilize o framework criado para outros pontos de contato. Dessa maneira, os negócios não só asseguram que todos os aspectos da sua presença online são uniformes em termos de funcionalidade e aparência, mas também economiza tempo e dinheiro, evitando uma reconstrução do zero. Ao transformar uma plataforma de experiência digital com herança de portal em uma fábrica de soluções, as empresas podem avançar rapidamente suas estratégias digitais, mantendo o controle sobre a qualidade das experiências individuais.   Potencializando a Herança de Portal com Liferay DXP  Ao nomear Liferay como um Líder, o Gartner ressaltou a flexibilidade e agilidade do Liferay DXP para a criação de experiências altamente personalizadas, a responsividade da empresa e o crescimento orgânico ao lançar novos funcionalidades do produto para atender às demandas dos clientes, e um excelente suporte e experiência do cliente.   O Liferay DXP é construído sobre a herança do Liferay como uma plataforma de portal, usando a tecnologia criada para capacitar a força de trabalho e fornecer aos clientes acesso às informações que mais precisam. Empresas de todo o mundo usaram o Liferay DXP para criar vários aspectos da sua experiência online, incluindo sites, aplicativos móveis e experiências digitais conectadas, além de usar a tecnologia de portal para gerenciar cuidadosamente uma grande variedade de ativos para melhor servir seus clientes e apoiar seus funcionários. Estas vantagens da herança de portal ajudaram a distinguir Liferay DXP no mercado.   Isabella Rocha 2018-02-15T18:36:50Z
Categories: CMS, ECM

Liferay and Docker: Dockerised Liferay Workspace

Liferay - Thu, 02/15/2018 - 12:58
Introduction

In recent times, containers are becoming more and more important in the software lifecycle management, whether we like it or not. The majority of  the leading software companies have already released a Docker version of their products, Microsoft did a huge work to adapt Windows kernel to Docker containers features, many Cloud services sell container-based solutions: containers are everywhere, and we can't just run away.

Also Liferay is playing its part in this. WeDeploy supports a Docker-based deployment and an official guide on how to deploy DXP on a Docker container has been released. We have come quite a journey since the first liferayctl proposal!

But wouldn't it be really nice to work with containers from the beginning of our development process to the last deploy in a production environment? I know that many blog articles, guides and speeches have been made on how to "Dockerise" Liferay, but a complete guide on how to transform our Liferay Workspace in a Dockerised Liferay Workspace, that allows developers to do everything they did before but with Liferay running on its own container, seems to be missing. And this is why I decided to write this blog article, hoping it can help. Enjoy!

Docker in Liferay Workspace

You can find an example of Docker integration in Liferay Workspace on this GitHub repository. It has been tested on a Windows machine running Docker for Windows, but it should work also with Docker Toolbox or with other OSs. Nevertheless, if you will experience some issues while trying it, please report them hereunder.

With this version of the Workspace, you will be able to start and stop a complex container environment, including Liferay 7 CE GA5 and other optional nodes (a separate DB, an Elasticsearch cluster, an Apache frontend, etc.) with just two Gradle tasks. Moreover, a third Gradle task allows you to build a Docker image of your current local environment, for versioning or test purposes or simply to share it with your colleagues or customers.

But the most important thing is that those features come without compromises: you will be able to debug your Liferay container form Eclipse, open a GoGo shell from your terminal, and even to use Gulp watch during theme development. But let's start from the core: the docker-compose file.

Docker Compose for multi-node environments

The core of the Dockerised workspace is the docker-compose.yml file. Even if you plan to run a simple Docker environment, with a single Liferay container, it's anyway better to have a docker-compose file to manage it. This is because you won't have to change anything in your environment start and stop Gradle tasks when you will be forced to use a more complex environment (and you will, be sure). A docker-compose file can manage multi-container contexts, with multiple nodes, networks and volumes: the only limitation will be your local machine processing power. For example you can:

  • Run a separate DB, like MySQL, when Hypersonic is not enough (quite always). In my example repository you will find a commented example on how to add a MySQL node
  • Run a separate Elasticsearch cluster. You will find a great example on how to do that on this Yasuyuki Takeo's blog post
  • Run a Liferay cluster with two or more nodes. You will find a great example on this Antonio Musarra's blog post on dontesta.it

In order to start and stop your environment, all you need to do is to launch the startDockerEnv and stopDockerEnv Gradle tasks, respectively. Those tasks are based on a bunch of additional Gradle properties that can be defined to partially customise their behaviour. Please refer to README.md file in GitHub repository for more details.

Moreover, the docker-compose file defines a list of bind mounts that link your local deployment folders with the container filesystem, so that the stantard Gradle deployment tasks can be used as usual. For the Document Library, a Docker named volume is used instead, in order to persist DL contents when the container is restarted.

Dockerfile for environment snapshot

Another important element of this Dockerised Workspace is the Dockerfile. It allows developers to create a Liferay container that reflects the current local environment, in order to create a snapshot, by simply running the buildDockerImage Gradle task. Such an image can be used for multiple purposes in the different phases of the software lifecycle. For example:

  • As a test environment, maybe in conjunction with a CI tool (Jenkins, Travis CI, etc.). Since containers don't implicitly persist any generated data after they are removed, they are perfect for testing purposes
  • For environment versioning. When you reach a stable version of your code, you can tag it and release both a code archive and a working Docker image associated to that particular version. This can be realised manually, launching the Gradle task, or with an Automated build technique
  • For continuous deployment, again in conjunction with a CI tool. This requires that you can use Docker also in deployment target environments (or at least in a subset of them). The ideal case is when you can propagate the same container from your local machine to production environment, but also less ambitious solutions are possible
  • For WeDeploy deployment. You can add a wedeploy.json file and deploy your image on WeDeploy, following this guide
Liferay Docker containers

Two simple Liferay Docker containers have been realised for this article, in order to provide a starting point to further customisations. You can find them on Docker Hub or on this GitHub repository. In particular, there are:

  • The liferay-portal:7.0-ce-ga5 image, that inherits from openjdk:8 official container and adds a full Liferay 7 CE ga5 installation, exposing port 8080. The aforementioned Dockerfile in Dockerised Workspace inherits from this image
  • The liferay-portal:7.0-ce-ga5-dev image, that inherits from the previous container, adding some features that facilitate the development process. The aforementioned docker-compose file creates a container based on this image

In particular, with the latter image a developer can:

  • Run Liferay in developer mode. The portal-developer.properties file is attached to Liferay
  • Debug Liferay as a Remote Java Application. This image runs tomcat with JPDA enabled and a socket listening on the exposed port 8000. Docker Compose binds such port to the localhost 8000 port, so that a debugger can be attached directly on localhost:8000 (without having to know the container IP)
  • Open a local GoGo Shell. Setting the module.framework.properties.osgi.console property to 0.0.0.0:11311 (instead of the default localhost:11311 value) and exposing port 11311, a remote connection to the GoGo shell is allowed. Docker Compose binds such port to the localhost 11311 port, so that the standard procedure described here can be used

The only thing that really changes between a standard Liferay Workspace and a Dockerised one is how to see Liferay logs. In a standard workspace, they can be viewed on the Eclipse console, while now you have to use the following command from a standard terminal (or Powershell):

docker logs -f [CONTAINER_NAME] Docker Gulp Watch

Here comes the trickiest part. It would be very nice if also frontend developers could rely on the same Dockerised environment to build up Liferay Themes without compromises. Unfortunately, Gulp watch task doesn't work when Liferay runs inside a container. Furthermore, a non trivial amount of customisation to the standard Gulp pipeline is necessary to make it work.

This is why I decided to create a separate npm hook module to handle this integration. You can find such module published here on npm, together with a short description on how to use it with Yeoman generated Liferay Themes.

Basically, this module overrides some Gulp watch and deploy tasks, in order to copy files from a local .web_bundle_build folder to the container file system, using docker cp command. This allows Liferay runtime to succesfully update its packages. Moreover, since this process decouples files managed by Gulp from those handled by Liferay, it seems to solve also some file permission issues that occur on Windows systems and cause Gulp watch to stop working.

Conclusions

We reached the end of this containerised journey.
To sum up, this is an example of how Docker can be integrated into Liferay Workspace, so that developers can rely on all its beautiful features without be constrained to break their habits. I hope that such a guide can be useful to the community. If you have further ideas PLEASE share them hereunder: I hope that this journey is only another step in a much longer one.
Happy Liferay Coding!!!

Iacopo Colonnelli 2018-02-15T17:58:32Z
Categories: CMS, ECM

Outlook 365 CiviCRM Plugin - Looking for funding

CiviCRM - Thu, 02/15/2018 - 04:03

Last month I made a proposal for a client to integrate CiviCRM with Outlook 365. This proposal was rejected because the client did not go for an e-mail migration to Outlook 365. So the need for this plugin was gone.

The plan was that this integration would do the following:

Categories: CRM

CiviNYC 2018 Kickoff at Columbia University

CiviCRM - Wed, 02/14/2018 - 13:28

After many many many months, we had another CiviNYC day last week at Columbia University, thanks to Bashar Makhay (@themak) of the Office of Government and Community Affairs.

Categories: CRM

OSI Joins UNESCO to Grow Open Source Community

Open Source Initiative - Wed, 02/14/2018 - 08:36

Participate in the #OpenTechNights Program today and Win a Free Stay during the FOSSASIA Summit 2018 from the Open Source Initiative and UNESCO

The FOSSASIA Summit 2018 takes place in Singapore from Thursday, March 22 – Sunday, March 25. Open Source contributors can now apply for a free ticket to the event, and accommodation throughout conference. In addition, you’ll be eligible to participate in: A featured workshops, the UNESCO hackathon, and celebrate the 20th Anniversary of the Open Source Initiative. All you have to do is convince us, that you are an awesome Open Source contributor and book your trip to Singapore!

About #OpenTechNights

Developers from all over the world are joining the FOSSASIA Summit. We want to connect established and new Open Tech contributors alike. With the support of UNESCO, the Open Source Initiative, and other partners, we are inviting Free and Open Source Software contributors to join us. Winners will receive free lodging at a shared accommodation in the centre of Singapore, and a free ticket to the conference.

Winners are expected to join the summit each day, to participate in the workshops, and the Hackathon on Saturday/Sunday, March 24/25. We would also hope you can support the Open Source Initiative at their booth.

How do I sign up?

Step 1: Please fill in our form here before February 28, 2018.

Step 2: We will notify all winners within three days of their submission, however judging will begin immediately, and continue until all open spots are filled, so the earlier you apply, the higher your chances to win. Please note, winners will receive free accommodations in the Singapore. Flight and other travel costs are not included and are the responsibility of the attendee.

Step 3: Selected applicants must confirm their itinerary and tickets before March 1st to insure their free stay in Singapore. Earliest check-in possible is Wednesday March 21, latest check-out is Monday, March 26. Please indicate your arrival and departure times in the application form.

Expectations of Participants – Share what you learn

Attendees support volunteers, speakers and participants at the event, and take a shift at the Open Source Initiative’s booth. Let’s bring the spirit of sharing Open Technologies and learning together! Please confirm your participation in the specially featured workshops on Thursday, March 22, 2018 from 9.00 AM – 6.00PM. Attendees participate in the UNESCO Hackathon on Saturday, March 24 (2.00 PM – 10.00PM) and on Sunday, March 25 (9.00 AM – 5.00PM). Attendees help reach out to community members who cannot join us at the event, make tweets, share what you learn on social media, publish photos and put up blog post about the summit.

Apply Now

Apply for a free stay with #FOSSASIA #OpenTechNights supported by the Open Source Initiative and the UNESCO and participate at the FOSSASIA Summit 2018 now here!

More Information

More updates, tickets and information on speakers on our website: https://2018.fossasia.org.

Thank you to our Sponsors

We would like to thank our sponsors whose support enabled this event, and our other activities throughout our 20th anniversary in 2018.

Categories: Open Source

Either Hybrid or Native. Is that the question?

Liferay - Wed, 02/14/2018 - 05:33
In the very beginning of every mobile app project, we can have to face a tough decision: should I go for a native approach to make the most of the device capabilities and optimize the user experience, or should I prefer a hybrid development to make progress faster even though the result may be not as good. And you have to choose either one or the other. A few years ago the answer was quite easy: the hybrid technology was not ready yet (actually, ten years ago it didn’t exist).   Nowadays, the hybrid approach is mature enough to be considered an actual alternative, specially for enterprise apps. Besides hybrid, we also have a slightly different approach, called cross-platform, which consist of using third-party tools and languages that produce native code.   If you need a deeper understanding about native,  hybrid and cross-platform approaches, you can check  this webinar where we talk about it.   So in these days, the decision “native vs hybrid” is a difficult one: each company, project and team have different needs. You need to know the company, the market, the project goals, the team… the context, after all, to make the best decision. And when you know your context, you have to consider several factors. I found companies considering the following factors:
  • Know-how: Is my team able to do a native development both for Android and iOS? or maybe I only have access to web developers. In my opinion this is a critical factor.
  • Technical reasons: Is it possible to do the app without native code? Some apps require a tight integration with the device, and they make the most of sensors and device capabilities (camera, GPS, RFID) Others want a perfect UI with super-fluid and advanced animations and transitions.
  • Political/subjective/trend reasons: my competitors are using native, I read Facebook gave up on hybrid, my colleagues/developers say hybrid sucks... you know. 
Also, this decision has three important characteristics that makes it even more dreaded:
  • It’s a binary decision (almost): your app will be native or hybrid, but it can't be both at the same time. If you go for the hybrid path, it’s difficult to add advanced features that use native (Cordova plugins are an alternative, but not perfect). On the other hand, if you go for the native path, it’s tricky to add hybrid (HTML) content: you need to tweek a lot with embedded WebViews.
  • It’s a final decision, you can’t go back: maybe you want to start fast and small, with a simple hybrid development, and that works great. But a few months later, you need to starting implementing new features in native. You’re done because you need to start from scratch. Most of the hybrid projects regret because at some point, the app is technically limited. Also native projects regret because adding simple features can be difficult and slow.
  • It's a initial decision: you need to make the decision up-front. And that's probably the worst moment to decide (you know nothing, John Snow). It's so risky that the manager responsible for that usually asks for advice more than twice (and that's probably the reason why the Internet is full of articles about "hybrid vs native")
In the last year, we’ve been thinking deeply in this problem, and we believe we found a flexible way to approach mobile development without being constrained by that initial & final & binary decision. 
  • What if you don't need to decide once, at the very begining (decision per-app) and you can decide several times during the life of the app (decision per-feature)?
  • What if you can change your decision without starting from scratch if you think you chose wrong?
  • What if you can combine both approaches instead of choosing one or the other?
If you like this new approach, stay tuned. We really believe we found the sweet spot in the “native vs hybrid” dilemma!   Jose M. Navarro 2018-02-14T10:33:56Z
Categories: CMS, ECM

¿Cómo adoptar el modelo Fast Fashion de forma responsable?

Liferay - Tue, 02/13/2018 - 09:13

El concepto de fast fashion está cambiando la industria de retail.

Desde hace años, en la industria de la moda se ha trabajado para lanzar las nuevas colecciones al tiempo que aparecían las nuevas tendencias. Y, hoy los retailers están trabajando para hacer que los productos de las pasarelas de la moda lleguen a las tiendas en el menor tiempo posible, de forma más rápida que nunca. El resultado es un mercado de retail que responde rápidamente a los cambios en las tendencias, ofrece más de las cuatro temporadas tradicionales y hace que los clientes esperen encontrar los productos en las tiendas sin demora. El ideal moderno del “fast fashion” tiene como ejemplo las tiendas Walmart y Zara, que están acercando las tendencias de la moda de las pasarelas y showrooms a las tiendas en tiempo récord para ofrecer las últimas tendencias.

Sin embargo, recientes estudios han demostrado que a medida que las marcas intentan producir en masa los nuevos diseños, en el menor tiempo posible, la industria de retail está aumentando los residuos, perjudicando a los entornos de trabajo, que se ven afectados por una demanda creciente./p>

La pregunta principal es: ¿Cómo puedes afrontar la adopción del modelo fast fashion de forma responsable respetando a tus empleados y al medio ambiente en general? La solución radica en transformarse digitalmente y mejorar la forma en la que las empresas operan mediante la tecnología moderna de retail.

Garantizar la velocidad en todas las áreas es la clave para una implementación exitosa de las estrategias fast fashion. Mientras que muchas empresas ya aplican esta visión a los procesos de fabricación de los productos y de manipulación de los materiales utilizados, reducir los tiempos en todas las áreas de forma constante y rápida puede ayudar a que tu empresa se mueva con más agilidad que nunca sin causar un daño excesivo, ni malas condiciones de trabajo. Las siguientes estrategias están diseñadas para aprovechar la tecnología moderna de retail para reducir el perjuicio resultante de la operativa de estos negocios, eliminando los efectos negativos que actualmente afectan y se asocian a los retailers. Para que estas mejoras puedan tener un impacto positivo en tu compañía, considera cómo cada una de ellas puede ser aplicada a tu empresa de retail, conforme a sus particularidades.

Explotar el análisis de datos/h2>

Una importante característica del fast fashion es la capacidad de anticiparse con acierto a las tendencias y los gustos de la audiencia. Zara se ha convertido en un referente del fast fashion moderno debido a la puesta en marcha de una estrategia que buscaba comprender mejor los intereses de su público objetivo a través del análisis de datos.

Zara revolucionó el proceso típico de previsión de tendencias y de abastecimiento de los almacenes de las tiendas, sustituyéndolo por una estrategia que consistía en la provisión de una pequeña cantidad inicial del nuevo producto. Después, recopilaba los datos provenientes de las ventas y los comparaba con los SKUs (número de referencia en almacén) del departamento de logística. Además, Zara cuantificaba qué estilos, colores y otros detalles eran los más vendidos, utilizando esa información para llevar a cabo los siguientes diseños y pedidos. El resultado fue un ciclo a corto plazo en el que se eliminaban los estilos menos populares y se enfocaba la producción a aquellos que tenían mayor probabilidad de venta.

Mientras que cada tienda de retail tiene que adaptar su estrategia a sus objetivos en particular, lo más importante es que Zara siempre se centra en los datos y profundiza en los detalles más pequeños con el fin de generar insights extremadamente valiosos. No solo es crucial recopilar datos de tu equipo de ventas y de los inventarios de manera clara y medible, sino también interpretarlos correctamente. El éxito puede significar un inventario optimizado y reduciendo los productos que no son populares entre tu público objetivo.

Optimizar la Entrega

Tal como demuestra la compra de Jet por parte de Walmart, un aspecto importante del éxito del fast fashion es la forma en la que una marca hace llegar sus productos a sus clientes. Si bien el uso efectivo del análisis, como discutimos anteriormente, ayuda a mantener el stock apropiado en los inventarios, los retailers deben hacerlos llegar rápidamente a los clientes para cumplir las expectativas de la era del fast fashion.

A través del uso de Jet, Walmart fue capaz de incorporar un algoritmo de precios en tiempo real en su tienda online, lo que permitió aplicar una reducción en el coste de los artículos conforme se agregaban más productos al carrito de la compra. Pedidos de compra mayores implican menores gastos de envío, tanto para clientes como para la tienda, además de una disminución de desperdicios causados por el proceso de envío. Combinado con otros descuentos, el algoritmo es parte de una estrategia para aumentar las compras online, disminuir los gastos de envío y fomentar la parte online del negocio. Además, la creación reciente del Walmart Pay les permitió a los clientes comprar artículos a través de su dispositivo móvil mientras estaban en la tienda física, facilitando a los usuarios obtener de forma más rápida los productos que desean. Según PYMNTS, el uso de la aplicación por primera vez ha crecido un 31,7% en Junio 2017, con respecto a Marzo del mismo año y sigue demostrando un crecimiento estable de su uso.

Además, otras empresas como Rent the Runway, servicio de alquiler de ropa para ocasiones especiales, ha explotado sus datos y simplificado sus procesos internos para predecir mejor las necesidades de sus clientes y atender a sus deseos de recibir los productos en plazos de un día, con el objetivo de estar a altura de sus expectativas. Algo que han impulsado compañías como Amazon. El envío de productos a clientes en menos tiempo acelera los ciclos de compra, algo fundamental en el fast fashion.

Facilitar la compra

El fast fashion consiste en algo más que únicamente proveer los productos a los clientes lo más rápidamente posible. Es también permitir que estos mismos clientes conozcan, se interesen y compren estos productos rápidamente. De esta manera, los retailers pueden reducir los tiempos entre la creación del inventario y la venta, así como analizar los datos provenientes de los procesos de compra para utilizarlos como apoyo para decisiones futuras.

A día de hoy, los clientes esperan altos índices de usabilidad y procesos de pago rápidos durante la compra online. Además, las experiencias omnicanales de retail acercan más que nunca los procesos de compra online y offline. Mediante el uso de tecnologías de retail para fomentar el interés del cliente por los productos online, y la finalización de la compra en la tienda física, los retailers pueden facilitar y agilizar los ciclos de compra de su público objetivo.

Transforma Digitalmente tu empresa de retail

Satisfacer las demandas actuales del fast fashion no es el único beneficio de la transformación digital para los retailers. Ya sea ofreciendo a los clientes la experiencia online que esperan o equipando a tus empleados con las herramientas y tecnologías modernas necesarias, la transformación digital del sector retail puede tener numerosos beneficios. Lee más sobre la temática y empieza tu proceso de transformación digital.

Lee el Whitepaper   Maria Sanchez 2018-02-13T14:13:33Z
Categories: CMS, ECM

Adaptive Media Released

Liferay - Tue, 02/13/2018 - 06:32

I am very pleased to announce the first release of Adaptive Media available for Liferay 7 GA5 and Liferay DXP. Below you can find the links to download the app from Liferay Marketplace.

Download Adaptive Media DXP Download Adaptive Media CE
What is Adaptive Media?

In case you are unfamiliar to Adaptive Media and you want to know more about how this powerful app can help you to deliver the right content to the right device I recommend you to read our official User Guide and Developer Tutorials.

In case you prefer a video, you can also see the presentation of the feature in Liferay Devcon 2017.

This is a sneak peak of what you can do with Adaptive Media:

The Adaptive Media app tailors media in your portal to the device consuming it. Since users often consume media on multiple devices that have different screen sizes and capabilities, you should make sure that your portal presents that media in a manner suitable for each device.

The source code of Adaptive Media is available in GitHub


Installation

Adaptive Media can be installed from Liferay Marketplace. The app is composed of multiple modules and all of them are installed by default, although some of them are optional. You can see a list and description of the module in the documentation. 

If you are installing Adaptive Media in a Liferay installation that has images added in Documents and Media you might want to run some upgrade commands using the Gogo console.

If you are interested in supporting animated GIFs you will also need to install a separate command line tool named Gifsicle as described in the documentation.

Adaptive Media installation in Liferay Portal 7 GA5 requires an additional step. Please make sure to read the installation documentation if you are using this particular Liferay Portal version.
Kudos

Special thanks goes out to the Collaboration Team (formed by devs, qa engineers, designers, product managers, tech writers, etc) and for everyone in the community sharing their feedback and tests with the Adaptive Media early access beta program.


Bug Reporting

If you have found a bug in the Adaptive Media released you car report the issue on issues.liferay.com and select "Adaptive Media" as the affected component. 


Known Bugs

In Liferay Portal 7 GA5 deploying Adaptive Media will throw some console errors. These errors go away after restart and they have no functional impact on the application. This is reported in LPS-76624

Sergio González 2018-02-13T11:32:56Z
Categories: CMS, ECM

PrestaShop loves you! &lt;3

PrestaShop - Tue, 02/13/2018 - 05:49
Obviously. We met in 2007, united by two passions: e-commerce and open source.
Categories: E-commerce

2018 French Finance Law No. 2017-1837 of 12/30/2017

PrestaShop - Mon, 02/12/2018 - 11:05
Yes, this does concern e-commerce  DOES NOT CONCERN:
Categories: E-commerce

My experencies at the Sprint: Form Processor and Action Provider extension

CiviCRM - Mon, 02/12/2018 - 08:03

Last week we had a Sprint in the wonderful city of Brussels. This blog post is a recap of what I have been up to.

Form Processor

I started the sprint to work on a new extension the form processor.  This idea came to my mind as I had a few clients at which I had to develop a custom api for data coming from their website (in those cases CiviCRM was separated from the website). And my idea was that I wanted to give system administrator and implementers a tool in which they could create those kind of API by themselves. So the form processor was born.

Categories: CRM

Predictions for 2018

Drupal - Sun, 02/11/2018 - 11:35

We have had a tradition since 2005. Every new year we have a posting on the predictions for the year ahead for our beloved open source CMS and community. Sometimes this posting went up in december, sometimes in January. But never in February.

Time to start a new tradition, predict the year ahead from February on :-)

Leave a comment if you do think that blogging will get hip again, RSS will gain new ground. What will the roll of the Drupal Association be in the new year? Where will the next DrupalCon be? Will the community grow and in what direction? API first, customer first, mobile first?

Polish your crystal ball and tell us what the future of Drupal wil be.

If you need some inspiration, take a look at 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015.2016 and 2017.

And yes, this posting was once month late. Apologies. Feel free to predict when the new prediction posting will go up on d.o :-)

Categories: CMS

CiviCRM Pivot Report

CiviCRM - Fri, 02/09/2018 - 12:56

Aloha, everyone! As you all know, CiviCRM is shipped with a lot of useful report templates for each CiviCRM entities. You can use these templates to create difference report instances to interrogate your data.

Categories: CRM

Using and improving the Documents extension (a Drupal extension by CiviCoop)

CiviCRM - Thu, 02/08/2018 - 23:26

CiviCoop have produced a wonderful extension, Documenten, which provides some great new features for adding attachments to Case Activities and storing them in a user-friendly way (a Documents tab on the Contact record), as well as the ability to update files with newer versions of the file. Some of the extensions features were only functioning when Cases and Activities were being created through the Webform CiviCRM feature.

Categories: CRM

Improvements to inbound emails to Cases in 4.7.30

CiviCRM - Thu, 02/08/2018 - 23:00

MEAA are a union organisation in Australia with a very wide brief including both union activism and membership drives, as well as legal services to its members.

They use Cases extensively and we were keen to deliver some improvements to 'inbound email' so that they could include the case id in the subject, and have the email added to the relevant case.

Categories: CRM

Controlling which Activities have Notifications sent to the Assignee

CiviCRM - Thu, 02/08/2018 - 22:25

We have recenting been working with MEAA to build new functionality in to their CiviCRM in order to build their capabilities.

One of the requirements that arose was to be able to set some Activity Types to send notifications to the Assignee without triggering them for all Activity Types.

This feature was accepted by core and is now available in 4.7.30 release.

Categories: CRM
Syndicate content