Assistance with Open Source adoption


4 Ways Sales Enablement (and Marketing) Can Help Sales

KnowledgTree - Thu, 10/23/2014 - 09:35
Sales Enablement is the hot go-to-market topic of 2014-2015. It’s all about equipping sales people with content and tools to help advance opportunities to close. Last week I had the chance to co-present on Sales Enablement with KnowledgeTree customer Brian Groth from Xactly. It was a great session at the Open Lounge during Dreamforce. I’ve summarized the presentation below, and included our slides from the session.

You can also access a recap of Brian’s portion of the session here.

The Challenge of Sales and Marketing Alignment

A classic business problem has long been the sales and marketing divide. Hundreds of blog posts and articles have been written on the topic. We ourselves have written and surveyed extensively on the topic too. It’s now time to move on.

We can move on by looking into the core reasons for the friction and how to solve them. The friction generally stems from a misalignment in terms of goals. So, what are the primary goals of marketing and sales enablement for B2B companies? They’re twofold:

  • First, generate qualified leads that translate into qualified opportunities and won deals.
  • Second, create and deliver sales tools that help sales teams to advance deals through to close.

The sales and marketing / sales enablement divide arises because of misalignments in achieving these two goals. But the good news is that as an industry we’re making great strides on both fronts.

The Rise of Smarketing

Increasingly sales and marketing are no longer two solitudes that stand apart. Instead, they are intimately connected. That’s because it is no longer enough for marketing to generate high lead volumes. Marketing must deliver leads that are qualified, that translate into genuine opportunities.

Sales and marketing increasingly have joint responsibility for revenue numbers

Sales and marketing are now jointly responsible for revenue numbers and are signing Service Level Agreements to that effect. Holding marketing accountable and closely monitoring conversion rates at all stages is vital to helping enable sales teams with truly qualified and prioritized prospects to work.

But What About Sales Enablement Tools?

As an industry we are making great progress on the first cause of the divide. But what about working toward getting great sales tools into sales teams hands. This is where marketing and sales enablement teams can get ahead of the market with a strong focus.

Let’s explore why sales enablement tools are so critical today to address the sales and marketing divide.

The New Sales Funnel

If you’ve ever bought technology for your company you were likely faced with a burning issue that rose to the top of your priorities. After all, you weren’t waiting by the phone for a sales person to call you. Instead you were likely ranking the challenges of your company, and investigating solutions to those problems.

Jill Konrath in her fantastic book Snap Selling discusses the concept of the ‘harried buyer’. That is, a buyer who has so many competing priorities that it is difficult for him to focus on your solution. Adding a new project to an already overwhelmed list is simply not an option. That’s where sales programs like the Challenger Sale have come to the fore. Using content and messages that aim to change a prospect’s mindset and reprioritize activities.

This need to disrupt priorities shows up in how the buyer journey has changed. The sales funnel is no longer a standard, linear progression from interest and awareness to purchase. Instead, there is a great deal of information gathering. Buyers may trial your product. They may pull in other vendors to compare and learn. They may go to trusted friends and advisors for additional opinions. So, sales and sales enablement need to support buyers throughout this complex journey.

The complexity also means that there is no longer a clear hand-off of a lead between sales and marketing. Marketing increasingly is nurturing and advancing prospects through the entire sales process. That’s why there’s an increased focus on conversion rates rather than simple lead numbers. It also means that sales and marketing have to collaborate more than ever.

If we combine these two topics:

  • Sales enablement is critical to advancing deals
  • Sales and marketing must collaborate to support the changing buying cycle

…then we need to understand how sales enablement and marketing can support the new sales process. I’ve broken the ways into 4 key elements. Let’s take a look.

1. Sales Enablement Must Support Consensus Buying

The changes described above are symptomatic of fundamental shifts that are happening under the covers in the enterprise:

20 influencers are involved in the average B2B sale

Interdependence: Just like sales and marketing are increasingly connected — finance and legal, manufacturing and services, and other teams are less atomic in nature. So, cross-departmental buying teams are now more apt to be formed to make buying decisions that affect multiple teams.

Get It Right: With increased time pressures there’s less latitude to get things wrong. Buyers want to ensure that they are making the right choice the first time around. Yes, there is an overall tendency toward testing and failing quickly. But time pressure means fail quickly, yes, but succeed early.

This has led to a rise in consensus buying. In fact, studies from sales analysts CEB show that B2B sales often involve buying teams of 20 people or more.

For a sales person, it’s difficult to engage 20 people in a purchase. If you’ve ever been in a sales process and had someone say “we’ll huddle offline as a team” or “we’ll discuss internally” that likely is because there are multiple decision makers internally that need to be brought together.

Sales people can’t always be part of those offline discussions. So, how can they influence conversations when they’re not around? It’s about the messages that you equip your champions with.

95% of B2B purchase decisions are directly influenced by content

According to Demand Gen Report up to 95% of purchases are directly influenced by content. Presentations, case studies, eBooks, and other sales content and sales tools are a key part of the ‘offline’ decision process. So, if you’re in sales you need to ask whether you are sending messages to your champions that can influence the 20 decision makers when you’re not in the room.

And if you’re in sales enablement, have you equipped sales teams with the content and tools that they need to generate that influence?

2. Sales Enablement Must Build Trust in Every Conversation

B2B sales people are generally asking their buyers to break the status quo or reorient their internal priorities. So there is something of a leap-of-faith on the part of the buyer. We’ve seen the rise of social selling as a way to support trust development. That is, by giving away value (like valuable content) to buyers and prospects, sales people can build trust that encourages forward movement in the sales process.

61% of sales people add no value to the sales process, according to enterprise buyers

Forrester’s sales enablement group conducted some fascinating research about sales teams. They found that 61% of enterprise buyers thought that the sales people they work with added no value to the sales process. That’s a staggering number. Low-value sales people won’t be invited into closed door sessions. They won’t be invited back on second sales calls. And deals that are close, are going to be deals that are lost.

Building trust is a based on many factors. One that sales enablement teams can quickly influence is by equipping sales teams with effective content and sales tools. Speaking to one company, they told me that a colleague would send the same “manufacturing industry” case study to prospects over and over again. No matter what the industry, persona, or sales stage was. That’s clearly not a recipe for building trust or status as a thought leader with your prospects.

Look at the content that you share (or your sale enablement team provides you to share). Ask yourself, if a sales person shared that content with you, would you call them back? Sales enablement teams must ensure that the content they push to sales teams builds that trust.

3. Make Every Second Count

Another Open Lounge session, delivered by John Barrows, looked at sales people conversion rates. He looked into how much prospecting is required for each sales person to hit their number. John asked how can sales reps improve their performance. At the most basic level, it is either to increase the conversion rates at each stage, or increase the amount of time available for each activity.

If you are a sales or sales enablement leader, the question becomes even more pressing. You have a large team, and each percentage increase in sales person effectiveness has a massive impact on your number. And each minute that’s reallocated to core selling activities also brings sales.

So, we’ve seen above that conversions rates can be massively affected by using relevant and impactful content. But what about getting more time to sell? What is a major consumer of sales people’s time?

Up to 30% of the average sales person’s time is spent looking for, creating, or customizing content

Up to 30% of B2B sales people’s time is spent looking for, customizing, or creating content from scratch. Many sales people have recognized and taken a leading role in the use of relevant content as part of their sales process. But the struggle to find useful content means they devote too much time looking for the content they need.

If you’re a sales person or sales leader, asking how many times you’ve said “this content doesn’t fit my prospect” or “I can build more relevant content myself”. Or, if you’re in marketing or sales enablement, have you asked “why aren’t sales people using my content?”

If so, then you need to solve the challenge of pushing relevant content to sales when they need it. And you need to measure which content and tools are effective so you can focus resources on creating the most effective content possible.

4. Repeat Sales Enablement Best Practices

In any sales organization there will be A, B, and C players. Sales leaders and sales enablement teams work to increase the performance of all or move on. And that’s even more pressing of an issue in companies that are experiencing hyper growth. New employees coming on board need to quickly be productive and sell effectively.

To do so requires pushing proven best practices to all members of the team. When an action is successful and repeatable, you want all team members to have it as a weapon in their sales arsenal. Aberdeen Group’s research showed that sales organizations that encourage best practices across their team have double the quota attainment of their peers.

You can determine what is your best practice content and messaging through measurement. Understand which eBooks, presentations, and other sales content are associated with advancing leads and closed deals. When evidence shows its effect, promote it to other sales team members and encourage that best practice.

Focus on the changing dynamics of the buyer journey. When you do, sales enablement and marketing leaders can help sales teams dramatically increase their effectiveness by promoting messaging and content that has an immediate impact on revenue.

The post 4 Ways Sales Enablement (and Marketing) Can Help Sales appeared first on KnowledgeTree.

Categories: ECM

Workshop: Construyendo aplicaciones Liferay & OSGi

Liferay - Wed, 10/22/2014 - 23:08

Ayer anuncié durante una de mis charlas en el Liferay Spain Symposium 2014 que estábamos trabajando en la organización de un workshop que versará sobre el desarrollo de aplicaciones Liferay bajo la nueva arquitectura que verá la luz en nuestra próxima release.

¿Cómo funciona?

  • Se celebrará en las oficinas de Liferay España y no existe una fecha concreta
  • Fecha por determinar (dependerá del interés mostrado por la comunidad). Dado que en Noviembre/Diciembre tengo algún viaje pendiente y después llegan las vacaciones de Navidad estaba pensando que a principios del año que viene podría ser una buena opción para todo el mundo
  • Se trata de un workshop gratuito al que todo el mundo está invitado (desgraciadamente nuestra oficina tiene un límite físico :) )
  • Si hay gente interesada podríamos emitirlo a través de un Hangout live (o similares)

