Assistance with Open Source adoption


Synchronization solutions for the Liferay Calendar

Liferay - Fri, 02/27/2015 - 12:33

Hi everyone 

In my first blog post almost one year ago, I talked about our Calendar Mobile Sync project, a free and open-source plugin which enables users to synchronize their Liferay calendars with Android and iOS devices, Mozilla Thunderbird clients, etc. via the CalDAV protocol. I also introduced our Calendar Connector for Exchange, a solution to synchronize Liferay calendars with Exchange Server and Exchange Online.

During these past months we worked very hard at SMC to make the Liferay Calendar even more connected: not an isolated silo of data hidden in a portal page, but an integral part of the enterprise software ecosystem. We talked with our customers and collected their requirements, and now I'd like to share with you a glimpse of what we baked last year, plus some info about the good things that are currently in the oven 

...but the world of calendar events, sharing and synchronization, with its myriad standards, clients and protocols, is definitely a complex world! So maybe a (very simplified and incomplete) map can help us to understand it a bit better.

As you can see, we developed a series of plugins to open the Liferay Calendar to the outside world, both calendaring servers and clients. We can now seamlessly synchronize Liferay calendars with these servers:

  • Exchange Server and Exchange Online, via our Calendar Connector for Exchange (paid plugin, currently on the Liferay Marketplace)
  • Google Calendar, via our Calendar Connector for Google (free and available on the Liferay Marketplace, but a new and improved version is coming)
  • CalDAV servers such as Zimbra and OpenCRX, via our Calendar Connector for CalDAV (currently in testing)

For the record, the latter two are based on our Asset Sync framework, which is part of our ECM solution for Liferay and is something I'm especially proud of. I talked about it in my session at the 2014 Liferay Symposium in Boston.

This way, Liferay can now display all the events and act as a front-end for different calendaring services, all in one single place and with built-in Single Sign-on. For example, the Calendar portlet can be configured to display the user's personal Google Calendar, the employee calendar which resides in the company's Exchange Server, and more events and activities coming from a CRM software. An example: the marketing department starts a campaign by using the internal CRM and assigns activities to different employees; each employee can see her activities in a page of the intranet portal together with her other work and personal events, and collaborate with her colleagues to find a better planning, organize meetings and so on. And, thanks to our CalDAV synchronization module, she'll be able to interact with her calendars from her mobile device as well.

We invite you to have a look and try our plugins (some of which are free, while others have a 30-day trial period), and give us feedback in the comments of this post or in our Support page, it will be really appreciated

And stay tuned, because more and more very interesting things are in the works, such as the new Address Book portlet we recently developed: not only it has support for multiple address books, contact lists, and two-way synchronization with Exchange Server, but it aims to become the "one-stop shop" for contacts in an organization, thanks to its pluggable structure which can be used to integrate external contact repositories. Of course, our future plans will involve tasks and activities, always keeping the focus on collaboration and integration with enterprise systems and external services. Indeed, these are just our first humble steps towards our vision of a complete PIM solution built on top of Liferay.

Andrea Di Giorgi 2015-02-27T17:33:19Z
Categories: CMS, ECM

Sales Enablement: Growth Market or Hype Bubble?

KnowledgTree - Fri, 02/27/2015 - 08:23

There is no doubt that interest in sales enablement has increased over the past couple years, but is it a passing trend or an enduring business strategy?

If you had Googled the term ‘sales enablement’ in 2000, you would have found about a dozen results. Search today, and you will receive over a million results, demonstrating the increased interest in this business phenomenon. Indeed, a SiriusDecisions report reveals that since 2012 alone, there has been a 19% increase in the sales enablement function. Michael Krauss, president of Market Strategy Group, asserts, “To advance in our organizations, we need to be associated with projects and programs that move the business ahead; one pretty solid bet…is the adoption of sales enablement processes and technologies”.


Why Might Sales Enablement Be a Hype Bubble?

Sales and marketing have held essentially the same roles for years, operating under individual silos with limited communication. Similarly, the gap, or rather friction, between the two departments has always existed. And to an extent, this arrangement has worked, bringing to mind the adage: ‘Why fix what isn’t broken?’ Your key decision-makers may be asking ‘Is this a problem we need to fix right now? Is sales enablement technology a must-have or a nice-to-have?’ However, the drawbacks of this departmental misalignment have become evident in today’s business environment. Failure to work together is hindering corporate performance, thus negatively affecting profit margins and bottom-line. On the other hand, those businesses that place an emphasis on coordination and collaboration are experiencing greater business success. Take for example IBM, which joined sales and marketing together with a channel enablement function and saw shorter sales cycles and lower cost of sales. But just because the big boys in the selling space can achieve success with sales enablement, does that mean that every business can?


So Why Is Sales Enablement Here to Stay?

As Bob Dylan says, ‘The times, they are a-changin’’. No one knows better than sales and marketing how important it is to keep up with an increasingly complicated selling environment and to stay ahead of the competition. Today’s marketplace is characterized by complex business problems that need to be solved and varying degrees of solutions to address them. On top of that, prospects face an often-overwhelming plethora of products to consider in their decision-making process. The role of Sales is to provide guidance to prospects and help potential customers make a savvy business decision, and the function of Marketing is to supply relevant and timely messaging and collateral that supports that process. The selling space is only going to get more complicated, but sales enablement tools tackle all of these challenges head-on.

It Helps Marketing

According to a BtoB Research Insight survey, a key challenge for almost 2/3 of marketers today is achieving faster and more relevant touch points in the marketplace. Marketing works hard to create fresh, timely content, but too often channel partners use outdated, ineffective, and/or off-message content in their sales process. Sales enablement tools help marketing provide sales teams with the right content, at the right time. A built-in feedback loop also tells marketing what’s working and what’s not, so the team can focus their time on creating and updating tried-and-true content that is supported by data-driven metrics.

80-90% of marketing collateral is not considered useful by sales teams

Why is this important? Up to 95% of successful sales are influenced by that sales collateral, but 1/3 of buyers say the content they see is not relevant or useful. Even worse, an American Management Association report shows that 80 to 90 percent of marketing collateral is not considered useful by sales teams, highlighting the need for open communication and collaboration.

And It Helps Sales

65% of sales reps say they can’t find content to send to prospects

Sales people are more effective when they use relevant and current content while engaging with prospects. Up to 30% of the average sales person’s time is spent looking for, creating, or customizing content, and 65% of sales reps say they can’t find content to send to prospects. Further, an IDC study revealed that only 29% of sales reps for B2B products are well prepared for their sales engagements. Unfortunately, prospects are hungry for relevant and current content, and if sales teams can’t supply it, there are missed opportunities for selling. On top of that, sales reps are wasting valuable time that could be spent prospecting and engaging with potential customers. Sales enablement tools help sales teams collaborate with marketing to efficiently deliver the right message at the right time to prospects, converting leads and closing opportunities faster.


Regardless of the size of your organization, the gap between sales and marketing needs to close in order to ensure continued success in this new selling space. According to IDC, failure to align sales and marketing teams within B2B companies costs 10% or more of revenue per year. For a 50 million dollar company, that’s 5 million dollars left on the table!

Sales enablement. We don’t see it going away anytime soon, so jump on board and see how these tools can help increase efficiency and effectiveness in your business today!


The post Sales Enablement: Growth Market or Hype Bubble? appeared first on KnowledgeTree.

Categories: ECM

Filesharing in Liferay

Liferay - Fri, 02/27/2015 - 07:42

Liferay's Document Library is great, you can do so many things! You can upload files, manage them in folders and even share links. But there is a downside: when sharing links the recipient needs either an account or you have to make the file accessible for all guest users. We can't share a file with just a password...oh wait! Now we can!


Ancud FileShare Portlet


This portlet allows you to share files for a given time span and with a password (or without). It will generate a friendly URL, which you can then share with your friends. Within the span, they can download the file using the password (or without if no password was specified).

Moreover, you can share whole folders. Similar to files, you can define a time span and a password, but also the number of possible file uploads for the folder and whether or not the folder's content is visible.

It's easy to use and free! Try it and leave a comment. :)

David Kubitza 2015-02-27T12:42:42Z
Categories: CMS, ECM

Page Engagement: A New Measure Of Success

Liferay - Thu, 02/26/2015 - 13:29

One of the biggest questions in web analytics right now is “How do we know users are reading or looking at our content?” In the past, Liferay has used “page views” and “number of clicks” to determine the popularity of our content, but we’re now learning that these methods do not necessarily determine the success of a page. Page views show how users are navigating through your site, but they will not provide the strongest insight about what they are truly interested in.

Instead, what we should focus on is whether people are reading or engaging with that content. Other than watching where someone’s eyes travel on your page, it sounds difficult to actually know if anonymous users are reading your content.  However, over the last couple months, I have found measuring engagement time to be a strong metric to help assess the overall success of certain content. On its own, “Time on Page" as a standard metric in Google Analytics will not be the best indicator of page engagement. (This metric is measured as a user jumps from page to page but does not consider if the user is active on the page.) A true engagement time should measure if the user is interacting on the page (i.e., scrolling, highlighting, opening tabs, and clicking).