¿Qué vamos a tratar?

  • Haremos un pequeño tour sobre los internals de la nueva arquitectura y sus motivaciones
  • Pequeña introducción a los conceptos básicos de OSGi
  • Construiremos una aplicación, desde cero, en la que aprenderemos:
    • Cómo utilizar Declarative Services para construir aplicaciones basadas en componentes
    • Cómo configurar mi aplicación
    • Cómo utilizar Service Builder para construir este nuevo tipo de aplicaciones
    • Cómo conseguir que mi aplicación sea extensible por terceras partes
  • Si el tiempo lo permite, adicionalmente, podríamos analizar los nuevos mecanismos de extensión de Liferay

¿Qué conocimentos tengo que tener?

  • Conocimientos del lenguaje de programación Java
  • Conocimientos básicos de Liferay (muy básicos)
  • No es necesario tener conocimientos previos de OSGi

¿Cómo me puedo apuntar?

  • No tienes más que enviarme un correo electrónico


Por favor, dejad cualquier duda/sugerencia/crítica en los comentarios y vamos a ver si somos capaces de llegar a un consenso entre todos sobre la fecha de celebración del workshop.

¡Muchas gracias!



Miguel Ángel Pastor Olivar 2014-10-23T04:08:27Z
Categories: CMS, ECM

Liferay vs Sharepoint

Liferay - Wed, 10/22/2014 - 15:34

In the ever changing world of enterprise IT, our commitment to innovation, value, and service gives you the assurance that Liferay will meet or exceed your expectations today, and remain a critical part of your future strategic growth. Liferay is compatible with a wide range of infrastructure and enterprise applications, and can provide a seamless experience with your existing investments.

For the past several years, Liferay has had the fastest-growing Java-based portal and compared to sharepoint, we believe that liferay is a better choice for your business because:

    1 - rich out-of-the-box (OOTB) functionality compared to sharepoint: core portal, content management, collaboration, social, mobile, security, responsive design, mobile SDK and more.

    2 -  Liferay has the lowest Total Cost of Ownership (TCO) compared to Microsoft sharepoint. Downloading it and getting it running takes a matter of minutes. And the savings continue through development costs, operational costs, and training/support costs (from the perspective of infrastructure, developers, administrators, and end users). Moreover, All portal products typically need extensions and/or additions to deliver requisite functionality – with Liferay you can simply do more within a specific budget

    3 -  Liferay is a mature Enterprise Open Source (fully supported) product while sharepoint is a closed source. please check the below white paper for the benefits of open source vs closed source:

    4 - Liferay’s hook and extension plugin model allows you to tailor product behavior to your needs without rewriting from scratch and without creating "upgrade". With sharepoint, if an OOTB feature meets 80% of your need, then getting the remaining 20% might be difficult and expensive, or worse, you may need to live with the limitations or recreate the functionality from scratch.

   5 -  Liferay offers you a full choice of application servers, databases, and operating systems to run on, thereby allowing you to leverage your infrastructure and skills investment while with sharepoint you don't have any choice, you are locked with Microsoft and .net framework.

   6 - As an open source portal, Liferay community members are extremely active with increased contributions to forums, wiki posts, blogs, code contributions and activity in special projects teams. The community contributes greatly to the product functionality as well as product information/support.

    7 - Liferay’s open architecture and its open source nature help you avoid lock-in to a single proprietary vendor as what is happening with sharepoint as you get lock with microsoft. Liferay adheres to several specifications including JSR-168 (Java Portlet Specification v1.0), JSR-286 (Java Portlet Specification v2.0), JSR-170 (Java Content Repository Specification), JSR-127 (JavaServer Faces), WSRP 1.0, WSRP 2.0, WebDAV , SAML , and more. it runs in any IT environment, cutting down on costs and leveraging your existing investments of hardware, software, and staff:

Application servers:

 Liferay: GlassFish JBoss, Tcat , tcServer, Tomcat, Weblogic, WebSphere,..
 Sharepoint: Embedded; requires Microsoft IIS Server.

Servlet Containers (stand - alone) :

  Liferay: Jetty, Resin, Tomcat.
 Sharepoint: None.

Operating System:

  Liferay: Liferay Portal runs on any major operating system.
  Sharepoint: Windows only.


  Liferay: Any RDBMS supported by Hibernate.
  Sharepoint: Microsoft SQL Server.

Framework Support:

  Liferay: Struts, Spring MVC, JSF 1.2, Seam, Tapestry.
  Sharepoint:Required custom implementation

Scripting Language Support:

 Liferay: PHP, Ruby, Groovy, Python, JavaScript
 Sharepoint: Required custom implementation


 Liferay: JSR-186, JSR-286, JSR-170,CMIS,WSRP 1.x,WSRP 2.0,JSR-252, WAP
 Sharepoint: WSRP 1.x

  8 - Liferay is based on java while Sharepoint is based on Microsoft .NET.
        - Java is very known for enterprise applications because it has better scalability , security and  performance in the heavy transactional environments.
        - because lot of vendors created different frameworks on the top of java, whenever you use liferay, you have the freedom to chose any framework you want to develop your portlets while
           with sharepoint, you don't have any choice other than what microsoft offer you.
        - experts and communities of developers who know java and much bigger and more mature than Microsoft side.

  9 - Liferay is a very light product (the software is around 200 MB) where you can download and install it in 2 simple steps while Sharepoint is very complex, involve different products to be installed and certain complex steps to follow to start and shutdown the server. sharepoint needs 8 GB minimum of memory to run while liferay can run with only 1 GB.



Liferay’s unique approach to building an open platform, based on open standards, gives you all of the power and flexibility you need.Whether you use the pre-packaged applications, or want to build a customized solution through our enterprise application integrations,Liferay delivers immediate results and long-term value.

Unlike SharePoint, Liferay runs in non-Microsoft environments, is easy to customize, and integrates with your existing applications.Not only is it built with full Java support for sophisticated integration work, Liferay Portal also supports multiple languages and frameworks.On average, our clients see savings of up to 90% over that of commercial competitor pricing.

Fady Hakim 2014-10-22T20:34:26Z
Categories: CMS, ECM

Liferay's Thoughts on the 2014 Gartner Magic Quadrant for Horizontal Portals

Liferay - Wed, 10/22/2014 - 10:52

If you haven’t heard the news yet, Liferay has been named a Leader in Gartner’s Magic Quadrant for Horizontal Portals for the fifth year in a row, and we’ve placed second only to IBM—and well ahead of SAP, Microsoft, and Oracle. We’re really excited about our placement in this year’s report, and so are our partners and customers. At our annual user conference, many people shared that the report validates the choice they made to commit to the Liferay platform for their portal and website initiatives.



You can check out the report here. Here are some thoughts on the broader report and what it says about the market. 


Why WCM Vendors? It’s all about Customer Experience


First, the inclusion of WCM vendors and the emphasis on digital marketing in some vendor offerings points to the overall trend toward personalized online experiences. Nobody thinks of websites, customer portals, and mobile experiences as just channels for pushing out information anymore. Customers expect to interact with companies through these channels, and that’s a huge opportunity for companies to listen to what they’re saying—and respond. 


But the heritage of WCMs is to push information to people, so WCM vendors have needed to add in portal-like capabilities to make content relevant to a person’s context. WCM vendors will continue to try to retrofit portal capabilities to strengthen their ability to deliver content in context, but it’s a lot harder as an afterthought, and without a credible solution for enterprise integration, WCM-based experiences will be limited to the content in their repository. 


As portal vendors like Liferay steadily round out their own content management offerings with content targeting and analytics, we’ll be able to meet digital marketing and customer service needs with websites and portals that provide rich experiences enhanced by information from ERP, CRM, and other enterprise systems. 


More importantly, portal vendors like Liferay are uniquely suited to address the entire customer lifecycle, from prospect to close to customer service. A lot of WCM vendors have completely different approaches to a user when they’re anonymous vs. logged in; Liferay’s vision is to have continuity across both anonymous (traditionally WCM/digital marketing) and logged-in (traditionally portal/customer service) experiences. In a world full of information noise, companies that streamline experiences to save customers time and frustration will win their loyalty. 


Liferay: the Lean UXP


Gartner also comments on the trend toward UXPs and Lean Portals, noting that Liferay is more on the lean side of the house and is favored by technical people. That analysis works for now—our goal at Liferay is ultimately to be a “Lean UXP” that incorporates everything you need to create and manage rich multi-channel experiences without the bloat of “full UXP” platforms, which can add too much cost and complexity. On the other hand, the problem with just being “lean” is you can end up skimpy. “Lightweight” portal vendors don’t always have a story for the long haul. What do you do after you build that snazzy website with a great UI but no deep integration? Can you add more robust elements like order fulfillment, inventory control or issue resolution that require talking to systems of record? 


But if the lean vendors have gotten one thing right, it’s that portlets and the traditional boxy portal are definitely not the right paradigm anymore for delivering great online experiences. So at Liferay we’ve been building a lot of great stuff for our next release that embraces the trend toward mobile, internet-enabled devices, and independent web applications built on Javascript frameworks. And we’re also responding to business needs like Digital Marketing and Customer Experience Management with features like Audience Targeting that take us well into UXP territory. 


The Trio of Portal Use Cases


Finally, the report rounds out its market analysis with mention of the Social Intranet as a core focus of many portal vendors. It used to be that the employee intranet was a vehicle for downward communication—messages from executive management and company announcements, for example—or for individual transactions like employee onboarding and benefits enrollment. But now we realize that we’ve been missing the voice of the employee, and making our intranets social and collaborative brings that missing voice into the picture. 


Gartner thus reaffirms the core use cases of the portal: public websites (Digital Marketing), service portals (Customer Experience), and employee intranets (Productivity and Knowledge). What all three have in common is that they rely on knowing who your users are and what they need, and they benefit from connecting people with systems and other people to accomplish a goal—and those are the things portals have always tried to do well. 