Through a combination of scroll tracking, page engagement*, and external tools, I have been able to determine some of our most popular web pages. We noticed that a majority of the time, the number of page views was relative to the navigation bar, which is not surprising. When that site navigation was associated with a total engagement time, the ranking changed dramatically. Pages we would have glossed over actually started to show significance. Ranking pages based on total time spent shows a truer reflection of their popularity; this helped tremendously in the restructuring of our website.  Although it was only a single piece in the puzzle of web analytics, this fact was rather helpful and insightful.

A Minor Caveat

Just like with anything in web analytics, each metric is only a small spotlight into the bigger picture. One of the limitations to consider in using page engagement is that if it is not paired with other metrics, your results might be skewed. For example, if you have a large body of text that would take longer to read, it might increase the total amount of time spent on that page. But if the piece of content has a low engagement time, then it could possibly indicate that users are not actually reading your content. As a good web analyst knows, just using one metric will not solve all of your problems. Along with engagement time, using bounce rate, page views, number of users, and scroll depth can slowly help paint a picture of our users and their interests.

A Nice Resource

One of the best tools I have found so far to help measure active engagement time is Rob Flaherty’s Riveted. It can easily integrate with Google Analytics and other analytics platform. Also, below, I feature additional resources I have used to learn more about engagement metrics.  In my next blog post, I will be detailing how I used Riveted to show the popularity of our various product pages.

*Often page engagement is referred to when talking about published content (i.e., in regards to blogs and web articles, but I have also found it useful for our product pages on


Additional Sources:

Brett S. Kobold 2015-02-26T18:29:50Z
Categories: CMS, ECM

Water. For Life.

Liferay - Thu, 02/26/2015 - 11:36

Last August, nine of us from Liferay HQ partnered with Living Water and took a trip down to Guatemala to serve the people of La Hermosa, Escuintla. Since 1990, Living Water has been implementing clean water projects in developing and impoverished countries. Over the last 25 years, they have completed more than 15,000 water projects.


Though rich in agriculture, Guatemala has one of the highest malnutrition rates in the world -- almost half of the children are considered chronically malnourished.


In Guatemala, we were led by our friendly and fearless leaders Alvaro, Nestor, and Blanca. We stayed at the Living Water compound in Antigua where a couple of nice ladies cooked delicious meals for us each day. We would wake up at six every morning and drive one and a half hours to the village of La Hermosa in Escuintla.



Within one week, we were tasked to build a new clean water well and teach hygiene to the local residents of La Hermosa. The drill team got down and dirty as they drilled, made cement, and took sediment measurements. The hygiene team got creative and crafty as we taught proper technique for washing hands and feet, and the importance of using the latrine with Señor Jabon. Every morning, the children greeted all of us “teachers” with big hugs and kisses.



Throughout the week, we faced many obstacles including thunder and lightning storms, heat exhaustion, and countless bug bites. But knowing that we were helping build a much needed resource for this community was more than enough motivation to keep us going. We taught the kids about germs and bacteria, and they taught us how to play the “gasolina” game and “arranca la cebolla.” I’ve never had so much fun blowing bubbles and playing musical chairs by banging a hanger on an old, broken camera!



At the end of the week, there was a well-dedication ceremony where the mayor of the city spoke and thanked us for our work. It was such a memorable moment as we saw the crystal clean water pour out from the brand new well.



I’m proud to be a part of a company that values the importance of giving back. With Liferay EVP, we’re empowered to help our local communities, as well as communities around the world. If you’re interested in getting involved with Living Water, visit

Angela Wu 2015-02-26T16:36:36Z
Categories: CMS, ECM

Liferay 7 Milestone 4 - The Adventure is getting serious

Liferay - Wed, 02/25/2015 - 12:32

Did you like what you saw in previous milestones? You didn’t feel there was enough meat to be worth your time? Get ready for Milestone 4 which comes bundled with many improvements and new features. Not only that, with this release we are launching the Liferay 7 Community Expedition program which will allow intrepid adventurers to work with the Liferay developers to find bugs and provide early feedback on the new features.


This milestone includes +130 stories finished since M3 was released. Let’s take a look at the most interesting improvements.

Web Content Management


There are several super-cool feature in the design kitchen, but for now the work is being focused on modularizing and adding new extension points. As a result of these work many portlets have been converted to OSGi modules (RSS, XSL Content, Nested Portlets, IFrame,  Sitemap, Breadcrumb, Tags Navigation, Tags Administration, Categories Navigation,  Categories Administration and Web Content Display) which among other benefits will allow us to improve them much faster than before going forward (since it won’t require a new release of the whole product).


In addition to this, one small frequently requested feature was added: Ability to translate the site and name description.




In a previous milestone I described how in Liferay 7 it will be possible to create custom export/publication configurations. Early feedback has shown that this feature can be so frequently used that in some cases there will be many of them. Because of that we have added the ability to search through the saved export configurations.


Also, we’ve made it easier to select which configuration a site admin wants to use when publishing right from the dockbar:



WYSIWYG Editing  


The highlight of Milestone 2 was Alloy Editor and the feedback we have received so far has been great. However there is one feature that several power users reported missing: the ability to edit the HTML code directly. We didn’t want just to attend this request but we wanted you to be as amazed as many people were with the new WYSIWYG edition. Because of this our frontend gurus have been using their great skills to good use in order to create the best HTML editing experience you’ve seen in this type of environment.


You can check it out in the blogs portlet (which is the first to adopt Alloy Editor, more will come later). You can now see an small icon in the upper right corner to enable the code editor:




When you click it the WYSIWYG editor will be converted to a code editor, with numbered lines and syntax highlight (courtesy of AceEditor).




And of course if you are used to coding with a dark background (quite common these days) we have you covered as well. Just click on the small moon icon in the upper right corner:




But this is not all. Several of us thought that for certain cases you want more space (the full screen) to do the editing. And since we are just making a wish list here, what if you could preview the result as you are typing your code? … You have it :)


Pretty neat, right?

We are quite proud of the result and hope you like it. We actually got so excited about the result that we might take it a bit further, but I will keep the surprise until next milestone.




In Milestone 3 we presented the new out of the box support for geolocalization. We received some pretty good feedback that is making us rethink the feature backend a little bit. While we do that we have improved the presentation logic so that the map shown to geolocalize the assets is configurable to be OpenStreeMap, Google Map or a custom implementation.


Document Management


Google Docs can now be linked inside the Document Library alongside other documents. When this feature is enabled a new option appears in the Document Library to add a Google Doc. A dialog will appear letting you browse your Google Drive and choose a document to include in the Document Library. The document can also be edited from the Document Library.


Collaboration Suite


Three small but useful improvement were made to our collaboration suite:

Developer oriented improvements


To finish I’d like to highlight a few new extension points and API improvements for developers:

  1. Ability to add custom icons or menus to the portlet decoration (aka portlet box or portlet borders).

  2. New API layer that allows manipulating form definitions and values as objects, instead of having to manipulate the underlying XML directly.

  3. Implemented the capability of adding new field types for DDM through OSGI modules (See the Text type for an example). We hope to see a lot of third party types.



That’s it, if you haven checked previous milestones I hope this large list motivated you to go to the downloads page for Milestone 4 at sourceforge and get it. If you want to get really involved in testing it and giving feedback, check the Liferay 7 Community Expedition program and join many other enthusiastic explorers :)


PS: I'd like to thank Esther Sanz for all her help gathering the data presented at this blog. Without her I wouldn't have made it on time :)

Jorge Ferrer 2015-02-25T17:32:50Z
Categories: CMS, ECM

Push Winning Content from SharePoint to Sales Teams

KnowledgTree - Wed, 02/25/2015 - 09:41

Marketing and sales enablement content is a critical part of any sales engagement. So it’s vital that your sales team can quickly access it. That’s why you’ve invested in a portal or content library like SharePoint.

To get the most out of your investment in SharePoint you want user adoption to be high. After all, you’re storing great materials like case studies, white papers, and infographics that can influence prospects. And you might also have libraries of competitive information, product details, and training guides that help sales teams to be more effective.

All of that material is powerful. But it’s often a challenge to get sales teams to use them. To address user adoption you need to get the right content pushed to sales people at the right time. That means taking a proactive approach to pushing content to sales teams. How? It’s easy.

Push Recommended SharePoint Content to Sales TeamsContent is central to today's sale person. External content like eBooks, case studies, and datasheets prove value to prospects and customers. And internal content like training videos and competitive information help sales people differentiate and win deals. Many companies have invested in SharePoint to give sales teams access to these useful materials. That might be through organizing external marketing collateral or through internal training materials in SharePoint Sites, for example. But statistics from sales analysts show that up to 70% of sales content is never used by sales teams. Why? They can't find new and relevant content when they need it most -- when they're working on sales leads, contacts, or opportunities. KnowledgeTree predicts which content best matches any sales engagement. It automatically pushes matching content onto leads, accounts, opportunities, and more. And because your content is in many places, KnowledgeTree supports content stored in virtually anywhere. On your blog, video, site, marketing automation tool, and Microsoft SharePoint. Let's take a look. Here we are in KnowledgeTree Manager, the application that organizes and matches your content. I've now connected to SharePoint. In this case Office 365, and we can even connect to on-premise versions of SharePoint. We navigate through our folder structure and select the content we want to surface on our Salesforce records. And since KnowledgeTree doesn't duplicate or move your SharePoint content, recommended content always remains current. As you update content in SharePoint, the latest version is always available to your users through KnowledgeTree. Once added, we can match content to any sales situation that matters. Like by industry, buyer persona - any element that's important to your team. You can even add internal content, like links to competitive information or training videos that you've stored in a SharePoint site. Now content is instantly available to your sales team where they need it. Let's see it in action. Here we are in We're looking at a new opportunity record, and we can see content that matches my sales situation. Content that can help advance my sale. Here's matching blog content, videos -- and the SharePoint based eBook that matches this opportunity. And recommended connections back to SharePoint Sites where relevant training material is posted. Just like that I'm able to get the most relevant and useful content into the hands of my sales team. That means best practice content in SharePoint gets used, and my sales team is more effective.

wistiaEmbed = Wistia.embed("8wtomkx7pn");

Leverage Your Investment in SharePoint

KnowledgeTree connects to your SharePoint repository in seconds. That means your sales enablement and marketing content is instantly surfaced to sales people right in their Salesforce Leads, Contacts, Accounts, and more.

There’s no new repository to manage. Content in SharePoint stays where you put it. And as you update content in your repository, the most current version is immediately reflected to sales people on their sales records.

Now, sales people have instant access to your organized content right in the tool they use every day – their Salesforce CRM. That means your content gets found and used with prospects.

Increase Usage of Internal Resources

The benefit is for more than just outbound content. It’s also a huge win for internal training materials. Think of the wealth of competitive insights and product training collateral you’ve stored in SharePoint.

KnowledgeTree surfaces relevant internal materials to the right sales users. So, right in each Salesforce record sales people can instantly access and use your wealth of internal content.

Proactively Push Content to Sales Teams

It’s not enough to just connect users to your content. You need to proactively push the right content to your sales teams. KnowledgeTree matches your content to the Lead, Account, or other record in Salesforce. That means sales people have immediate access to content like:

  • Competitive material that matches the competitor they’re facing
  • Product sheets that align with the products they’re selling
  • Marketing collateral that’s been proven effective for similar accounts

The result? You radically boost sales people effectiveness with the right internally and externally facing content. And you keep your content where you want it – in your SharePoint repository.

Want to see it in action? Contact us for a quick demo.


The post Push Winning Content from SharePoint to Sales Teams appeared first on KnowledgeTree.

Categories: ECM

Sales Prospecting: Tips to Sending Relevant Messages to Your Contacts

KnowledgTree - Mon, 02/23/2015 - 11:11

Sales prospecting does not have to be a painful process. In fact, with the right tools in place, you can increase conversion rates and reach decision makers faster.

With that in mind, ZoomInfo and KnowledgeTree teamed up for a webinar, “Supercharge Your Sales Prospecting: How to Send Targeted Messages to Leads.”

Here are the key takeaways.

1. Understand Your Buyer Personas

Buyer personas are profiles of your best buyers. Research shows that buyers are more likely to take action when they receive highly targeted messages. In fact, personalized emails improve click-through rates by 14% and conversion rates by 10% (source: Aberdeen). In order to improve your sales prospecting efforts, you need to identify your buyer personas.

According to Peter Mollins, Vice President of Marketing at KnowledgeTree:

  • Only 5% of B2B buyers are actively looking for your solution (source: Vorsight)
  • Only 20% of sales people add value in a B2B sales conversation (source: Forrester)
  • 95% of B2B purchases are directly influenced by content

These statistics reflect the fact that many of the messages B2B companies bring to buyers are generic, old, and unproven. If you understand your buyer personas, you can avoid this issue altogether. Not only that, but you’ll also reach more qualified leads, shorten your sales cycle, and increase revenue.

2. Segment Your Database

Your data can provide insight into your buyer personas, which will make it easier to send relevant content and increase engagement. But where do you start?

Talk to sales, finance, and marketing. Once you think you know who your best buyers are, take another look at your data. Pay particular attention to your top performing customers, fastest deals closed, and biggest accounts. Also consider information such as the titles, job functions, company sizes, and industries in your current database.

Unfortunately, many companies have missing or inaccurate data, which makes this process much harder. You can use a tool like ZoomInfo to analyze this information and fill in any gaps.

3. Engage the Right Contacts

Once you’ve identified your buyer personas, you can improve your sales prospecting efforts and send relevant messages to your leads. In the end, this will save you time and money. Rather than reaching out to customers that won’t buy anything, you can use your data to segment and target contacts with similar characteristics to your best buyers.


Are you looking to improve your sales prospecting efforts? ZoomInfo can analyze your existing contact database and identify your buyer personas. KnowledgeTree can help you determine relevant content to send to your contacts. Contact Zoominfo and KnowledgeTree today to get started.

The post Sales Prospecting: Tips to Sending Relevant Messages to Your Contacts appeared first on KnowledgeTree.

Categories: ECM

Hacker in Residence at Liferay Spain

Liferay - Sun, 02/22/2015 - 12:51

Several months ago, I read an article talking about a new concept for me: the Hacker in Residence.

Since then, I saw pretty clearly that it would be a wonderful initiative within Liferay, given that we're a global and distributed company, with several teammates working from different countries and timezones.

So three months ago, we were trying to make progress in the Android version of Liferay Screens, and it was being harder than expected. At that time, we were planning our company retreat, and we thought it would be a good thing to work with some of our Brazilian mates and push the project forward. So that's what we did: Silvio, Josi and I were working together at our HQ for a week. We were focused in Liferay Screens in order to make progress and the results couldn't be better. 

When we were back at home after the retreat, we thought that working together for one whole month in the Madrid's office woud be awesome to finish the job started. So no sooner said than done. Silvio took his bags, and at mid-January he was landing at Madrid (:

During these weeks spent together, we achieved a lot of goals: we implemented the final Android architecture, ready to be unit-tested and we created several screenlets, pretty the same you can find in the iOS version. And also it's been a great experience to Silvio because he could live the Madrid lifestyle for a month!

And finally, Silvio could pass on the baton to Javier, our new Android engineer in Madrid.

So we're all more than happy with the results. It has been a great way to make a lot of progress in the product and what is even better: build stronger links with our team mates.

We're looking forward to arrange the next Liferay's Hacker in Residence!

Jose M. Navarro 2015-02-22T17:51:12Z
Categories: CMS, ECM

Liferay OSGi and SSH Access

Liferay - Sun, 02/22/2015 - 06:50

Taking forward from where Ray left off with a Telnet to Liferay OSGi, I am taking this step ahead to enable SSH access to Liferay OSGi console, here is my two little reasons on why I want to do it, 

  • I want to secure my OSGi console access, in fact we will go a step ahead and integrate the Liferay Portal JAAS with OSGi ssh console, thereby allow all the Liferay Users to log on to OSGi shell
  • I want to make the SSH'ed user to add ablity to execute Liferay API commands

Though I am complete on the first point above but on the second I feel it will be part of my another blog in this series :) as there are few things that needs to be sorted before I can make the point #2 above work as expected.

A good prequsite for this would be to have the OSGi console set up for Liferay you can either follow the @Ray's blog or if you can clone the Liferay Content targetting repo and fire the ant deploy command from the $CONTENT_TARGETTING_REPO/apps/content-targeting/runtime-dependencies to have the necessary OSGi bundles deployed to your Liferay instance ( this might have some additional Content targetting bundles as well, which is harmless and we can ignore them), for the convinence for this blog and for you to get started quickly I attached the bundles form here which can be dropped on to $LIFERAY_HOME/deploy folder.

Ok lets getting in to action of setting them up,

What SSH bundles I might require ?

  • org.apache.mina.core_2.0.7.v201401071602.jar
  • org.apache.sshd.core_0.7.0.v201303101611.jar
  • org.eclipse.equinox.console.jaas.fragment_1.0.0.v20130327-1442.jar
  • org.eclipse.equinox.console.ssh_1.0.100.v20131208-1728.jar
  • slf4j-api-1.7.5.jar or newer
  • slf4j-simple-1.7.5.jar or newer

You can download the mina and equinox bundles from Equinox Download, I used LunaSR1 at the time of writing this blog.

Once you have added these bundles, you need to add the following properties to your or