What's Different This Year?


You may be curious how the 2014 report differs from 2013. New this year in the inclusion criteria that Gartner used to select vendors for the MQ is “search and navigation,” described by Gartner as a function that allows end users and portal administrators to find and discover content and services available through the portal. In addition, vendors must now support clients in more than two industry verticals, adding on to the requirement last year for more than one industry vertical. The requirement for revenue also rose this year, with vendors needing to have achieved at least $6 million in revenue, a higher bar to meet than the $4 million in revenue required last year.


Absent in this year’s market overview is the push made by Gartner last year for the cloud to become a part of portal vendor’s strategies. Last year’s report gave the call: “ ... the cloud is becoming an unavoidable part of the environment upon which portals must provide their services.”


Gartner noted in 2013 that many vendors were targeting business leaders, and this year Gartner seems to validate those efforts. Business leaders are becoming more influential as portal users and decision makers, the report notes. 


An Exciting Time


Looking back on several years worth of Magic Quadrants, perhaps the most exciting thing about 2014 is the sheer breadth of vendors included in the report. In 2010, the portal market was represented by just ten vendors, at a time when we were still thinking the old way about portals: stagnant, contrived dashboards that became information graveyards. We’ve since realized that the internet has completely changed how we interact with each other, and portal technology is one very good way to help companies make customer experiences much more personal. 


You can get the report to read for yourself here. We’d love to hear what you make of this year’s Gartner MQ for Horizontal Portals.


  DISCLAIMER: This graphic was published by Gartner, Inc. as part of a larger research document and should be evaluated in the context of the entire document. The Gartner document is available upon request from

Gartner does not endorse any vendor, product or service depicted in its research publications, and does not advise technology users to select only those vendors with the highest ratings or other designation. Gartner research publications consist of the opinions of Gartner's research organization and should not be construed as statements of fact. Gartner disclaims all warranties, expressed or implied, with respect to this research, including any warranties of merchantability or fitness for a particular purpose. Bryan Cheung 2014-10-22T15:52:31Z
Categories: CMS, ECM

Keeping Tabs on Liferay

Liferay - Wed, 10/22/2014 - 09:36

I'm happy to announce that Liferay has listened to your feedback and created a tutorial on Using Liferay-UI Tabs and Sections. Using Liferay-UI's tabs and section tags are a quick and easy solution to keeping your apps UI clean and well organized with minimal effort. The tutorial covers how you can get the most out of your tabs by using sections to include text, JSPs, or whatever you can imagine. The skies the limit. You'll also learn how to configure attributes for the liferay-ui:tabs tag so that you can customize your tabs to suite your needs. Keeping tabs on your interests has never been easier.

Below you can see an example of a possible tabs UI:

I hope you enjoy this tutorial as much as I enjoyed writing it. Please let us know what you think. Thanks for reading.

Michael Williams 2014-10-22T14:36:41Z
Categories: CMS, ECM

CAS Integration with Liferay6.2

Liferay - Wed, 10/22/2014 - 01:40

CAS Integration with Liferay 6.2

CAS Introdution:

   CAS is an enterprise SSO solution for web applications, whose purpose is to permit a user to access multiple applications by providing credentials only once. When Client visits an application to login to that, then application redirects user to CAS to perform authentication. CAS validates user credentials with LDAP or Database,on success CAS  provides security ticket to application. Application again validates ticket by contacting with CAS server  and gets required user information as CAS Attributes such as Email, userId in the header.

CAS will use LDAP to authenticate user,  apparently  Liferay must  be  configured to same LDAP directory to import users. This tutorials covers below:

  •    CAS Server configuration with LDAP
  •    Liferay Integration with OpenLDAP   
  •    Liferay integration with CAS

1. LDAP Setup:

We use OpenDJ LDAP for this tutorial. Download OpenDJ ( and configured users with password "test" as shown in the diagram:

2. CAS Server setup

  • We use local liferay tomcat server instance to install CAS application. Tomcat shoudl be configured to HTTPS to install CAS, but this tutorials doesn't coverts that part. We can ignore HTTPs warning on CAS.
  •  Download CAS Server3.5.2 release file from and extract to local.
  • Go to cas-server-3.5.2\modules folder and rename the cas-server-webapp.war  file  to  cas-webapp.war
  •  Copy the cas-webapp.war to liferay-portal-6.2-ee-sp5\tomcat-7.0.42\webapps  and start the server. (Remove war file once it deployed). Tomcat should be configured to support HTTPs in production.
  • CAS application by default uses SimpleTestUsernamePasswordAuthenticationHandler which authenticates UsernamePasswordCredentials where the username equals the password.    
  • Open the URL in browser http://localhost:9080/cas-webapp/login   
  • a.       UserName  :
  • b.      Password:

 You should be able to see success message. I configured my tomcat port to 9080.

Configure CAS to LDAP:

  • Stop the server and edit the  file  tomcat-7.0.42\webapps\cas-webapp\WEB-INF\deployerConfigContext.xml  file  and add below bean at end of the file
  • <bean id="contextSource" class=""> <property name="pooled" value="false"/> <property name="url" value="ldap://localhost:389" /> <property name="userDn" value="cn=admin,ou=People,dc=igate1,dc=com"/> <property name="password" value="test"/> <property name="baseEnvironmentProperties"> <map> <entry key="com.sun.jndi.ldap.connect.timeout" value="3000" /> <entry key="" value="3000" /> <entry key="" value="simple" /> </map> </property> </bean>  
  • Add the BindLdapAuthenticationHandler to authenticationManager  to perform authentication with LDAP. Reemove the bean  SimpleTestUsernamePasswordAuthenticationHandler from property authenticationHandlers.                                                                
  • <bean  class="" />
  • Update the authenticationHandlers property with  BindLdapAuthenticationHandler  
  • <bean class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler" p:filter="mail=%u" p:searchBase="ou=People,dc=igate1,dc=com" p:contextSource-ref="contextSource" />
  •   Copy the LDAP dependency  jars to tomcat-7.0.42\webapps\cas-webapp\WEB-INF\lib folder
  • spring-ldap-core-1.3.0.RELEASE  (find this is \tomcat-.0.42\webapps\ROOT\WEB-INF\lib)
  • spring-ldap-core-tiger-1.3.0.RELEASE ((find this is \tomcat-.0.42\webapps\ROOT\WEB-INF\lib)
  • cas-server-support-ldap-3.5.2 (you can find this in \cas-server-3.5.2\modules)


 CAS is configured with LDAP, Test the CAS login by providing sample LDAP user credentials.

Configure Liferay with LDAP and CAS:

Liferay has in built integration with CAS and LDAP, so copy the below CAS, LDAP properties to file and restart the server. Make sure that user is created in LDAP.  LDAP import should be enable to import the users from LDAP to Liferay

1.CAS portal-ext properties

cas.auth.enabled=true cas.import.from.ldap=true cas.login.url=http://localhost:9080/cas-webapp/login cas.logout.url=http://localhost:9080/cas-webapp/logout cas.server.url=http://localhost:9080/cas-webapp com.liferay.portal.servlet.filters.sso.cas.CASFilter=true

2.LDAP portal-ext propertis:

These properties also inlcudes   Reminder questiosn, terms of agreement and Password update properties which are set to false. ldap.factory.initial=com.sun.jndi.ldap.LdapCtxFactory ldap.base.provider.url=ldap://localhost:389 ldap.base.dn=ou=People,dc=igate1,dc=com,ou=People,dc=igate1,dc=com ldap.auth.enabled=true ldap.auth.method=bind ldap.user.default.object.classes=top,person,inetOrgPerson,organizationalPerson ldap.user.mappings=uuid=uuid\nscreenName=givenName\npassword=userPassword\nemailAddress=mail\nfirstName=givenName\nlastName=sn\njobTitle=title\ngroup=groupMembership,groupOfUniqueNames\ndescription=description\nuser=uniqueMember ldap.import.enabled=true ldap.import.on.startup=true ldap.import.interval=10 ldap.import.method=user #ldap.import.method=group ldap.export.enabled=false ldap.users.dn=ou=People,dc=igate1,dc=com ldap.groups.dn=ou=groups,dc=igate1,dc=com ldap.password.policy.enabled=false ldap.error.password.age=age ldap.error.password.expired=expired ldap.error.password.history=history ldap.error.password.not.changeable=not allowed to change ldap.error.password.syntax=syntax ldap.error.password.trivial=trivial ldap.error.user.lockout=retry limit passwords.default.policy.change.required=false terms.of.use.required = false${liferay:screenName}/home users.reminder.queries.enabled=false


  • Open Liferay and click on top  Sign-in
  • You shoud be redirect to CAS application page.


  • Give and click on login, ensure that you provide the LDAP user credentials, now you are now able to redirect to liferay user home page. Click on logut and then you will again redirect to CAS signout.


  • You can observe the console to see the CAS message. 
WHO: WHAT: for http://localhost:9080/c/portal/login?p_l_id=10185 ACTION: SERVICE_TICKET_CREATED APPLICATION: CAS WHEN: Wed Oct 22 10:39:36 GMT 2014 CLIENT IP ADDRESS: SERVER IP ADDRESS: ============================================================= WHO: audit:unknown WHAT: ACTION: SERVICE_TICKET_VALIDATED APPLICATION: CAS WHEN: Wed Oct 22 10:39:36 GMT 2014 CLIENT IP ADDRESS: SERVER IP ADDRESS: ============================================================= Jayaram pokuri 2014-10-22T06:40:19Z
Categories: CMS, ECM

Email Templates Support Sales Conversations

KnowledgTree - Mon, 10/20/2014 - 14:34

Your team knows how effective sales enablement content is. It builds trust and consensus among buyers. KnowledgeTree pushes the most relevant sales enablement content to sales people so they share the most effective piece to use in any sales situation.

What happens next? Traditionally, when a sales person wants to share content they’ll send via email. And that means crafting a note that positions the content for prospects. But that’s yet another task that sales people shouldn’t waste time on.

Standardize Email Messaging Across Sales TeamsKnowledgeTree helps sales people to message effectively. That means discovering the best messages to share with prospects and customers. The best messages means that they’ve been proven to win in different sales situations. Not just that they are generically effective. After all, one message tuned for CIOs at banks may get a lot of use. But is it right for a VP of Sales at a manufacturer? You need to push relevant content to sales teams based on what works in their individual sales scenarios. And one of the most common ways that sales teams message to prospects is via email. So sales enablement requires that sales use the most effective email templates for a given all, even a great case study video can miss its mark if it is shared with a prospect using an off-message email. So, help sales teams to message effectively by linking email templates with content that they support. With KnowledgeTree’s OnMessage technology, sales enablement teams can create and share effective email templates with their sales teams. Instead of depending on sales people to choose which content to use and then guess at how to position it, sales enablement can provide email that puts your collateral in the best light. How Email Templates Get Applied to Content KnowledgeTree focuses on content discovery. And for an email template that supports a piece of content, you want that template linked to the content itself, so there’s no extra discovery step. In the KnowledgeTree Manager tool, sales enablement or marketing professionals can quickly add email templates. Let’s go to the Settings section. Here we can identify which content we want to add a template to. Again, because email templates are most effective when connected with content, we add it and link it to content itself. Here we add a subject and the body of the email. We can add “mail merge” type fields to automate the personalization of the email. Now we’ve set a great, standardized email template that is automatically associated with this content piece. Now, let’s switch to and the perspective of a sales person. From here, KnowledgeTree recommends individual pieces of content that match my opportunity. Then, when I decide to share it with my prospect, I can choose to email it. That will open my default email client and populate the targeted, approved email content into the email. Sales people can adjust that content – but they’ve just saved significant time and effort as they no longer have to think of how to position the content via email. KnowledgeTree also gives marketing insight into the effectiveness of their content and email templates. That lets marketers tune email copy for sales people to boost prospect interest.

wistiaEmbed = Wistia.embed("tl1eyvx9ey", { videoFoam: true });

Instead, KnowledgeTree’s OnMessage technology connects email templates directly with content. That allows sales enablement teams to position each video, eBook, or other content with the best email message.

Now sales people don’t need to hunt for an email template to share. They don’t need to write a non-standard email to send to a prospect. Instead, proven and approved email templates are automatically offered to sales people as they share content. Plus, KnowledgeTree automatically embeds the trackable link to your content in the email. So, reps not only save time, but they also learn when prospects engage with their content.

Sales enablement also gets a boon. They can push best practice email templates to their sales teams. And they can measure the effectiveness of each email. So testing the effectiveness of email is easy. And they can more effectively drive prospects to their best sales enablement content.

The post Email Templates Support Sales Conversations appeared first on KnowledgeTree.

Categories: ECM

DIY: Liferay Events Hacks: Part 2

Liferay - Mon, 10/20/2014 - 11:46
A community challenge for you

Liferay's worldwide conferences generate quite a bit of data, and I am challenging the community: Take this data, and do something more interesting than a boring list of speakers and rooms. Get creative with the data (it's super-easy to digest, see the example code from my first post). Have some fun and show us how creative you can get!

What's In It For Me?

You'll win one of these:

  • Gratitude from our community and recognition from your peers that you are indeed a rockstar hacker (and a small gift from Liferay), or
  • A Tesla1

Not sure which one will be given away yet. We're still working out the details.

The Details

Liferay holds many events throughout the year, and there is a lot of data associated with them. Hundreds of speakers, sessions, and activities across global venues means a lot of data, and in a previous blog post I challenged you to take our open data stream and do something interesting with it. In that post, I documented the data related to sessions, speakers, rooms, maps, activities, sponsors, etc, and gave some example JavaScript you can copy/paste into your browser's developer console to see just how easy it is. And it's all available to you and your creative minds!

Now it's time to look at some even more interesting data: iBeacons!

If you've attended some of our recent Liferay conferences (or you're planning on attending future events), you've probably heard of iBeacons. We've been using them in several events to showcase Liferay as a mobile engagement platform and to provide value to attendees by engaging them with location and time-sensitive notifications (e.g. when walking out of a breakout session, you'll receive helpful followup information about related sessions, and a plea to provide feedback).

The way it works is pretty simple: the Liferay Events mobile app knows about these little Bluetooth transmitters we hide throughout venues (if you look around, you might spot them!). When you walk into or out of range of each beacon, or linger in a given area, the app knows what you're doing and will provide interactive notifications to you based on your movement.

But there's more -- the app also periodically records (anonymous) data regarding how many devices are within range of each beacon. Although this makes Olaf's tinfoil hat buzz with doubt and uncertainty, you (and Olaf) can rest assured we do not record anything private or identifying - it's totally anonymous.

And the best part -- the data is open for you to browse, process, and have fun with. And therein lies this challenge: channel your inner analytic/visualization geek, hook up to the data, and show everyone something interesting! It doesn't have to be enterprise-grade, bulletproof, fully cooked, or ready for deployment into production. But if it's interesting and fun, I'll do my best to show off your creation in our community.

Don't forget, the agenda/speakers/sessions/rooms data is already documented. What follows a description of the iBeacon data.

The iBeacon Data

iBeacon data can be retrieved using a JSON endpoint and specifying the event for which you want data (and optionally a time of day filter to reduce how much data you want or do realtime monitoring). You can also retrieve data for a past event or a current event (e.g. for a realtime dashboard). The event specifiers for 2014 that might have data:

  • lpsf-benelux-2014 (Benelux Solutions Forum)
  • lrfs2014 (France Symposium)
  • lr-nas-2014 (North America Symposium)
  • spain2014 (Spain Symposium)
  • lpsf-uk-2014 (UK Solutions Forum)
  • lpsf-de-2014 (Germany Solutions Forum)
  • devcon-2014 (Liferay Developer Conference)
  • brazil2014 (Brazil Symposium)
  • italy2014 (Italy Symposium)
Example URLs

1. Get all the iBeacon data for the Benelux Solutions Forum:

2. Get all the iBeacon data for the France Symposium, but only starting at 1402583699000 (which is Thu, 12 Jun 2014 14:34:59 GMT)

3. Get all the iBeacon data from the France Symposium between 1402583699000 and 1402583799000 (i.e. from Thu, 12 Jun 2014 14:34:59 GMT through Thu, 12 Jun 2014 14:36:39 GMT, about 2 seconds worth):

The first example should give you 3239 results, the second about 600, and the third about 6 results. Note that some events do not yet have any data, because the event has not yet taken place. But you can use prior events for testing purposes!

The result object is always a JSON object that has a status code (stat) to indicate success or not. The code is either ok (meaning success), or something else (indicating failure). So check the stat code before doing anything else. E.g. here's an error:

{ "stat": "error: something is horribly wrong" }

And here's what success looks like:

{ "stat" : "ok", "size" : <size of result set>, "from": <earliest timestamp of result set, or specific "from" time if you gave one>, "to": <last timestamp, or specific "to" time if you gave one>, "resultSet": <JSON ARRAY OF RESULTS> }

The resultSet is itself a JSON Array.. of results. It looks like:

[ { "id": "8f6ac3d0f22afa59", "date": 1402583703156, "beacons": [ { "proximity": "far", "beacon_name": "Mystery Object 4" }, { "proximity": "immediate", "beacon_name": "Mystery Object 1" }, { "proximity": "far", "beacon_name": "Mystery Object 3" }, { "proximity": "near", "beacon_name": "Mystery Object 2" } ], "regions": ["Venue", "Salon Bonaparte"] }, <more results>,... ]

The entries in each array element of the resultSet:

  • id: A unique id (corresponding to a unique install of the app; if you reinstall the app you get a new id)
  • date: The timestamp of the ping
  • regions: a JSON Array of regions that the device was "in" at the time of the ping
  • beacons: a JSON Array of individual beacons that the device could "see" at the time of the ping. A proximity to each beacon is also included (immediate, near, or far)

To understand what a beacon region vs. individual beacon is, read this blog post!

So there you have it - what are you going to do with it?


1Tesla joke shamelessly stolen from Henry Nakamura


James Falkner 2014-10-20T16:46:30Z
Categories: CMS, ECM

Leveraging OSGi to Create Extensible Applications for Liferay 6.2

Liferay - Mon, 10/20/2014 - 04:38
It was great to participate in the Liferay North American Symposium this year. With hundreds of Liferay users (customers, partners, community members...) and dozens of presentations, it was not only a huge success but also a great opportunity to share user experiences and get your feedback. North American Symposium is over, but Liferay World Tour 2014 is not! There are still many important events in our calendar so you still have the chance to learn about Liferay latest features firsthand.    Julio Camarero and I will be talking about Extensible Liferay Applications in the Spanish Symposium next week and in the Developer Conference in early November. This is probably one of the most relevant features in Liferay 6.2 because it's meant to completely change how Liferay applications are developed. Let's find out how with a simple example:   A Shipping Cost Calculator Suppose you have an online shop and you need an application to calculate the final cost of purchasing an item, including its shipping to destination and considering not only the distance but also the currency, the local taxes and any other particularities. Thus, the final cost would be:   Final cost = [no. of items x item price] + [shipping cost to selected destination]   As a developer you could implement a very complex application that contains all possible shipping destinations. Every time you wanted to add or modify a shipping destination, you’d have to release a new version of your application. And likely your application would be more and more complex with every new release. Alternatively, you could implement just the core functions of your calculator and define the shipping destinations as extensions to your application. This way, if you needed to add or modify a shipping destination those changes would not affect to the core functions, but only to an specific extension. With this approach, the release frequency of your core application as well as its complexity would decrease. Instead, new features would be added through small extensions with their own release frequency. Modular and Extensible Applications: the OSGi Way Probably at this point you’ve already realized the benefits of the second approach: 
  • Simpler maintenance of the core application by reducing its complexity
  • Better performance (only required extensions would be installed)
  • Support for third party extensions
  • New market opportunities (e.g. purchasing shipping extensions)
This type of modular and extensible applications are defined by the OSGi  (Open Service Gateway initiative) specification. Thanks to Liferay support for OSGi since version 6.2, you can now apply this pattern to your plugins.    We recommend you to go through the documentation about OSGi apps in Liferay. For now we’ll show some quick guidelines to apply this pattern to the Shipping Cost Calculator project. You can also have a look to the complete source code of this project.   Required Services for an Extensible Shipping Cost Calculator OSGi services consist of:
  • An interface, defining the service “contract”
  • One or more implementations of the interface
To make our shipping cost calculator extensible, we need two types of OSGi services:   Shipping Extensions: The ShippingExtension interface contains the methods that any shipping extension must implement. Implementations of this interface (e.g. ShippingExtensionUSA) are annotated with @Component, which allows OSGi to dynamically detect a new shipping extension when it’s deployed. @Component(immediate = true, service = ShippingExtension.class) public class ShippingExtensionUSA implements ShippingExtension {   ShippingExtension Registry In order to have an up-to-date list with all the available shipping options, we need to track when these extensions (annotated with @Component) are deployed or undeployed. Through the @Referecene annotation the registerShippingExtension method of ShippingExtensionRegistryImpl is bound to the ShippingExtensionService, so it will be invoked every time an implementation of ShippingExtension is deployed. The unregisterShippingExtension method is called when an implementation is undeployed. @Reference( unbind = "unregisterShippingExtension", cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC) public void registerShippingExtension(ShippingExtension shippingExtension) { _shippingExtensions.put( shippingExtension.getShippingExtensionKey(), shippingExtension); }   Accessing OSGi services from a non OSGi context: the ServiceTrackerUtil We’re almost done. All we need to do is to list the shipping extensions registered by the ShippingExtensionRegistry in our GUI and process the resulting form according to the selected option. Since our GUI is still a Liferay portlet, which is not handled by the OSGi service container (yet), we cannot use the @Reference annotation to obtain the ShippingExtension service. Liferay provides a util class for this purpose: the ServiceTrackerUtil. _shippingExtensionRegistry = ServiceTrackerUtil.getService( ShippingExtensionRegistry.class, bundle.getBundleContext());   You can now test the app. First deploy all modules to your Liferay server, except for the shipping extensions. Then browse any site page and add the Shipping portlet. Notice that the calculator is functional, but it displays no shipping options. Now deploy the shipping extensions one by one, refreshing the page every time. You’ll now see a list with the available shipping extensions. Selecting a shipping extension will modify the form and the final result.     Going even deeper in modularization If you have worked with the sample code, you may have noticed that the core application is not contained in a single project, but in three: 
  • shipping-api: Contains only the interfaces of the OSGi services that make up the app
  • shipping-impl: Contains the implementation of the core OSGi services of the app
  • shipping-web: Contains the user interface of the app
With this approach, the core of application can be easily modified by changing the implementation or the web interface, without changing the public API.    Audience Targeting is the first official Liferay application that is built following this OSGi way, but this is actually how all Liferay apps will be in the next version of Liferay Portal so WELCOME TO THE FUTURE!! Eduardo P. Garcia 2014-10-20T09:38:47Z
Categories: CMS, ECM

Alfresco Helps New Brunswick Public Safety Manage Critical Information

Alfresco - Mon, 10/20/2014 - 03:00


For the New Brunswick Department of Public Safety – a sprawling organization with 26 locations throughout the Canadian province and over 1,100 employees – efficient document and contract management was a real challenge.

The Department handles thousands of formal agreements and contracts that undergo numerous revisions and approval cycles. Simply monitoring review and expiration dates or locating signed copies of the right documents was a time consuming and manual process.

To make things even more complicated, each branch had different repositories, making it almost impossible to find information and keep up with when contracts were up for renewal.

“We needed a shared repository to allow us to better track when contracts were about to expire so that they didn’t lapse,” said Franz Weismann, assistant director of information and technology for New Brunswick’s Department of Public Safety.

After evaluating several ECM solutions, the Department chose Alfresco One based on its open source platform, GISSP-compliancy, and its ability to isolate content domains and enable business owners to directly control access to information.

The Department also operates in Canada’s only officially bilingual province, so support in both French and English was a must, as was strong records management capabilities.

“In addition to all of its high value features, the real prize with Alfresco is its ability to deliver comprehensive records management,” said Weismann. “Once our users are leveraging the solution for collaboration and document management, it’s relatively simple for them to make the jump to declaring records using the familiar Alfresco Share interface.”

Today, 100% of the Department’s employees use Alfresco in some capacity to access information and more than 5,000 documents have been uploaded into the system.

Users can find information much more quickly, redundant information has been reduced, and collaboration has improved. Alfresco was even able to replace the Department’s manual microfilming process, eliminating the need to purchase two new microfilming cameras, an estimated cost of $200K.

To learn more about how Alfresco helped New Brunswick better manage its enterprise content and improve collaboration, read the full case study here. 

Categories: ECM

Working with Liferay User Roles

Liferay - Sun, 10/19/2014 - 00:48
Liferay  have different types of roles for user. So whenever we develop portlet application we may get need to fetch user roles.   The following article will give you more about Liferay Roles   Generally we have following roles in Liferay
  1. Regular Roles/Portal Roles
  2. Organization Roles
  3. Site Roles
  4. Inherited Roles
Portal Role/Regular Roles   Liferay is providing Portal Role/Regular Role for portal level. It’s not specific to anything like Organization, Site or User Group.    This role can be assigned to any user who belongs to any one of Organization, Community/Site or User Group.   Generally when we associate Portal Role/Regular Role s to any user then the association can be stored in Users_Roles Mapping Table.   To fetch Portal Role/Regular Role we can use class and these classes have many service methods which can fetch roles with respect to selected user.   We can use following ways to fetch user Portal Role/Regular Roles   Use RoleLocalSercviceUtil     List<Role> userRoles=RoleLocalServiceUtil.getUserRoles(themeDisplay.getUserId());     Use User Object      List<Role> userRoles1=themeDisplay.getUser().getRoles();     Site Roles    Site Role is one of the types in liferay which is only associated to Site users. This role only we can associate to site users. When we create site role we can use this site role to any used who belongs to any site liferay.   When we associate any site roles to user then association will be stored in UserGroupRole table.When ever we want get site roles then we have to use respective service class to access those roles like we need use class there we can find many service methods.     List<UserGroupRole> userGroupRoles = UserGroupRoleLocalServiceUtil.getUserGroupRoles(themeDisplay.getUserId()); List<UserGroupRole> siteRoles = new ArrayList<UserGroupRole>(); for (UserGroupRole userGroupRole : userGroupRoles) { int roleType = userGroupRole.getRole().getType(); if (roleType == RoleConstants.TYPE_SITE) { siteRoles.add(userGroupRole); } }     Organization Roles   Similar to site role organization role is used for organization users. This role can be associated to any user who belongs to any organization in portal.   When we associate any Organization roles to user then association will be stored in UserGroupRole table.When ever we want get Organization roles then we have to use respective service class to access those roles like we need use class there we can find many service methods.     List<UserGroupRole> userGroupRoles = UserGroupRoleLocalServiceUtil.getUserGroupRoles(themeDisplay.getUserId()); List<UserGroupRole> organizationRoles = new ArrayList<UserGroupRole>(); for (UserGroupRole userGroupRole : userGroupRoles) { int roleType = userGroupRole.getRole().getType(); if (roleType == RoleConstants.TYPE_ORGANIZATION) { organizationRoles.add(userGroupRole); } }    
Inherited Roles   Inherited roles really not existed in the liferay but we can see these roles in the user my account page roles section .these roles specially appear when the user can be member of user group which is assigned a role.   We can say if any roles which associates with User Group and the user is member of respective user group then role can be visible as part of inherited roles section.   Simply we can say that user directly not associated with role instead of that User Group will be associated with role and the user will be member of User Group then the roles are become as inherited role to users who are belong to User Group.   Understanding inherited roles
  • Create User Group (Photography) and assign Users to Photography User Group
  • Create role called Photography Group Member
  • Assign User Group to Role( associate role to User Group)
  Now all users who are belongs to User Group will be get Photography Group Member role as inherited role when we observe here Photography Group Member role is not directly associated with user but role is associated with Photography user group because of this Photography Group Member become as inherited role.   When we want fetch inherited roles first we need to find all User Groups of respective user so that we can fetch all inherited roles.     <% User selUser=themeDisplay.getUser(); List<Group> allGroups = new ArrayList<Group>(); List<UserGroup> userGroups = selUser.getUserGroups(); List<Group> groups = selUser.getGroups(); List<Organization> organizations = selUser.getOrganizations(); allGroups.addAll(groups); allGroups.addAll(GroupLocalServiceUtil.
getOrganizationsGroups(organizations)); allGroups.addAll(GroupLocalServiceUtil.
getOrganizationsRelatedGroups(organizations)); allGroups.addAll
(GroupLocalServiceUtil.getUserGroupsGroups(userGroups)); allGroups.addAll(GroupLocalServiceUtil.
getUserGroupsRelatedGroups(userGroups)); for(int i=0;i<allGroups.size();i++){ com.liferay.portal.model.Group group=allGroups.get(i); List<Role> groupRoles = RoleLocalServiceUtil.getGroupRoles(group.getGroupId()); if (!groupRoles.isEmpty()) { Role groupRole = groupRoles.get(0); out.println(ListUtil.toString(groupRoles,
 Role.NAME_ACCESSOR)); } } %>     Note:   When we work with above code respective Java classes should be import.   The following is sample code snippets which is in JSP page     <%@page import="com.liferay.portal.kernel.util.ListUtil"%> <%@page import="com.liferay.portal.service.GroupLocalServiceUtil"%> <%@page import="com.liferay.portal.model.Organization"%> <%@page import="com.liferay.portal.model.User"%> <%@page import="com.liferay.portal.model.UserGroup"%> <%@page import="com.liferay.portal.model.Group"%> <%@page import="java.util.ArrayList"%> <%@page import="com.liferay.portal.model.RoleConstants"%> <%@page import="com.liferay.portal.service.UserGroupRoleLocalServiceUtil"%> <%@page import="com.liferay.portal.model.UserGroupRole"%> <%@page import="com.liferay.portal.model.Role"%> <%@page import="java.util.List"%> <%@page import="com.liferay.portal.service.RoleLocalServiceUtil"%> <%@page import="com.liferay.portal.service.UserLocalServiceUtil"%> <%@ taglib uri="" prefix="liferay-portlet" %> <%@ taglib uri="" prefix="liferay-theme" %> <%@ taglib uri="" prefix="liferay-ui" %> <%@ taglib uri="" prefix="portlet" %> <portlet:defineObjects /> <liferay-theme:defineObjects /> <% List<Role> userRoles=RoleLocalServiceUtil.getUserRoles(themeDisplay.getUserId()); List<Role> userRoles1=themeDisplay.getUser().getRoles(); for (Role role : userRoles) { out.println(role.getName()); } %> <% List<UserGroupRole> userGroupRoles = UserGroupRoleLocalServiceUtil.getUserGroupRoles(themeDisplay.getUserId()); List<UserGroupRole> organizationRoles = new ArrayList<UserGroupRole>(); for (UserGroupRole userGroupRole : userGroupRoles) { int roleType = userGroupRole.getRole().getType(); if (roleType == RoleConstants.TYPE_ORGANIZATION) { organizationRoles.add(userGroupRole); out.println(userGroupRole.getRole().getName()); } } %> <% List<UserGroupRole> userGroupRoles1 = UserGroupRoleLocalServiceUtil.getUserGroupRoles(themeDisplay.getUserId()); List<UserGroupRole> siteRoles = new ArrayList<UserGroupRole>(); for (UserGroupRole userGroupRole : userGroupRoles1) { int roleType = userGroupRole.getRole().getType(); if (roleType == RoleConstants.TYPE_SITE) { siteRoles.add(userGroupRole); out.println(userGroupRole.getRole().getName()); } } %> <% User selUser=themeDisplay.getUser(); List<Group> allGroups = new ArrayList<Group>(); List<UserGroup> userGroups = selUser.getUserGroups(); List<Group> groups = selUser.getGroups(); List<Organization> organizations = selUser.getOrganizations(); allGroups.addAll(groups); allGroups.addAll(GroupLocalServiceUtil.
getOrganizationsGroups(organizations)); allGroups.addAll(GroupLocalServiceUtil.
getOrganizationsRelatedGroups(organizations)); allGroups.addAll(GroupLocalServiceUtil.
getUserGroupsGroups(userGroups)); allGroups.addAll(GroupLocalServiceUtil.
getUserGroupsRelatedGroups(userGroups)); for(int i=0;i<allGroups.size();i++){ com.liferay.portal.model.Group group=allGroups.get(i); List<Role> groupRoles = RoleLocalServiceUtil.getGroupRoles(group.getGroupId()); if (!groupRoles.isEmpty()) { Role groupRole = groupRoles.get(0); out.println(ListUtil.toString(groupRoles,
 Role.NAME_ACCESSOR)); } } %> Author Meera Prince Liferay Top Contributor Award Winner 2014, 2013 Meera Prince 2014-10-19T05:48:20Z
Categories: CMS, ECM

Are Your Slide Presentations Putting Prospects to Sleep? Try This Instead

KnowledgTree - Wed, 10/15/2014 - 16:09

You’ve spent days (maybe weeks) creating the perfect slide presentation for a big sales meeting with a huge prospect. It’s packed with data, designed with visual interest in mind, and chalk full of interesting information that you’re sure will convince the customer to move forward.

So, when you arrive at the meeting, open up the presentation, and dive into the first few slides, you’re shocked to find a disengaged audience that’s yawning, looking at watches, and frantically tapping away on their smartphones.

You’re toast.

Unfortunately, this is how a lot of sales presentations go. In fact, according to one report, nearly one-third of adults have admitted to snoozing during a slide presentation, and 24 percent suggest they’d rather do anything other than sit through another PowerPoint presentation. Yet, slide presentations are an absolute necessity in the B2B sales world. Done right, they can be an incredibly effective medium for illustrating data, communicating pain points and value propositions, and persuading people to adopt an idea or solution you believe in.

Breathing that kind of life into a slide presentation, however, requires more than simply throwing together a series of bullet points and charts. Instead, it requires a deep understanding of your audience, and contextual detail about their specific needs, pains, and buying stage. Loaded with that information, presentations become much more personal and relevant, and decision makers can’t help but pay attention.

Then again, creating those kinds of presentations likely requires an inordinate amount of time and energy that, frankly, your sales team doesn’t have, right?

Not exactly.

The beauty of sales enablement technology today is that it employs data science to predict which messages and content (i.e. presentation slides) will resonate most in specific sales situations. And it can do all of that without much heavy lifting on the salesperson’s part. In fact, creating the perfect presentation can be done in a few simple steps. From there, the platform matches the best individual slides from archived corporate decks to each prospect, which makes the process of creating a unique, personalized deck incredibly easy.

Help Sales Deliver the Perfect Presentation

wistiaEmbed = Wistia.embed("go2lhhbtmd", { videoFoam: true });

The result? No more generic, standardized decks. Higher presentation engagement. And more, higher quality prospects in the later stages of the sales funnel.

Just as important, this process eliminates the need for sales reps to waste time hunting for the content, insight, data, or context needed to deliver highly impactful, personalized presentations. Instead, that information is directly pushed to them. And at the end of the day, that means reps can spend more time focusing on closing deals and less time worrying about whether a prospect is taking a snooze during their pitch.

The post Are Your Slide Presentations Putting Prospects to Sleep? Try This Instead appeared first on KnowledgeTree.

Categories: ECM

Automatically Generate Custom Presentations – The PerfectPitch

KnowledgTree - Wed, 10/15/2014 - 11:45

Every interaction a sales person has with a prospect should be advancing a deal. That means that each email, presentation, or conversation needs to be relevant and impactful for the prospect. That’s a sales enablement imperative.

Presentations are a primary tool for sales people to connect with prospects. Slide decks summarize and, well, present your value. They’re also critical because they are often shared and reused as prospects sell internally to their colleagues.

Sales enablement and marketing will often produce “buffet” presentations. These massive decks will include dozens or hundreds of slides that sales people can select from. Sales people have to download these decks, determine which slides to use, and then carve out a new deck.

Help Sales Deliver the Perfect Presentation

wistiaEmbed = Wistia.embed("go2lhhbtmd", { videoFoam: true });

That can be such a frustrating experience that sales people will often just use the same presentations over and over again. Which leads to old or ineffective – or untargeted content being used. And that means prospects are simply not going to respond well to your presentation.

Alternatives of just tagging content and hoping sales reps pick the right slides are not productive. Instead, sales enablement pros can rely on KnowledgeTree’s PerfectPitch technology to instantly generate tailored decks for their prospects.

Predict Which Slides to Present

KnowledgeTree takes the guesswork and legwork out of building slide decks. Our PerfectPitch technology automatically builds individualized slide decks for each sales situation. It matches content to prospects’ persona, sales stage, geography, or other element. That means with one click sales people get a generated presentation that matches their prospect’s needs.

If sales teams can’t find the perfect slides, they’ll build their own presentations

PerfectPitch auto-filters slides so only slides that matter to the prospect are selected. Sales people can easily share these custom decks right from the tool. That makes it easy to share the perfect presentation with customers and leads.

KnowledgeTree collects rich analytics about how slides are consumed by prospects. That data gets pushed back into our recommendation algorithm, ensuring that effective slides themselves get used in sales situations. Ineffective or unused slides? Sales enablement knows about it and can make them better.

When sales teams can quickly generate tailored presentations they have more effective conversations with prospects. And that means more sales.

The post Automatically Generate Custom Presentations – The PerfectPitch appeared first on KnowledgeTree.

Categories: ECM

Integrate Amazon search using AWS inside your liferay portal

Liferay - Wed, 10/15/2014 - 11:28

In this blog I will show an example on how we can integrate external applications/services inside your liferay portal.

In my example I created 2 portlets that you can use to integrate amazon search inside your portal page.

Portlet 1: "Amazon Search"

Portlet 2: "Amazon result".

If you want to run this demo  please follow the below steps:

1 -  create your ID from
2 - use the AccessKey Id and register it for Product Advertising API at .
3 - after you upload your WAR file to liferay portal. drag and drop the 2 portlets on a page.

4 - at portlet 1 "Amazon search"  click the "preference" link

5 - add the "Access Key: " and the "Secret Key: " that you create it in the 1st step

6 - this search is for "toys" category, you can edit the code to do search anywhere.

7 - in the search result portlet, you can click on the "details" link to go to amazon page.


you can download the code from here and the WAR file from here

if you will use the WAR file without building the code, please make sure you have JDK 7


Enjoy :-)


Thank you.

Fady Hakim 2014-10-15T16:28:35Z
Categories: CMS, ECM

The Liferay Developer Network: A New Home for Developers

Liferay - Tue, 10/14/2014 - 16:23

At Liferay's North American Symposium, I announced the immediate availability of a new website we've developed specifically for those who use Liferay and write code on its platform. We call this site the Liferay Developer Network.

This site is the new home for Liferay's documentation and, by the time it gets out of beta, Liferay's community pages. After receiving good feedback from our user community for years, we knew that the way we currently publish our documentation had some problems:

  1. Many times, people would search either on or the search engine of their choice, for a topic they needed to know about. Often, the search results would direct them to an article in Liferay's Wiki. The Wiki over the years has become a place where well-intentioned Liferay employees and community members have placed articles describing how to use various features of Liferay. Because the Wiki has been on the site for so long, Google tends to rank its articles pretty high. Even though I've been shouting from the highest turrets that the Wiki is not Liferay's documentation, Google's indexing bot doesn't have ears.

    Unfortunately, however, the Wiki is also where user documentation goes to die. Articles are written and then abandoned by their authors. They then become out of date and actually do more harm than good, by sending people who read them down rabbit trails that were meant for older versions of Liferay. For this reason, we are retiring the Liferay Wiki. In its place, we've created Liferaypedia, a new Wiki for defining Liferay, development, and open source terms.

  2. We've also heard feedback that our current documentation pages are hard to navigate. There's a reason for this: they're just HTML versions of documentation that's organized as books. We've now changed that. The Liferay Developer Network is divided into four sections:
    • Discover: The contents of Liferay's user-oriented documentation have been re-imagined for this section. Front and center is the documentation for Liferay Portal. Using a new interface, it's much easier to find the documentation you're looking for. The Social Office section contains our Social Office documentation. The Deployment section is for Liferay systems administrators everywhere: it contains documentation for installing and configuring Liferay, including clustering.

    • Develop: This is the section for developers. When we designed it, we asked ourselves, Who is our audience, and how will they want to learn about Liferay?. What we learned was that we have a variety of readers: some want to learn in a step-by-step fashion, and some already have a project and want a quick answer to a question. To serve everybody, we created learning paths for developers new to Liferay who want to start from scratch, and we created tutorials for developers in the midst of a project who want to learn something quickly. And, of course, we have our reference documentation so you can look up APIs, tag libraries, DTDs, faces docs, and properties docs.

    • Distribute: Everything developers need to know about distributing their applications on Liferay Marketplace is right here. You can learn all about the benefits of Marketplace, how to get started, view the Marketplace User Guide, and more.

    • Participate: This is the new home for Liferay's community. As the months go by, we'll be migrating more and more of our community pages here. Currently, it contains information on how to contribute to Liferay, the aforementioned Liferaypedia, the feature ideas page, and the feedback forums.

  3. Want to contribute to the documentation like you maybe once did with the Wiki? We haven't left you out. In fact, we welcome contributions to our documentation. And here's the real kicker: because we have a team of people reviewing and updating our documentation, you can do the same thing you did with the Wiki. Submit it and forget about it. We'll take care of keeping the documentation you submit up to date with all the changes that happen to Liferay in the future. You won't have to worry or feel guilty about your submitted documentation again! Instead, you can feel good knowing that you made an important contribution to Liferay, because contributions help our community. There are three ways in which you can contribute:
    • Editing existing documentation. Every piece of documentation on the site contains an Edit with Github button. This lets you go to our documentation repository and use Github's tools to edit documentation right in your browser. When you're finished, you can send a pull request to the liferay-docs repository, and we'll review your updates and push them into the site.

    • Creating new documentation. Every section of the Liferay Developer Network has a corresponding folder in our repository. In that folder is another folder called new-articles. If you have documentation for a feature we don't currently cover, you can submit it right into this folder. You don't have to know where it goes in the rest of our docs or anything like that. We even have a shell script (Mac, Linux) and a batch file (Windows) that lets you preview your Markdown in HTML before you submit it. Submit it to the liferay-docs repository.

    • Contributing to Liferaypedia. We still have a Wiki, but it's for defining Liferay and open source terms. Currently, it's pretty bare, and we need to fill it out. We could use definitions for all kinds of terms that are germane to Liferay, like CMIS and SAML, as well as Liferay concepts like Theme Display and Service Builder.

In closing, I just want to say that we've designed this site for our community of users and developers. All design decisions were made based on feedback from our community. We know we're not perfect, however, and we may not have captured everything you've been telling us over the years. For that reason, and because we're in beta and can still change things, there's a feedback link at the bottom of every page. We welcome your feedback. Don't know where to start? How about starting with our learning paths. This is a brand new effort we're making, the learning paths aren't complete yet, and we want to make sure we're getting it right. Try reading the first learning path and let us know what you think. Will it help beginners get started with Liferay?

Or maybe you're more interested in mobile development on Liferay. We have a whole set of mobile tutorials that you could read and let us know if they're hitting the mark on Liferay mobile development.

Thanks for reading this long post, and thanks for all the great feedback we've heard on our documentation over the years. We hope that the new Liferay Developer Network serves you well as we continue to build it.

Richard Sezov 2014-10-14T21:23:23Z
Categories: CMS, ECM

Securing Liferay Chapter 1: Introduction, Basics and Operating System Level

Liferay - Mon, 10/13/2014 - 15:16

You probably know the basic installation instructions for Liferay Bundles: „unzip and run“ - with this you get to a working Liferay installation in a minute.

While this is great for a quick demo, you might want to do more in case of production setups. This is a part 1 of summary of a workshop held at Liferay's North America Symposium 2014 in Boston. Like in the workshop, it won't give prescriptive information – e.g. you won't be able to hit the „secure“ checkbox – but will have to judge the settings you find for yourself. Also, this guide is not complete: Security is well depending on the general setup, requirements and policies. What works for one is not enough for somebody else. And vice versa. This summarizes things that work for me and that I see working for others. I encourage you to comment on this article if there are aspects that aren't covered but should be taken into account when securing the setup.

The sample setup we'll do (if you want to follow along) uses „Tomcat on Linux with MySql“ as platform. However, I intend to discuss or demonstrate the underlying problems, so that you can still get quite some information out of this series if your platform differs.

Operating System Level

For the purpose of you following along, I'm assuming that the bundle has been deployed to /opt/liferay already. If you want to keep the directory names as they're contained in the zip file, you can achieve this with (pseudocode)

sudo unzip /path/to/your/liferay-portal-tomcat-6.2-ee-sp8-*.zip /opt/ sudo ln -s /opt/liferay-portal-tomcat* /opt/liferay sudo ln -s /opt/liferay/tomcat-7.0* /opt/liferay/tomcat sudo mkdir /opt/liferay/deploy

As you can see, I prefer to have easy pathnames and I've omitted some of the timestamps and version indicators to make the directory structure more readable. If you have multiple versions, the wildcard might do more than you expect.

Typically Production Liferay Systems should listen to port 80 and 443. The easiest way to achieve this is by changing port 8080 to 80 in tomcat's conf/server.xml and then run

sudo /opt/liferay/tomcat/bin/

e.g. run tomcat as root. If you're frightened by this, read on. If you're not frightened by this line, you should: This is the first mistake to avoid. You simply don't want any internet-connected software to be running as root. So the first change is a no-change: Keep tomcat's standard ports (8080) for now – we'll take care of the port issue later – as a first step, we just don't want to run as root.

(Editorial question: Does this statement mislead the quick reader to actually run as root? Should I rephrase this part of the article?)

User Account

To begin, create or identify a specific user account for tomcat. Adjust the actual permissions on the system to minimize access and match your policy. Simplified:

adduser –system liferay

So, in case I mislead you above: It's really vital that you never run an internet connected process as root. Please don't ever do this. We're using an account that is not allowed to log in to the server, e.g. has no shell (-system). Use what's appropriate on your platform.

Database driver

Before actually starting up tomcat and Liferay, let's make sure the database driver is available. For the purpose of this article, I'm using ubuntu and its bundled mysql, along with the JDBC-Driver (sudo apt-get install libmysql-java). This ensures that I do get operating system level upgrades. Naturally this differs for a different database - especially for commercial ones, you still have to take care of driver updates.

sudo ln -s /usr/share/java/mysql.jar /opt/liferay/tomcat/lib/ext/

(mnemonic trick to remember the order of parameters for ln: they're following the same semantics as cp – Duh. I felt stupid when sb told me this. Not that I want you to feel this way as well...)

Starting a Daemon & fixing file permissions

Now you might be tempted to already start up our server (sudo -u liferay /opt/liferay/tomcat/bin/ but it would still signal several issues when writing temporary- and work files: You probably have unzipped the bundle as a different user, so that “liferay” can't write the temp files. As we want to run tomcat as a daemon anyway, we'll create a script to achieve this and have it do the work of preparing the proper permissions. Here's one that works for me – I don't claim particular shellscript-elegance. Use your favorite editor to create /etc/init.d/liferay and make it executable:

# Liferay NAS Symposium Boston 2014 auto-start # ### BEGIN INIT INFO # Provides: liferay # Required-Start: $apache2 $mysql # Required-Stop: $apache2 # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # X-Interactive: true # Short-Description: Start/stop tomcat server bundled with liferay ### END INIT INFO export JAVA_HOME=/usr/lib/jvm/default-java # If Liferay has ever been started (or unzipped) with a different user # account than what it's running as, we need to correct permissions. # # cd /opt/liferay # chown -R liferay data deploy # cd tomcat # chown -R liferay webapps conf temp logs work # cd /opt/liferay/tomcat # run on hardened permissions by default # chown -R root webapps conf ../deploy cd /opt/liferay case $1 in start) # run on softened permissions by default: might need to deploy hooks etc. on startup chown -R liferay tomcat/temp tomcat/logs tomcat/work tomcat/webapps tomcat/conf deploy sudo -u liferay /opt/liferay/tomcat/bin/ ;; stop) sudo -u liferay /opt/liferay/tomcat/bin/ ;; soften) # can and should be run when the server is running. chown -R liferay webapps conf ../deploy ;; harden) # can and should be run while the server is running. chown -R root tomcat/webapps tomcat/conf deploy ;; restart) sudo -u liferay /opt/liferay/tomcat/bin/ sleep 5 sudo -u liferay /opt/liferay/tomcat/bin/ ;; esac exit 0

Note the nonstandard options “soften” and “harden” - we're discussing them later, but maybe it already gives you an idea of what to do with them. (want to contribute to the elegance of this works-for-me script? You might want to add checks to make sure that the directories are actually existing.

Once you have this script (remember to chown root, chmod u+x, chmod go-rwx it)

sudo service liferay start

With this, we've covered most of the OS side of configuration and the appserver side of Liferay has advanced quite some way. An additional issue that I've not yet taken into account is to run with a Security Manager. Also, we'll leave the port issue (we're still running on port 8080) for later.

Note that an even easier way to cover the OS side is to rely on your operating system's methods to update tomcat - e.g. just install Liferay's WAR distribution and dependencies on top of ubuntu's tomcat (in our example). This would be easier, but it would demonstrate less principles of the installation. But it would come with some nice and fancy daemon script.

Remember: This does not claim to be the absolute truth - please add your own recommendations and different policies/practices. Security never has the absolute truth: If I'd show you how to absolutely nail the implementation you'd complain that nothing works any more. Security is a matter of policy, as much as it is a matter of experience, absence of stupid mistakes and some things more.

Future chapters
  • Securing Liferay's configuration
  • Fixing the port 8080 issues
  • more Tomcat lockdown

...coming soon...

Also, another Radio Liferay episode on security is in the can - scheduled to be published very soon.

Olaf Kock 2014-10-13T20:16:46Z
Categories: CMS, ECM

KnowledgeTree’s Sales Enablement Platform Predicts What Messages Help Sales Win

KnowledgTree - Mon, 10/13/2014 - 10:36

New Platform Radically Boosts Sales Results; Uses Data Science to Identify Sales Tools that Support Winning Conversations; Drives Best Practice Messaging Across Sales Teams

KnowledgeTree, the leading sales enablement application vendor, today announced a new platform that uses data science to help sales teams have winning conversations. The platform dramatically boosts sales team effectiveness by predicting and pushing to sales teams best practice messages and content for any sales situation.

Sales enablement is now a science focused on sales team best practices

95% of sales engagements are influenced by content, according to Demand Gen Report. Sales people must use compelling messaging to engage prospects in sales conversations. But up to 30% of sales time is spent searching for or creating their own sales content.

One KnowledgeTree customer, Software AG, doubled its win-rate for a key business unit. Using KnowledgeTree to analyze which content advances leads and opportunities they added millions in dollars to their top-line.

KnowledgeTree’s Sales Enablement platform slashes wasted effort, using real-world data to predict which messages should be used in any sales scenario. The Sales Enablement platform helps sales teams to:

  • Discover the right messages at the right time. KnowledgeTree matches sales, marketing, and training content from any company source with individual sales situations. Relevant messaging is automatically pushed to sales teams, eliminating frustrating searches. Rich analytics track which content is effective in the field, so best practice content gets used by sales.
  • Pitch the best presentation to prospects. KnowledgeTree matches individual slides in corporate decks to each prospect or customer. KnowledgeTree’s PerfectPitch technology automatically generates presentations tailored to prospects and customers. No more non-standard decks; the best customized presentation always gets used.
  • Position your content with best practice emails. Even great sales content is ignored if it’s not positioned right. KnowledgeTree’s OnMessage technology lets sales enablement teams connect email templates with content and measure their results. That helps sales teams quickly use proven emails that drive prospects to content.
[See these new tools in action here.]

“Sales enablement is now a science focused on sales team best practices,” said Daniel Chalef, CEO of KnowledgeTree. “It’s not good enough to hope that sales finds and uses the right messaging. That’s why we built KnowledgeTree. To use data science to push content proven in the field to sales people when they need it most. This scientific approach to sales enablement has yielded massive results for our customers.”

“We chose KnowledgeTree because it dramatically enhances our sales team’s ability to communicate effectively with prospects and customers,” said Bill Dolby, Sr. Director of Sales Operations for RingCentral, the leading provider of cloud phone systems. “Our hundreds of sales reps don’t have to hunt for content or sales guidance. It is automatically pushed to them. That keeps our teams on message, focused on selling, and boosting our sales results.”

KnowledgeTree’s Sales Enablement platform is used by industry leaders like RingCentral, Xactly, Zuora, and more. To see a demonstration of KnowledgeTree in action, visit

The post KnowledgeTree’s Sales Enablement Platform Predicts What Messages Help Sales Win appeared first on KnowledgeTree.

Categories: ECM

Portlet vs Widgets

Liferay - Fri, 10/10/2014 - 22:54

I got this question a lot, specially after the javascript frameworks start to show up in the enterprise applications, what is better, portlets or widgets? why?

-The most obvious different between portlet and widgets is that portlets are a server side component model (designed to execute on the server) and Widgets are client side component models (designed to run in the browser container) but  Portlets can bleed into the client as well in that more and more web interactions use AJAX for improved responsiveness, and also Portlets can emit markup that is basically a Widget to run in the browser container.
Also Widgets do have a problem if you are trying to create a more enterprise type portlet. Most of the organizations have lot of backend data processing and lot of logic or data manipulation required then using a language like Java, or doing that processing on a server vs. on a client is a better choice.

-The bad of Widgets is that their source code is downloaded and visible in the browser. sometimes this is can be a security problem as you expose the logic of your applications to the public.

- Portlets are the most mature of the choices and is covered by second versions of widely adopted Java and Oasis standards.  Widgets are relatively new and you should expect some amount of evolution and possible churn as the industry moves to standardization.
Moreover, Portlet spec is continually being defined and current.  Portlet 3.0 aka JSR-362 ( is being worked on actively by the likes of IBM, Oracle, Apache, Liferay, Red Hat, Vaadin, and others in the expert group listed on that JCP page.

- with widgets, as all the logic in on the browser, you probable will spend more time testing against different browser types based on how much logic you put into the browser.

- Portlets work best when you have interaction between portlets and pages. That’s not to say that widgets don’t pass data parameters around but portal and JSR 286 have matured enough to make it much easier to user.

- Liferay portlets have better UI interaction like mobile responsive design (redesign the UI to fit into a mobile), drag and drop it on the page or move it around. iGoogle doesnt even have this at the level that Liferay have and it is much “clunkier” feeling. Here are some blog posts with some good screenshots:   Hope that will help you :-) Fady Hakim 2014-10-11T03:54:18Z
Categories: CMS, ECM

Why I need a portal ? I can develop anything

Liferay - Fri, 10/10/2014 - 22:45

There is a big different between Liferay, which is a portal framework, and any other J2EE framework (Spring, struts, JSF...), which is just a development framework.

In general, you can do everything with development, but the question is how long it will take you to do that and how much money you will spend on development, maintenance, support...also the quality of the code is not always guaranteed.

With liferay, we make that work for our clients. we have hundreds of the best developers around the world to create liferay framework and all the underline integration and complex services so that our client can concentrate only on the business logic.
Instead of spending years to develop a website and integrated services, you can spend months or even weeks to have a fully functional website.

Moreover, with liferay we support our client in all the development/production phases to make sure they are always have a stable environment with the last security updates and up to date with all the new technology. Which mean for example if a new collaboration technology/portlet standard/ content management feature show up, our client will find this option/standard available in the next release, integrated ready to use with his current environment.

Liferay is a hot deployable environment, which mean in the runtime, you can add any new application/themes/customization...without any downtime or server restart. In any development framework, you will always ask for downtime for any customization/integration.

Also with liferay, we give our client the freedom to use any standard java framework to develop thier application/portlets. If you are happy with AngualrJS, Spring, struts, JSF, jsp, any javaScript framework ..... just go ahead and use it, no need to learn a new framework :-)

Fady Hakim 2014-10-11T03:45:09Z
Categories: CMS, ECM

Getting started with Vaadin in Liferay

Liferay - Fri, 10/10/2014 - 03:54

Greetings from the Liferay Symposium. The event was  great and we have had many good discussions with new and old Vaadin fans over here. And this is no wonder, like you learned earlier Vaadin-based applications took double-win the Liferay Marketplace.

Announcing the new Vaadin Liferay refcard

The updated Vaadin-Liferay refcard is out. It covers the fundamental stuff you need to know when creating portlets in Vaadin: Setting up the project, deployment models, UI composition, Liferay API integration and much more.

Just try it out

While you can get the refcard directly from Dzone, here are the basic steps needed to start development. 

1. Install Liferay 6.2 and Plugin SDK.

These are both available from Liferay website.

2. Install Liferay IDE 2.1 from Eclipse Marketplace

Make sure the liferay-m2e integration gets installed as well, otherwise the Maven project type will not be available in Eclipse wizard.

3. Create new project

Make sure you create and/or choose a Maven profile to your project and the Vaadin framework.

Congratulations! You have the first Vaadin portlet ready. The wizard generates  a full project with an example UI. It can be directly packaged and deployed to the Liferay portal either from the context menu Run As -> Run on server… or using the Liferay maven target liferay:deploy.


To continue building your first portlet, download the Refcard and start experimenting. You’ll notice how easy it is to create nice apps for Liferay with Vaadin.


Download the Dzone refcard

Sami Ekblad 2014-10-10T08:54:28Z
Categories: CMS, ECM
Syndicate content