### # OSGi ### # Telnet # SSH ## JAAS enabling ## # Security settings, allowing SSH to use sceeenName portal.jaas.auth.type=screenName ## ## Login     The next step for us would be to create JAAS configuration file "equinox_console_jaas.conf" as shown below at your preferred location, i typically created it at $LIFERAY_HOME/data/osgi, equinox_console { required debug=true; }; The next step is to tell ssh* bundles, where we have our jaas configuration files, to do that we can edit  the "" in our Liferay Tomcat bundle to  add additional JVM options as shown below,   CATALINA_OPTS="$CATALINA_OPTS -Dfile.encoding=UTF8 -Dorg.apache.catalina.loader.WebappClassLoader.ENABLE_CLEAR_REFERENCES=false -Duser.timezone=GMT -Xms2048m -Xmx2048m -XX:MaxPermSize=256m" #JAAS Options EQUINOX_JAAS_OPTS="" CATALINA_OPTS="$CATALINA_OPTS $EQUINOX_JAAS_OPTS"

if you prefer to change JAAS conf file path, please do edit the "" JVM option in above to suit accordingly.

There you go our setup is done and we are good to have ssh enabled by restarting the server, a good idea is to clean the existing $LIFERAY_HOME/data/osgi/state to have clean states for all our bundles.

Once the server is restarted and when you try ssh -p2525 test@localhost  you might see the connection is refused, this is because the SSH console plugin is designed to have lazy start you might need to telnet on to the console using telnet localhost 11311 and then find the `Equinox Console SSH plugin` and start the bundle manually ( this is one time activity and the state is mantained until the bundle is refreshed).  Once the bundle is started you can do the ssh -p2525 test@localhost to see you  will be prompted for a 'password' give the same password for the "test" user as you have set in Portal to see you logged on to Liferay OSGi SSH shell.

Thats it! In my next part of the series we shall we how do we execute the Liferay API commands as liferay user with whom we have sshed.


[1] More on Equinox and SSH/Telnet consoles please refer here



Kamesh Sampath 2015-02-22T11:50:40Z
Categories: CMS, ECM

Uploading files using Ajax via AlloyUI

Liferay - Sat, 02/21/2015 - 18:06

You will need the following steps to achieve uploading of files using Ajax via AlloyUI


  1. Create a new Liferay Plugin Project using Liferay MVC as the portlet framework.
  2. Create a new Liferay Portlet, named as DocManager for example.
  3. Now open the liferay-portlet.xml file and insert the tag <ajaxable>true</ajaxable> just below the <icon> tag for DocManager portlet.

Now we can focus on our real task.

Creating the UI

<aui:form name="myForm" enctype="multipart/form-data">
    <aui:input type="file" name="myFile" label="My File"></aui:input>
    <aui:button type="submit" name="btnUploadFile" value="Upload File"></aui:button>

Note the enctype="multipart/form-data". This is needed for a file upload form.

 The AlloyUI script.

The next step will be to write the AlloyUI code to handle the 'Upload File' button and send the file to the server.

You will need to enable the aui-io-request module in order to use io API.




After that you will write the code to handle the button click like below


var btnUploadFile ="#<portlet:namespace />btnUploadFile");
btnUploadFile.on("click", uploadFile);

Here uploadFile will be the button click handler in our case. The uploadFile is the important function for us. It does the real work. The code for it is as below.


function uploadFile(event){
            var myForm ="#<portlet:namespace/>myForm");
            var ajaxURL = "<portlet:resourceURL id='UPLOAD_FILE'></portlet:resourceURL>";
            var configs = {
                method: 'POST',
                form: {
                    id: myForm,
                    upload: true
                sync: true,
                on: {
                    complete: function(){
                        alert("File Upload Complete!");
  , configs);    

Let us review this in detail.

First of all we call preventDefault so that the default functionality of the button is not invoked. For example a submit button might submit the form in the noraml way resulting into a post back.

Next, we take the node reference for the form which is straighforward.

var myForm ="#<portlet:namespace/>myForm");

In the next line we build the url using the portlet:resourceURL tag.

var ajaxURL = "<portlet:resourceURL id='UPLOAD_FILE'></portlet:resourceURL>";

This url will be used by our io request that is the ajax call for the file upload. The important thing to note here is the id for this tag. This id is used by our code in the serveResource portlet method to determine the different type of actions to be performed.

In the next line we build the configurations for the io request. The important piece is

form: {
                    id: myForm,
                    upload: true

Here we are assigning the form node reference to the id: property and setting the upload: property to be true. This will add all our form data to the ajax request including the file data as well.

After building the configuration object we call, configs); method.


Implementing the backend handler

An io request goes to the serveResource method in our portlet. In there we have the following code

String resourceId = resourceRequest.getResourceID();;
        if(resourceId != null && resourceId.equals("UPLOAD_FILE")){
            uploadFile(resourceRequest, resourceResponse);

This will retrieve the resource id and if it is "UPLOAD_FILE" it will call the uploadFile method. The uploadFile method is as below.


private void uploadFile(ResourceRequest resourceRequest,
            ResourceResponse resourceResponse) throws IOException {
        UploadRequest uploadRequest = PortalUtil.getUploadPortletRequest(resourceRequest);
        File objFile = uploadRequest.getFile("myFile");
        String objFileName = uploadRequest.getFileName("myFile");"objFile: [" + objFile + "], objFileName: [" + objFileName + "]");        
        String uploadDirectory = "L:/myfiles/";

        File currentFile = new File(uploadDirectory);
        if (currentFile.exists()) {
  "Going to write the file contents");
            File newFile = new File(uploadDirectory + "/" + objFileName);
            OutputStream os = new FileOutputStream(newFile);
            InputStream is = new FileInputStream(objFile);
            byte[] buff = new byte[is.available()];

It retireves the UploadRequest object from the ResouceRequest and then processes the file using it.

The code is straightforward, it checks whether the directory to which we want to upload exists? If it exists, it just copies the files to that directory.


The important thing to note is that for file upload operation we don't have the success and failure events. So they will not get fired.

In order to confirm our upload of the file one option is to list down the files from the upload directory.

To achieve that you can have the following in the jsp page

function displayFiles(){
            var ajaxURL = "<portlet:resourceURL id='FILES_LIST'></portlet:resourceURL>";
            var filesList ="#files-list");
            var configs = {
                on: {
                    success: function(){
                        var response = this.get("responseData");
                        filesList.set("innerHTML", response);
  , configs);

Where files-list is a div id added to the page.

On the server side you will write the following code to idenfity the files list request.

if(resourceId != null && resourceId.equals("FILES_LIST")){
            listFiles(resourceRequest, resourceResponse);

listFiles function will build a list of the files and will the send the response.

private void listFiles(ResourceRequest resourceRequest,
            ResourceResponse resourceResponse) throws IOException {
        StringBuilder responseText = new StringBuilder();
        File uploadDirectoryObj = new File(uploadDirectory);
            File[] files = uploadDirectoryObj.listFiles();
            for(File file : files){
            responseText.append("No File Found");
        sendResponse(resourceRequest, resourceResponse, responseText.toString());


On the jsp page you can use innerHTML selector to replace the contents of the list-files div.

This concludes our task of uploading a file using ajax call.

I hope this will be helpful for others.

Muhammad Asif 2015-02-21T23:06:11Z
Categories: CMS, ECM

HighChart Integration with Liferay

Liferay - Thu, 02/19/2015 - 07:33

I have experienced some work related to HighChart integration with Liferay in my recent development work.

I am sharing my work experience here,

Integrating highchart requres the "jquery.min.js"(it requires version above 1.9.1) along with the "highchart.js"

Integrating HighChart is quit easy. Proving you the details below -

Step 1. Include the above two JS files in the JSP.

#Import JS: <script type="text/javascript" src=""></script> <script src=""></script>   Step2: Write the script to generate the High Chart   #Sample BarGraph Code:   <script> $(function () {     $('#container').highcharts({         chart: {             type: 'column',         },         title: {             text: 'Sample Bar Graph'         },         subtitle: {             text: ''         },         xAxis: {             type: 'category',                title: {                 text: 'Status',                 style: {                     fontSize: '12px',                     fontFamily: 'Verdana, sans-serif'                 }             }         },         yAxis: {             title: {                 text: 'Count'             }         },         legend: {             enabled: false         },         tooltip: {             pointFormat: '<b>{point.y:.1f} count</b>'         },         series: [{             name: 'Data',             colorByPoint: true,             data: [                 ['Chrome', 11],                 ['Safari', 7],                 ['FireFox', 21],                 ['IE', 1]                           ]         }]     }); }); </script>   Step3: Add the container in the div to accomodate the High Chart   Code: <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>   Now you run this code inside a portlet and put in in a portal page and it will work fine.     Scenario: MULTIPLE HIGH CHART INTEGRATION ON SAME PORTAL PAGE WITH DIFF PORTLETS   But in one of case I had multiple portlet containing HighChart on the same portal page.   On that time it was not working. None of the HighChart was coming up on the page.    Solution: If you look at the above code then you can see that the chart/graph has been generate using "$('#container').highcharts({", based on the container.   And in the case of multiple portlet containing hich charts on the same , this was causing the problem.   So I have changed the implementation as following -   Sample Code:   new Highcharts.Chart({  chart: {     type: 'column',     renderTo: containerName  } of the high chat code... });   In this above case we are generating the highchart by creating new instance and it will work if we have mutilple portlet on the same page which contains high charts. Subhasis Roy 2015-02-19T12:33:53Z
Categories: CMS, ECM

Forrester’s Sales Enablement Summit: What We Can Learn from the Agenda

KnowledgTree - Wed, 02/18/2015 - 16:50
Industry analyst Forrester has been at the forefront of the Sales Enablement space. Across the board their analyst team delivers excellent, and frank, views on sales enablement methodologies and tools. And some of their data about the business case for driving sales enablement is particularly compelling.


Each year they host a major summit on sales enablement and best practices in Scottsdale. And this year it looks like it’ll be another great event. You can read the agenda and register here. Looking through the agenda there were some common threads that I wanted to pull out. If you’re attending, looking at some of these meta-topics can help guide your preparation ahead of the event.

Let’s take a look:

Changing Buyer Leads to Different Sales Enablement Approaches

There’s been a radical shift in B2B buyers in recent years. Buyers are increasingly unimpressed with sales people that add no value to conversations. In fact, Forrester survey data of B2B buyers points out that 61% of sales people add no value to the purchase process. They demand that each interaction provides value.

And it’s no wonder. Buyers are increasingly overwhelmed by too many priorities. That’s why methodologies like the Challenger Sale and SNAP Selling have become so effective. Sales people need to overcome the noise and get the buyer to adjust priorities. Helping sales people to navigate a customer-supporting sales process similarly is getting attention at this summit.

Sessions to Attend:

  • The Changing Role Of B2B Salespeople In A Digital-First Environment
  • Finally, The Key To Sales And Marketing Alignment: The Customer
  • Integrating The Customer Into Your Sales Processes
Collaboration Between Sales and Marketing as Sales Enablement Strategy

The divide between sales and marketing is not breaking news. And cures for it have begun to work, particularly through approaches like having a shared Service Level Agreement. But in addition, it’s critical to think of the go-to-market funnel and the conversion rates throughout.

Marketing automation and strategies, and sales automation and processes, influence conversion rates across the buyer journey. So, taking a customer-centric approach built on buyer personae help sales and marketing both align the work they’re doing and avoid clunky handoffs between the teams.

Sessions to Attend:

  • Finally, The Key To Sales And Marketing Alignment: The Customer
  • Marketing And Sales Go Digital
Importance of Content and Messaging to Sales Enablement

Content is a core part of sales enablement. Training materials, scripts, and marketing collateral such as videos, datasheets, and presentations matter. They’re important because today’s new B2B buyer wants value-add information that helps them to make smarter decisions.

Several of the sessions at the summit looks at the importance of that content and how sales people can access it. If sales people can’t find it, they can’t take advantage of it. Especially since content marketing teams are producing huge volumes of blog posts, papers, and other content that can directly influence sales processes.

Sessions to Attend

  • Marketing And Sales Go Digital
  • Message Management In Action: Customer Alignment From Design To Support
People and Process Are Still Essential

Sales enablement tools can radically improve salesforce productivity. But at the same time it’s important to remember that people and processes are essential components of sales enablement. That is, hiring and helping to improve sales performers in their ability to communicate value and close business. And implementing and tuning methodology that makes it repeatable across team members.

A number of sessions look into how to choose the right people and the effect of sales methodologies on your sales process. Though it’s critical to appreciate that sales enablement technology actually reinforces best practices and processes. How? By surfacing relevant guidance or content that supports a sales engagement based on the context of the sale.

Sessions to Attend:

  • Hire And Develop The Salespeople Your Buyers Are Begging To Work With
  • The People Side Of Sales Enablement
  • Aligning People, Processes, And Technology To Hire And Develop Your Buyer-Aligned Sales Force
Sales Processes Can Be Measured for Improvement

Like any numbers game, sales can be measured and tuned. We’ve seen the rise in data science-led tools and processes that predict which leads to prioritize, which deals will close, and which message will resonate. And the summit will look into this data science driven approach to sales enablement.

It’s especially important as sales enablers and marketers team up to drive deals through the funnel. It looks like there will be a case study from Box where they’ll look into their best practices for using data to drive sales actions.

Sessions to Attend:

  • Changing The Sales Strategy With Data

I hope you get a chance to attend the event. Are you attending the summit? Let’s connect.

The post Forrester’s Sales Enablement Summit: What We Can Learn from the Agenda appeared first on KnowledgeTree.

Categories: ECM

Sales Enablement Technology: Build vs Buy

KnowledgTree - Wed, 02/18/2015 - 14:11
As the B2B sales cycle grows more sophisticated, sales enablement tools are quickly becoming an invaluable asset for business organizations. However, the timeless question of ‘build versus buy’ gets more complex as new options emerge and more factors come into play.


Up to 95% of successful sales are influenced by sales collateral

The sales process is changing, and many mid- and large-size companies are recognizing the need for an increase in productivity and efficiency amongst their sales force.  Prospects expect to have sales engagements with relevant perspectives and interesting insights, adding value to the conversation. Collateral such as presentations, videos, and case studies enhances the dialogue and has been proven to increase the conversion of opportunities into sales wins. Analyst estimates show that up to 95% of successful sales are influenced by sales content and documents. But the key is having an effective strategy to get this material from your marketing team to your sales team and into the hands (or inboxes!) of prospects. The solution? Sales enablement technology, which supports the sales process.

As you weigh your options, at some point the ‘build vs buy’ argument will come to mind: when should you develop a custom software solution in-house and when should you purchase a commercial application from a vendor? Before deciding, consider the following questions.

1) Do You Have the Resources?

Is building a sales enablement system the best use of corporate resources, such as time, effort, and money? Organizations often underestimate the budget and workload associated with a project of this type. According to research from The Standish Group, companies that choose to build their own internal software system are successful only about 25% of the time; they exceed their budget by an average of 178% and go over their time allowance by approximately 230%.

Projects to build internal software systems are successful about 25% of the time

Keep in mind that maintenance and support are additional costs that may be incurred but are often forgotten in the budget. Further, it can be difficult to ensure the product’s continued success without a team dedicated to updating and maintaining the software. Anticipate these internal challenges between your core business functions and handling a system of this magnitude.

2) How Complex is the Development Process? What Obstacles Could You Encounter in the Future?

One of the most common drivers behind the ‘build versus buy’ argument is cost. Companies often believe they can save money by creating a system internally; however, the full scope of the project is often underestimated, leading to overdrawn budgets and time-tables.

Consider the strengths of your company – is building a sales enablement system within your realm of knowledge and ability to execute? Do you fully appreciate what resources are required on the front-end and the back-end of the tool? Does your software team have the technical proficiency and time that is necessary to build out and fully test the software? Think about other complexities such as functionality, UI/UX design, navigation, technical support, and continued product updates.

On the other hand, a commercial solution has been developed specifically to handle the sales enablement challenge. The product has been thoroughly tested, eliminating bugs and errors, and is continually updated to meet changing market demands. Additionally, internal support required is minimal or nonexistent.

3) Will a Custom Solution Continue to Meet Your Needs as Your Company Grows?

Your business is a dynamic, evolving organization, so it makes sense for your selling tools to adapt as well. Having an in-house developed application that remains static will only hinder the growth of the company and will quickly become outdated. As your company expands, challenges such as system maintenance and support can become more pronounced, and scalability can be harder to achieve. Companies that choose to build often do so with respect to the current size of their organization, placing little or no thought to plans of future growth.

You may also be missing out on the support necessary to integrate the system into your sales process. A vendor can offer help beyond the initial onboarding, such as a help-desk, continual addition of features, and product updates. Commercial tools also offer fast deployment – the tool can be up and running in a matter of days, whereas development of a custom solution could take months. The math is simple: faster time to market = faster ROI.

4) Is it Necessary to Build When There is a Fitting Solution to Buy?

Why reinvent the wheel? If there is software already available that meets all of your needs and functionality, you will be able to more efficiently allocate your resources. Remember your competencies and focus your attention there.  There’s a reason the vendor has the software that it has to offer – it is their strength. They have a good understanding of market needs, a network that helps them develop novel attributes, and the knowledge and resources to build an effective system, along with the best practices to integrate the system into your current organizational practices.


Companies must weigh their options in the sales enablement decision process and make an informed decision about what is best for them. It is important to balance immediate needs with long-term growth and keep the business goals in mind.

If you didn’t answer ‘yes’ to all of these questions, consider a tool such as KnowledgeTree, which is designed specifically to support B2B sales situations. KnowledgeTree enables sales teams to quickly find targeted collateral based on specific information about their leads, prospects, and customers, helping your sales reps to deliver the right message at the right time.

Learn how your business can increase productivity and drive more sales; request a demo today!




The post Sales Enablement Technology: Build vs Buy appeared first on KnowledgeTree.

Categories: ECM

Dragging and dropping portlets

Liferay - Wed, 02/18/2015 - 07:24

This is a repeat post - same topic as in July 2013, when I've solved exactly the same problem on Liferay 6.1. Now it's time to update the solution to Liferay 6.2. But I am ahead of myself: What seems to be the problem?

Liferay offers various layout templates that determine how the portlets are arranged on the page. When you build a Liferay page, you can drag&drop portlets on the page, according to the layout template. But it's not always obvious, where you can drop portlets. And if you happen to not know the layout template that has been chosen for the current page, you might not even know that there's another column or row. Especially when you have one of the multiple row layout templates.

Try it: Choose one of the layouts from that screenshot on the right, then drag&drop portlets: The only indicator you have is the blue line. Nothing indicates the additional row that still might be available unless you happen to hover over it.

Wouldn't it be nice to have all of the columns well visible - at least while you're dragging & dropping portlets? Like this "Hello World" portlet that's currently being dragged (note that the dotted style doesn't really show in this scaled image. Yes, I should have chosen a different border style. View that full image to see the unscaled version, or use your CSS imagination):

In 6.1, all the required CSS was available in the default theme, thus you only needed some javascript to add to the page. In 6.2 I couldn't find the CSS any more, thus I've had to add some custom rules. Do this in your theme, or just adhoc on the page (Site Administration/Pages/Look&Feel). You will need CSS like this:

And in addition, the same javascript that I mentioned in that old article still works (and is required as well). To try it out immediately, just go to "Site Administration/Pages/Javascript", then paste this code:

That's it, you're set: To persist the settings and have them available always, add these few lines to your themes and from then on even your inexperienced page maintainers will always easily identify the drop zones for portlets.

If you wonder what I'm doing when I'm travelling by train - this is an example. And as I am able to "make things look different" rather than "make things look nice", you might want to post some nicer CSS fragments as comment to this article.

Oh, and fyi: I've filed this as LPS-53664 so that there's a chance for it to be fixed soon - or at least for 7.0. I'll just have to find some time to do it yet again, on master. And, thanks to Daniel, there's also a CSS-only version that I've missed when I ported the 6.1 solution:

Olaf Kock 2015-02-18T12:24:56Z
Categories: CMS, ECM

Boost Your Sales Prospecting: Working the Sales Enablement Math

KnowledgTree - Mon, 02/16/2015 - 11:26
Sales prospecting has become one of the most effective tools in a sales leader’s kit. One study by the Kellogg School of Management and found that by specializing sales teams into prospectors and closers, the close ratio leapt from 10% to 17%.

However, sales prospecting is still a developing field. So, it’s important to stay on top of sales prospecting best practices. Your sales leadership and sales enablement teams must equip your prospectors with the tools and processes that make them effective.

That’s why ZoomInfo and KnowledgeTree teamed up last week to deliver an information-rich webinar on best practices. Watch the webinar below, and check on the summary of the event in this post.

Sales Prospecting Calculus

Sales prospecting is both an art and a science. The science is that you can measure the inputs and conversion rates through the prospecting process. As you tune and enhance these numbers you can dramatically improve the outputs.

The two primary drivers of the math are:

Number of Outreaches to Prospects X Conversion Rate to Good Conversations X Conversion Rate to Meeting = Number of Meetings

While this does over-simplify some elements on an individual rep basis, it is useful to work through at an aggregate sales manager level. Let’s take a look:

Number of Sales Prospecting Outreaches

If you are able to increase the number of dials to potential targets you are much more likely to be effective. But there are many elements that can slow down your prospecting, including:

  • Time spent dialing a prospect. 30 seconds looking for and inputting a phone number — 90 times a day – is three quarters of an hour a day wasted.
  • Time spent looking for contact information. If you have to navigate through a name directory or guess and email addresses, you are again adding 2-3 minutes per outreach. Over 90 times a day, well you get the idea.
  • Time spent on wrong connections. Your prospector works hard to make a connection and finally they get someone on the line. But they quickly discover that that person is unqualified or fundamentally uninterested. Could you have avoided adding this person to your prospecting queue in the first place to focus on likelier targets?

Anna Fisher from ZoomInfo looked into this sales enablement issue to start the webinar. She pointed out the importance of having access to good, current data for the prospecting team. When prospectors have current email addresses and phone numbers, they can more quickly dial more people. And their connection rates increase significantly.

Use algorithms and data to identify best practice messages for your key buyer personae.

But perhaps the most important conclusion that Anna pointed out was around getting the right connection in the first place. What she suggested was to look at your buyer personae to understand your ideal target. When you know the job title, industry, location, and other criteria of your best buyer, you can better identify more people like that. Using algorithms driven from data science, you can predict which elements best match your ideal persona. That means you’re feeding your prospecting teams with not just lists, but prioritized sets of prospects that sales prospectors are more likely to close.

Conversion of Conversations to Meetings

After ZoomInfo’s discussion, it was my turn to talk about sales enablement’s role in supporting sales prospecting. I started by looking into a commonly cited metric from Sirius Decisions. The classic understanding of the metric is that 67% of buying decisions are complete before a buyer speaks to sales.

But that’s a misunderstanding of the data. It actually says that 67% of the buying decision is done digitally. So, buyers are looking at content, reading thought leadership, and engaging with digital communications. But is that information actually being guided by the sales person? It must be. Sales people need to proactively engage and steer buyers through the purchase process.

Why? Because for most B2B sales are not inbound-sourced where a prospect arrives with their needs well catalogued ready for purchase. In fact, some data points out that it’s less than 5% of buyers who fit that model. The vast majority either weren’t considering your solution or don’t have a formulated business case for addressing a problem.

So, if 95% of the market is out there, not actively searching for your products, how do you get them into play?

The Rise of the Challenger Sale

The webinar then focuses on the idea of the Challenger sale. In this approach, the 95% of the market is an opportunity for sales people to get ahead of their competition and open untapped buyers. But to do so, you need to recognize what’s happening with those buyers.

They’re not standing by idly waiting for you to approach them. They have 20 priorities on their desks that they’re working through. For you to get them to move forward with you, you have to get them to re-prioritize your solution above other projects that are in-flight. That means that you need to get them to think about their company in a different way. You need to challenge their status quo.

Recent surveys of B2B buyers by Forrester shows that from 61 to 80% of sales people add no value in a sales conversation.

After all, your prospects are deluged with messages from sales people every day. Why would a prospect decide to take 30 minutes to meet with one of your account executives? You need to provide them with information and insights that let them dramatically improve a key aspect of their business. A great bar to think of is would your prospect have paid you for the meeting you’re setting? Simply trying to sell a demonstration is not enough to get a prospect to re-prioritize their activities.

How is Sales Enablement Doing Today?

How well are sales teams meeting this goal of bringing value to prospects? Not very well. Recent surveys of B2B buyers by Forrester shows that from 61 to 80% of sales people add no value in a sales conversation. When sales people add no value, send messages like “just checking in”, and in general behave like order-takers, how can you expect a prospect to want to take 30 minutes?

How Do You Address the Issue?

So how do we as sales enablement professionals and sales leaders tackle this issue? You have to look at sales enablement tools that help you to communicate value to prospects. How do they communicate to the prospect?

  • Through what they tell prospects in email and phone conversations
  • It could be through how well prospectors know the product they’re selling
  • It could be through the content they share that helps prospects build business cases or justify their meetings

Each of these issues can be addressed through effective sales enablement content. For instance:

  • Great sales scripts or conversation starters that support email and phone conversations
  • Product training and related materials that give just-in-time information for prospectors to address product questions or competitive challenges, for example
  • Compelling content that helps buyers understand how changes to their company can have a major positive impact

It’s critical that the content that’s being used – whether it is scripts, training, or business content – is effective. That means avoiding the classic content issues of using content that is:

  • Generic: If content doesn’t speak to the buyer persona you’re targeting it’s not going to go far. Make sure your content focuses on the buyer personae that you identified early in this sales enablement process
  • Old: Out of date and inaccurate content won’t get you far with a prospect. If you’re trying to communicate about your cutting edge technology but you’re missing key functionality in your product sheets. Or, if you’re communicating thought leadership with analyst data from 5 years ago, you’ll struggle to win over your prospects.
  • Ineffective: Just like marketing automation taught us, you need to test your content to understand what’s generating interest with your prospects. Measure it and push best practice material across your prospecting teams.

This is especially important because 95% of B2B purchases are directly influence by content. So, ensure that your sales prospectors are having great conversations and conversions to meetings by equipping them with sales enablement tools and content.

Do you have questions about the webinar? Contact us!

The post Boost Your Sales Prospecting: Working the Sales Enablement Math appeared first on KnowledgeTree.

Categories: ECM

Liferay's OSGi Board Membership

Liferay - Thu, 02/12/2015 - 17:46

Over the past couple of years Liferay has invested a considerable amount of effort to re-engineer Liferay Portal version 7.0 with modularity as the key focus. As part of this effort we've adopted OSGi as the modularity layer.

In September of 2013 we decided that in order to provide ourselves the most direct access to OSGi expertise we should join the OSGi Alliance as a Contributing Member. In this way we would sit in the very room with those engineers who've devised the standards, engineers with the most experience in applying their works. It would prove to be a fruitful opportunity for Liferay to learn as well as bring our own experiences with enterprise application development to the table.

After a successful freshman year in the Alliance Liferay decided it was the appropriate time to take a more significant role. In our second year (2014) we decided to graduate all the way to Strategic Member (the highest membership level within the Alliance). We would have the privilege (besides many others) to nominate our own employees into roles as officers of the Alliance.

Finally, in December 2014 Liferay was elected a member of the Board of Directors of the OSGi Alliance, and at the first board members Face-To-Face meeting of 2015, January 23, Liferay officially took it's seat as a Board Member.

This is a great honour because the OSGi Alliance has worked extremely hard and against an increasingly challenging and evolving software engineering industry. All the while, it has stayed relevant and effective, proving itself to measure up to it's core values.

Liferay is eager to participate in a long lasting exchange of experiences and support of the OSGi Alliance.

I invite individuals and organizations (no matter how small) to bring their knowledge and expertise to join Liferay in this great organization.

Ray Augé 2015-02-12T22:46:48Z
Categories: CMS, ECM

A Simple Registration Form

Liferay - Thu, 02/12/2015 - 04:24

I have developed a simple registration form by using liferay 6.1 version.Also we can develope other versions.

It is my first post.from this post we can know how to build servicebuilder and table creation in mysql.

package com.registrationform1;

import java.util.List;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceResponse;

import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.model.Region;
import com.liferay.portal.service.RegionServiceUtil;
 * Portlet implementation class Registrationform1Portlet
public class Registrationform1Portlet extends MVCPortlet {
    private static Log log = LogFactoryUtil.getLog(Registrationform1Portlet.class);
    //ajax call serve method
    public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse)
    throws IOException, PortletException {
        long countryIdLong = ParamUtil.getLong(resourceRequest,"countryIdVal");"countryIdLong: "+countryIdLong);
        List<Region> regions = null;
        try {
            regions = RegionServiceUtil.getRegions(countryIdLong);
        catch (SystemException e) {
        }"regions: "+regions);
        for(Region region : regions){
  "name: "+region.getName());
  "regionId: "+region.getRegionId());
        //PrintWriter pw = null;
        //pw = resourceResponse.getWriter();
        //pw.print("hello world");
    public void addData(ActionRequest actionRequest, ActionResponse actionResponse)
    throws IOException, PortletException
        String firstName = ParamUtil.getString(actionRequest, "firstName");
        String lastName = ParamUtil.getString(actionRequest, "lastName");
        String fatherName = ParamUtil.getString(actionRequest, "fatherName");
        String motherName = ParamUtil.getString(actionRequest, "motherName");
        String dateofbirht = ParamUtil.getString(actionRequest, "dateofbirht");
        String Age = ParamUtil.getString(actionRequest, "Age");
        String gender = ParamUtil.getString(actionRequest, "gender");
        String Country = ParamUtil.getString(actionRequest, "Country");
        String State = ParamUtil.getString(actionRequest, "State");
        String City = ParamUtil.getString(actionRequest, "City");
        String Nationality = ParamUtil.getString(actionRequest, "Nationality");
        String PassportNumber = ParamUtil.getString(actionRequest, "PassportNumber");
        String IdcardNumber = ParamUtil.getString(actionRequest, "IdcardNumber");
        String PhoneNumber = ParamUtil.getString(actionRequest, "PhoneNumber");
        String EmailAddress = ParamUtil.getString(actionRequest, "EmailAddress");
        System.out.println("First Name"+firstName);
        System.out.println("Last Name"+lastName);
        System.out.println("Father Name"+fatherName);
        System.out.println("mother Name"+motherName);
        System.out.println("Date of Birth"+dateofbirht);
        System.out.println("Age is"+Age);
        System.out.println("Country Name"+Country);
        System.out.println("State name"+State);
        System.out.println("City Name"+City);



<%@page import="com.liferay.portal.model.Country"%>
<%@page import="com.liferay.portal.service.CountryServiceUtil"%>
<%@ include file="/html/registrationform1/init.jsp" %>
<%@ taglib uri="" prefix="liferay-util" %>

<%@page import="com.liferay.portal.service.CountryServiceUtil"%>

<script src="//"></script>

<portlet:actionURL var="addDataURL" name="addData"/>

<portlet:resourceURL var="countryRegionURL" />

<h1><b><font color="blue"> Registration Form! </font></b></h1>

<form method="POST" action="<%= addDataURL %>" >
    List<Country> countrlyList = CountryServiceUtil.getCountries();

<table class="lineHight">
        <td class="columnWidth"><b>First Name:</b></td>
            <input type="text" name="firstName" id="firstName" />
        <td  class="columnWidth"><b>Last Name:</b></td>    
        <td><input type="text" name="lastName" id="lastName" /></td>
        <td class="columnWidth"><b>Father Name:</b></td>
        <td><input type="text" name="fatherName"  id="fatherName" /></td>

        <td class="columnWidth"><b>Mother Name:</b></td>    
        <td><input type="text" name="motherName" id="motherName" /></td>
        <td class="columnWidth"><b>Date Of Birth:</b> </td>
        <td><input type="date" id="dateofbirht" name="dateofbirth" required"/ ></td>
        <td class="columnWidth"><b>Age:</b></td>
        <td><input type="number" name="Age" size="5" min="0" max="150" step="1" id="Age"  /></td>
        <td class="columnWidth"><label for="gender"><b>Gender:</b></label></td>
        <td><input type="radio" name="gender" value="0">Male</input></td>
        <td><input type="radio" name="gender" value="1">Female</input></td>
        <td class="columnWidth"><b>Country:</b></td>
          <select onChange="javascript:selectRegionList(this);" style="width: 147px;">
            <option value="-1" >select country</option>
                for(Country country : countrlyList){
                        <option value="<%= country.getCountryId() %>"><%= country.getName() %></option>
      <!-- drop down list for selecting states -->
        <td class="columnWidth"><b>State:</b></td>
            <select name="stateList" id="stateList" style="width: 147px;">
                <option value="-1">Select State</option>
        <td class="columnWidth"><b>City:</b></td>
        <select name ="cityList" id="cityList" style =" width:147px;">
        <option value ="-1">SelectCity</option>
        </td> </tr>
        <%-- <portlet:resourceURL id="selectCity" var="selectCity" >
     <input type="text" name="City"   onclick="getRegions();" /> <!-- value="SelectState" -->
     <option value="-1" >Select City</option>
    </portlet:resourceURL></td> --%>
        <td class="columnWidth"><b>Nationolity:</b></td>
        <td><input type="text" name="Netionolity" label="Netionolity" /></td>
        <td class="columnWidth"><b>*Passport No:</b></td>
        <td><input type="text" name="PassportNumber"  id="PassportNumber" min="8" max="10"/></td>
        <td class="columnWidth"><b>*IdCard No:</b></td>
        <td><input type="text" name="IdCardNumber" id="IdCardNumber"/ ></td>
        <td class="columnWidth"><b>*Phone No:</b></td>
        <td><input type="text" name="PhoneNumber " id="PhoneNumber" maxRange='10'/></td>
        <td class="columnWidth"><b>Email Id:<b/></td>
        <td><input type="Email" name="Email" style="width: 145px;"  placeholder="Enter a valid email id" id="Email"/></td>
        <td class="columnWidth"><input type="submit"  value="submit" /></td>

 <script type="text/javascript">
 $(function() {
     $( "#dateofbirht" ).datepicker({
           dateFormat: "dd/mm/yy",
   /* jQuery(document).ready(
     function() {
   ); */

    var ew = event.which;
    if(48 <= ew && ew <= 57)
        return false;
    if(65 <= ew && ew <= 90)
        return true;
    if(97 <= ew && ew <= 122)
        return true;        
    return false;

    var ew = event.which;
    if(45 <= ew && ew <= 58)
        return true;
    if(65 <= ew && ew <= 90)
        return true;
    if(97 <= ew && ew <= 122)
        return true;        
    return false;

    var ew = event.which;
    if(48 <= ew && ew <= 57)
        return true;        
    return false;

    var ew = event.which;    
    if(48 <= ew && ew <= 57)
        return true;
    if(65 <= ew && ew <= 90)
        return true;
    if(97 <= ew && ew <= 122)
        return true;        
    return false;

//for selecting country dropdown list
function selectRegionList(object)
    //alert("country id: "+object.value);
    var countryId = object.value;
        alert("please select country from list");
           type: 'POST',
           url:  "<%= countryRegionURL %>",
           data: {
               countryIdVal: countryId
           error: function()
              success: function(data){
                 alert("success function");
                 var stateListObject = document.getElementById("stateList");
                 for(var i=0 ; i<10 ; i++){
                     var optn = document.createElement("OPTION");
                     optn.text = "option"+i;
                     optn.value = i;
                var cityListObject = document.getElementById("cityList");
                  for(var i=0 ; i<15 ; i++)
                     var optn = document.createElement("option");
                     optn.text = "option"+i;
                     optn.value = i;

function selectState(id){
                 var country = jQuery('#<portlet:namespace />location').val();
                 var select = null;
                 var regionArray = [];
                 var regionSubArray = [];

body {

<!-- //Ajax call to States -->

<script type="text/javascript">
<%-- function getRegions(){              
                    type: "POST",
                    url: "<%= selectState.toString() %>",
                   error: function()
                   success: function(data){
        } --%>
        String strJSON = "stateList"; // your string goes here
        JSONArray jArray = (JSONArray) new JSONTokener(strJSON).nextValue();
        // once you get the array, you may check items like
        JSONOBject jObject = jArray.getJSONObject(1); */



<%@ taglib uri="" prefix="aui" %>
<%@ taglib uri="" prefix="portlet" %>
<%@ taglib uri="" prefix="liferay-theme" %>
<%@ taglib uri="" prefix="liferay-ui" %>
<%@ taglib uri="" prefix="liferay-util" %>

<liferay-theme:defineObjects />
<portlet:defineObjects />

<%@page import="java.util.List"%>
<%@page import="javax.portlet.ActionResponse"%>



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 6.1.0//EN" "">
<service-builder package-path="com.registrationform1" auto-namespace-tables="false">

    <entity name="Registration" local-service="true" remote-service="false">

        <!-- PK fields -->

        <column name="RegistrationId" type="long" primary="true" id-type="increment"/>

        <!-- Audit fields -->

        <column name="firstName" type="String" />
        <column name="lastName" type="String" />
        <column name="fatherName" type="String" />
        <column name="motherName" type="String" />
        <column name="dateofbirth" type="Date" />
        <column name="Age" type="int" />
        <column name="gender" type="String" />
        <column name="Country" type="String" />
        <column name="State" type="String" />
        <column name="City" type="String" />
        <column name="Nationality" type="String" />
        <column name="PassportNumber" type="long" />
        <column name="IdcardNumber" type="long" />
        <column name="PhoneNumber" type="int" />
        <column name="EmailAddress" type="String"/>

mohd zameer 2015-02-12T09:24:06Z
Categories: CMS, ECM

Liferay 7 Community Expedition

Liferay - Wed, 02/11/2015 - 12:58

Liferay Explorers
Miguel Ángel Pau & Moisés Belda
Liferay Spain User Group

During the Liferay 6.2 development cycle many of you participated in BugSquad and the Community Beta programs in order to provide valuable feedback and bug reports. This worked really well and we got a lot of positive feedback from over 70 participants in the program - so guess what - we're doing it again for Liferay 7!

Liferay 7 Community Expedition In keeping with Jorge's adventuring theme, let me be the first to introduce you to the Liferay 7 Community Expedition! The goal is to make sure Liferay 7 meets your needs, and the rest of the community, with the quality and consistency you'd expect. This time around the program will be hosted on the Liferay Developer Network which should give us a great-looking site, better coordination and better personalization. This expedition, should you accept the challenge, will take you on a journey from our current Milestones through the final release of Liferay 7 and possibly beyond. You'll experience firsthand the awesomeness going into Liferay and see why everyone is so pumped up for this major release. We will focus on major feature areas like Web Content Management, Staging, Collab & Doc Management, Business Productivity, UI Infrastructure, Administration, Dev Tooling, and much more! Check out the signup form when joining for more information about what we'll focus on for the next Milestone.   Joining the Expedition

By this point I know what you are thinking: "How can I help!". I'm glad you asked! As you know, we are doing a preview/milestone release of Liferay 7 every 2 months. We need your help to review the development of Liferay 7, try out the new features, hunt for bugs, and give your feedback on which Liferay relies so heavily. So here's what to do:

  1. Sign up for the expedition. This lets us know who you are and more importantly lets us know what your interests are so we can customize your experience and get to know you better. Once you sign up, we'll send you more details.
  2. When the Milestone is released, expedition organizers (new recruit but experienced Liferay guy Jamie Sammons and myself) will send a detailed list of what's new in the Milestone, and what to focus on, along with specific instructions about how to use the Milestone. Download the Milestone and read the instructions.
  3. After trying out the Milestone, provide feedback on the Expedition Site (more information on this site after you sign up!).
  4. If you run into problems, or have questions, don't despair! Expedition leaders (many of our community and engineering experts) will be identified for each release that will be more than happy to assist.
All participants that contribute to the release will receive a small gift for contributing (that's me over there --> modelling the 6.2 shirt!), to proudly show you were part of the Liferay 7 release. You'll also learn a lot about the release, and get to know many core developers in the community, establish lasting relationships with others in the community, learn a little, and perhaps share a little. It's going to be a lot of fun! And best of all, we are starting the expedition NOW! Liferay 7 Milestone 4 is out soon (this week or next) so there is no time to waste. Sign up for the Expedition and keep watching your Inbox, and thank you for helping to make Liferay 7 an amazing and revolutionary platform for our entire community! We look forward to your involvement in Milestone 4 and beyond! James Falkner 2015-02-11T17:58:18Z
Categories: CMS, ECM

Top 4 Sales Enablement Trends for 2015

KnowledgTree - Wed, 02/11/2015 - 12:14
Sales enablement is a powerful activity that is receiving more and more attention as companies strive to increase their revenue, and to do so at a faster pace. Nevertheless, there has been hesitation over whether this sales phenomenon is a hype bubble or a growth market.


Data from Sirius Decisions points to a 63% increase in spending in this area. Plus, the four B2B selling trends I highlight below point to 2015 being the year of sales enablement.

Distributing Content Via Social Media

90% of buyers want more content, and social media can be that additional avenue for prospects to find information (Edelman). Indeed, 78% of salespeople using social media outsell their peers, and social media users were 23% more successful at exceeding their sales quota (Forbes).

78% of salespeople using social media outsell their peers

As your marketing team develops fresh content, consider not only how you can utilize it in your direct communications with prospects but also potential channels where they may be seeking information. This strategy offers credibility for both the business and the sales representatives by establishing the sales team as authorities in the field rather than just transaction-focused product peddlers.

An added benefit: maintaining that top-of-mind awareness for potential buyers.

Adapting to Buyer Needs Throughout the Sales Cycle

By this point, most businesses have realized that having content is instrumental to the buying process. However, the value of content comes from its distribution. In a recent survey of B2B buyers, 70% of the content that they engaged with prior to making a purchase decision was self-discovered, as opposed to being provided by a sales representative (Forrester). Sales people need to guide the selling process.

Strategically presenting prospects with relevant and targeted content from an early point in the sales process is a powerful way to educate and persuade those potential customers, helping them progress further through the sales funnel.

Data-Driven Content Sharing

Many companies do not have data on the performance of their content, i.e. which pieces are the most viewed, downloaded, engaging, etc. Therefore, it comes at no surprise that over one-third of buyers say the content they see is neither relevant nor useful (Content Marketing Institute).

Over 1/3 of buyers say the content they see is not relevant or useful

The best way for companies to increase their bottom line is to work smarter; use metrics to determine which pieces of content are most effective in extending the reach of your message and have the greatest success in helping to close deals. Perhaps most importantly, Sales and Marketing need to maintain a continuous feedback loop. This ‘shareconomy’ of knowledge depends on sharing rather than hoarding both content and feedback.

With regards to efficiency and productivity, Sales can offer insight into what works and where there are gaps in the content library, while Marketing will be able to better focus their time and optimize efforts. The result is a win-win situation: your sales team will be more likely to use the content in their sales process if they provided some input, and marketing can make informed decisions about creating effective content.

Leveraging Technology In the Sales Process

According to a 2014 CSO Insights study on sales performance optimization, salespeople spend a majority of their day performing administrative and account management duties and only 37% of their time actually selling. The most effective way to improve sales performance is to free-up time spent on non-sales activities and instead focus more on engaging with prospects.

Sales enablement tools can automate and streamline the sales process and empower sales reps with the right message at the right time, increasing effectiveness and driving sales. By making it as easy as possible to access the content, sales reps are far more likely to use it.

Ultimately, sales people need to add value to the conversation and engage buyers early on in the sales process with the most relevant content possible. Marketing can help by arming the salesforce with insight-driven collateral. The final piece in the puzzle is sales enablement technology, which can be used to establish best practices, help businesses better understand their customer, provide insight into buyer needs and behaviors, and improve sales effectiveness.

The outcome? A collaborative environment where marketing and sales share insights and have aligned goals, resulting in increased productivity, efficiency, and revenue.



The post Top 4 Sales Enablement Trends for 2015 appeared first on KnowledgeTree.

Categories: ECM
Syndicate content