AdoptOS

Assistance with Open Source adoption

ECM

Liferay 6.2 Certified Professional Developer Now Available

Liferay - 8 hours 20 sec ago

The Liferay Certification team is very happy to announce the availability of the Liferay 6.2 Certified Professional Developer exam (LRP-624).  This is an update to the popular Liferay 6.1 Certified Professional exam and continues to focus on validating a developer’s understanding of core concepts and best practices for developing Liferay plugins.

Many exciting new features were introduced in Liferay 6.2 and several of those are included in the subject material for this certification exam.  Be sure to review the Exam Blueprint for a complete list of topics covered.

As always, the best way to prepare for this exam is to participate in an official Liferay Training and from now until the end of the year we’re offering a free exam voucher with every seat of Developing for the Liferay Platform 1 public training purchased.   There’s no special sign up required, just register and pay for a Developing for the Liferay Platform 1 public training held during the month of November or December and after completing the course you’ll receive an exam voucher.  If you have already registered for a course, then you’re all set!

The existing Liferay 6.1 Certified Professional Exam (LRP-614) will continue to be available for developers that have not had a chance to upgrade to Liferay 6.2 yet, so be sure to select the correct exam during the registration process.  If you have any questions please review the Certification FAQ or contact certification@liferay.com

Jeffrey Paul Handa 2014-10-31T18:23:29Z
Categories: CMS, ECM

The Hidden Secret to Sales Enabling Your Customers’ Entire Path-to-Purchase

KnowledgTree - 13 hours 16 min ago
When most of us in the B2B world think about content marketing, it’s typically in the context of creating value for end users — the organizational personas who could benefit from our products and services, the customers who actually use them, and, ultimately, the decision makers who write the check.

While those audiences certainly deserve our attention, that top-of-funnel focus has also caused some B2B organizations to neglect another enormously important audience: the sales team.

“(Content marketing is) a strategic marketing approach focused on creating and distributing valuable, relevant, and consistent content to attract and retain a clearly defined audience—and, ultimately, to drive profitable customer action.”

Considering one of the core tenants of content marketing is not to sell, that might sound like an odd suggestion. But as customers continue to conduct more research on their own and engage sales at later stages of the buyer journey, sales and marketing teams must do more to join forces and align their efforts.

Just look at the revised definition of “content marketing” from MarketingProfs and The Content Marketing Institute’s “B2B Content Marketing: 2015 Benchmarks, Budgets, and Trends” report:

“(Content marketing is) a strategic marketing approach focused on creating and distributing valuable, relevant, and consistent content to attract and retain a clearly defined audience—and, ultimately, to drive profitable customer action.”

Why This New Definition Matters to B2B Businesses

For most of content marketing’s existence, the justifiable focus of the practice was on creating value for customers. No self-promotion. No product pitches. No “me first” attitude.

And that’s still the case. The difference now is in how, when, and where that value is delivered.

As most of us know by now, the line of demarcation between sales and marketing is markedly blurred — if it’s existent at all. Meanwhile, customers are engaging with brands across a myriad of platforms and channels, and initiating that engagement at varying points along their journeys.

What does that mean?

It means marketing can’t just focus on engaging customers with quality top of the funnel content. While that part of the path-to-purchase is important, stopping there is akin to hooking a fish and neglecting the next step: Actually reeling it in.

Embracing Sales Enablement to Optimize Content Coverage and Conversion

Unfortunately, MarketingProfs and The Content Marketing Institute’s report also revealed that B2B marketers have less confidence in the effectiveness of their content marketing programs this year than they did in 2013 — 42% vs. 38%.

That’s a troubling stat, but it can change with a simple mindset shift.

By creating content for sales enablement — rather than just for specific marketing channels or lead generation initiatives — businesses can actually amplify the reach and power of that content.

By definition, sales enablement content helps everyone.

Why? Because, by definition, sales enablement content helps everyone. It helps marketers uncover critical objections or pain points (great fodder for top-of-funnel content). It helps salespeople better understand the historical context of their prospects’ journey (and equips them with content for the later stages of that journey). And it helps the business by allowing it to blanket the entire path-to-purchase (improving its chances to win deals).

Oh, and it helps the customer, too — by eliminating disjointed, poorly aligned sales and marketing content that doesn’t address their stage-specific needs. Given the aforementioned “new” definition of content marketing, that’s reason enough to jump aboard the sales enablement bandwagon.

The post The Hidden Secret to Sales Enabling Your Customers’ Entire Path-to-Purchase appeared first on KnowledgeTree.

Categories: ECM

Audience Engagement: Giving People What They Want

Liferay - Thu, 10/30/2014 - 12:41
When people visit your website, does it remind them of generic cola or Coca-Cola? Is it a unique and memorable experience? This question seems to be important as we consume more billboards, commercials and Internet ads. To successfully target your audience, companies are now challenged to deliver a meaningful message that appeals to user background and demographic.   Showing site visitors things they are interested in is known as content targeting. It is essentially giving the right people the right content at the right time. Traditional marketing has dealt with content in a shotgun-blast approach. This meant irrelevant surface-level messages to a wide range of visitors with various backgrounds. The goal of content targeting is to guide users to the place you want them to go with content that matches their shopping preferences.   In order to do this, you must know who your users are as they interact with your site. Where are they coming from? What sort of function do they serve within their company? For example, if a user is visiting your site from Spain, it would be more beneficial for him to see an advertisement for an event in Spain than in Germany. Or if a user happens to work in the education industry, it would make sense to guide her towards receiving educational or school-related materials. In essence, it's having the knowledge and ability to offer appropriate calls-to-action.    The first step in effective content targeting is research. You should identify the types of people visiting your site (by capturing their information through forms or surveys) and then set goals for users. Get a feel for their business and what their roles are. It would also be helpful to consider the following questions:
  • Who are you trying to engage?
  • What information is important to them?
  • What is the best way to display this content on the site?
The user experience of your site shapes how visitors might feel about your company or product. If you can successfully identify your target audience, you will be able to deliver content that matters to them. Users will reward you with more website interaction, and your company should increase its qualified leads in return.   Are you currently on Liferay 6.2? Visit the Marketplace and download our Audience Targeting app. To learn more about content targeting, check out Ryan Schuhler's LRNAS2014 presentation and slides   *****

Liferay: Nerd On The Street is a blog devoted to sharing new ideas about business and technology. To continue the discussion, post your thoughtful insights below.

Martin Yan 2014-10-30T17:41:00Z
Categories: CMS, ECM

The Buffet Slide Deck: Lessons for Marketing and Sales Enablement from Golden Corral

KnowledgTree - Thu, 10/30/2014 - 11:28
If you’re a sales enablement or marketing professional you likely have a buffet deck. Bursting with dozens, or even hundreds of slides, these presentations are meant to serve as broad a segment of your customers as possible.


Of course they’re not meant to all be used. That’s why they’re a buffet, after all. You’ll have slides for different product lines. Multiple case studies. Even different ‘About Us’ sections depending on geography. And odds are there will be different messages based on industry or by persona.

For sales enablement and marketing, it seems like a sensible approach. By developing a buffet slide deck you have fewer sets of presentations to update. And you can point sales people back to one deck when they ask or search.

But like many buffets, your presentation deck is tough to digest for sales. Faced with so many choices, they run into these standard buffet problems:

1. Too Many Choices, Too Much Time

Walking into a buffet you’re overwhelmed by the choices. Is it taco night? A grilled steak? Should you hit the salad bar first? It takes a while to orient yourself. Even a breakfast buffet – do you do fruit and oatmeal, or bacon and eggs?

The same is true for your master presentation deck. You’ve got so many choices available to sales people. They’re spending valuable time figuring out which slide matches their sales situation, rather than selling.

Buffet Lesson: Clearly organized sections in the buffet make choice simpler. Salad to one side, breads to another, barbecued meats in another zone. Match content with sales situations (e.g. product or persona) so the right slides can be quickly pulled by sales reps.

2. I’ll Have the Steak, Again

You’ve gotten past the huge range of choices and found something you love, the steak. But now every time you come back to the buffet you get the steak again and again. No looks at the salad bar, it’s the steak for you!

Sales teams are under tight time constraints. When they find slides that work, they’re likely to reuse the same slides next time around – even if there are better matches for their sales situation. Like using a banking case study when speaking to a manufacturer.

Sales teams are under tight time constraints. When they find slides that work for you, they’re likely to reuse the same slides next time around – even if there are better matches for their sales situation.

Buffet Lesson: Promote different options for different appetites. Fish fries on Friday or lighter options throughout the week help diners know about other options. Same goes for your slides. Recommend different slides as new material is released and for different sales situations.

3. I Think It’s Gone Bad

No one wants to eat food that’s gone bad. That’s a challenge for buffets to know when the mac and cheese has gone untouched for 4 hours. And it’s a waste for the restaurant. They don’t want to be cooking food that never gets eaten.

Marketing and sales enablement teams are cooking dozens of slides for these presentations. And each slide (or slide deck) requires a lot of effort to produce and update.

Buffet Lesson: Buffet employees closely monitor the time a dish has been out for customers. Too long and it’s pulled. Plus, they use data to understand which items aren’t being consumed. So if that chicken dish you love so much is now off the buffet, it’s likely because you were alone in your love.

Marketers and sales enablement pros need to measure the actual consumption of their slides and decks. Not just whether it’s been downloaded by a rep, but whether customers are viewing them. That helps your teams choose which slides to invest in and which to send to the dumpster.

4. Too Much on the Plate

The eternal problem of the buffet is how to resolve its economics. When you have lots of the people filling up their plates, not eating it, and going back for more – it gets expensive. It’s often a problem of abundance. With so much food available, there’s more likelihood diners will add more to their plate.

With dozens of quality slides that are interesting for prospects there’s a temptation to overdo it.

Same holds true for your buffet slide deck. With dozens of quality slides that are interesting for prospects there’s a temptation to overdo it. That is, to include far more slides than a prospect could reasonably consume in a meeting.

Buffet Lesson: Instead of letting diners cut their own roast beef or piece of pie, buffets will either pre-cut or have a server cut it for the diner. For marketers, look to tools that auto-generate presentations tailored to your sales person’s needs.

5. The Chocolate Fountain

After going to a buffet a few times, you start to understand the ingredients and what it would take to make it yourself. You head to the dessert buffet and there is ice cream, strawberries, and some chocolate sauce, perhaps. You get the feeling you could just as easily do this at home yourself (maybe even better!).

As sales people use your buffet slide deck, the same thought may come to them. They could make their own tailored decks instead. But downloading and reusing a customized deck means sales teams won’t know when slides are updated, errors corrected, or new updates are added – like a great new case study or content that supports a product launch.

Buffet Lesson: Keep it fresh. Like the chocolate fountain at the dessert buffet, you encourage your clientele (sales teams) to come back to your master presentation. Let the team know about new and important content, especially when it is most relevant to them – i.e. based on their sales situation.

Buffets can be a lot of fun, and can be especially useful when you have a broad selection of people with different tastes (or requirements). But make sure you’re offering a buffet that helps sales teams to communicate your message as effectively as possible. Do it by filling their plate with fresh, tasty, relevant messages.

The post The Buffet Slide Deck: Lessons for Marketing and Sales Enablement from Golden Corral appeared first on KnowledgeTree.

Categories: ECM

Community Meetup at Devcon Darmstadt, 4 November

Liferay - Thu, 10/30/2014 - 05:17

Greetings Earthlings that come to Darmstadt for Devcon, the Unconference or LPSF Germany

As last year, we'll have a community meetup. This year we'll be right outside Darmstadt Hauptbahnhof (main station) in a brewery. We'll meet Tuesday, 4 November at 19:30 in Braustüb'l, Goebelstrasse 7.

If you've been there in the previous years, you know the drill: Register for free beer. We have vouchers for you if you are on the list. And you get on the list here. You're welcome to come unregistered - you're just risking to pay for your own beer.

Olaf Kock 2014-10-30T10:17:29Z
Categories: CMS, ECM

Liferay 7 Milestone 2 - The adventure continues

Liferay - Wed, 10/29/2014 - 02:58

It's been around 2 months since Milestone 1 and we are now ready for the second public deliverable of the ongoing Liferay Development: Liferay 7 Milestone 2. As usual it can be downloaded in Sourceforge’s downloads page. If you prefer to get them from a Maven repo you can get it from Liferay’s maven repo. If you prefer to get it from GitHub you can use the 7.0.0-m2 tag.

If you didn't download Milestone 1, no regrets, just read again its highlights and download with Milestone 2. Compared to the previous milestone, this one includes mainly refinement and bug fixing of the new features, as well as quite a lot of work doing refactorings and starting new cool functionalities that will surface in the milestones to come.

One significant new improvement that you can already see in this Milestone is Alloy Editor. Alloy Editor is a new project lead by Iliyan Peychev which aims at greatly improving the user experience when creating WYSIWYG content. It started drawing inspiration from Medium.com and has outgrown it quite a bit. It uses CKEditor under the hood but provides a new UI on top of it. We have started by applying it to blogs (since it's a simple case). Here are some screenshots of how editing a blog entry feels like in Liferay 7 Milestone 2.

1) This is how the editor looks when it's first open:

2) This is how it looks once I've entered a title, subtitle and some content. Look at the plus within a circle. That's what allows you to insert stuff, such as images (which you can also just drag and drop inside the text):

3) If you want to add format to some text, just select it and a nice simplified toolbar will offer the format options.

4) All non-content related fields are organized in a secondary tab called "Settings":

We are very interested in getting feedback on the authoship experience in blogs, since our goal is to later apply Alloy Editor to other applications.

For a complete list of all improvements done in this milestone visit the board: Liferay 7.0 M2 New features grouped by Area.

Send us your feedback about Alloy Editor or any other feature in any Liferay 7 milestone through the Beta Testing forum category

Jorge Ferrer 2014-10-29T07:58:09Z
Categories: CMS, ECM

Display navigation drop down on click event

Liferay - Sun, 10/26/2014 - 00:21

Over the last few weeks I've been trying to figure out a way to make navigation's dropdown menus display on click instead of hover.

I added this code to the theme's main.js file.

AUI.add( 'liferay-navigation-interaction-click', function(A) { A.mix( Liferay.NavigationInteraction.prototype, { _initChildMenuHandlers: function(navigation) { var instance = this; if (navigation) { navigation.delegate(['click', 'clickoutside'], instance._onMouseToggle, '> li', instance); navigation.delegate('keydown', instance._handleKeyDown, 'a', instance); } }, _onMouseToggle: function(event) { var instance = this; var mapHover = instance.MAP_HOVER; var eventType = 'hideNavigationMenu'; if (event.type == 'click') { eventType = 'showNavigationMenu'; } mapHover.menu = event.currentTarget; Liferay.fire(eventType, mapHover); }, }, true ); }, '', { requires: ['event-click', 'event-outside', 'liferay-navigation-interaction'] } );   the click outside event will fire when you click outside of the currently clicked item, which works great for drop downs. Let me know if you have a better way of doing it.   Note: you might need to pull in the newly created module (liferay-navigation-interaction-click) in your AUI.ready or AUI.use part of your main.js Bradley Wood 2014-10-26T05:21:46Z
Categories: CMS, ECM

An experience in EVP: a little insight on learning

Liferay - Sat, 10/25/2014 - 17:40
img { }

Then it happened again. I felt like a few times a felt before. That moment of symbiosis named "learn". I've got into the "flow" of Csikszentmihaly. (It requires a few minutes of practice just to ignore the characters and pronounce it correctly: cheek-sent-m-hy-ee. Really simple for our hungarian fellows, though).

Last October 23th and 24th some coworkers, teachers and me have developed activities in the Artur Mendonça State School, in virtue of brazilian National Week of Science and Technology. I've ministered a short programming class using educational games from Code.org whereas Maíra Bello and Pablo Pinheiro, my very gentle fellows to whom I am very thankful, talked about oportunities for young students in multinational enterprises. In 2012 I've made a similar class with Liferay sponsorship that then gave some gifts that were drawn among the participants.

I am a former student of that school, that is located in Moreno, 28 km away from Recife. That's where I've lived as a teenager and where I finished high school. Now, I make a point of going back there and work for it as a volunteer. It is grateful to know that your former teachers are now your fellows, your equals, but the students are also your equals. Thus, by transitivity, I see that in fact teachers and students are equal, but they are attached to a hierarchical and disciplinary structure that discharacterizes that egalitarian relationship. But this is a subject for another post.

I choose to play with programming with the students. Programming is part of my work. But it also makes part of a passion that revolutionized my life and opened many doors. I don't know whether doors will be open in the same way for all that students, but surely the doors of the mind will be reconfigured. However, it was not the main reason for which I went there.

When you go out high school, you still learn. You learn a lot. You become an adult, and it is just the begining. You thus understand how you learn well and how you learn not so well. You learn that you have to learn uninterruptedly to do your work better and better. You learn what awaits you when you put your feet in the world. When you have to get by. There are so many new things that I can't be quiet, instead of comfortable with my work. I want to share what I've seen in my new world. A little bit of this new world that includes to know that everyone can learn with a facilitator, a mentor who is also your equal, who can speak your language, who PLAYS with you, who empathizes with you, who has the needed experience to orient, but who has not the many vices that prejudices and undermine the facilitation proccess.

This present year, different from what happened in 2012, I decided to use online resources to play with programming. The school's structure is precarious and there's low internet bandwidth available for everyone. I had to bring with myself a home router so that the students could connect to do the activities, but it was not enough. Some of them did not manage to connect despite many attempts to do so. This was kind of frustrating. A lesson was learned: improve planning to set up a better structure next time. On the other hand, I see that we got out from nothing at all to a learning session that had the most part of the attendees excited for playing with programming and having regulated learning experiences that were... Fun! Exciting! That made us to stay in the classroom long after the estimated time was up so much that I had to lunch a cold food after ignoring the successive warns that my former teacher made. I just couldn't! I was playing too!

The interaction was one of the most interesting things. Between one laughter and another of the Red Bird, I could see in the face of the students the real meaning of epic win that Jane McGonigal cites in his classic TED Talk. The students' exultation for beating the challenges was both visible and audible. And if they often lack motivation, pursuing activities that stimulate this kind of feeling, of epic win, is an auspicious way to experiment.

I hope to repeat that experiment soon. To reach more students. To go beyond. To have them search for information more deeply and, while interacting with one another, manage to promote experiences that culminate with the construction of their own new, mature, deep and interconnected knowledge. For me to be able to facilitate and dive myself in the learn of this proccess is one of the great pleasures I have in my life.

Cleydyr de Albuquerque 2014-10-25T22:40:12Z
Categories: CMS, ECM

Securing Liferay Chapter 2: Liferay's configuration

Liferay - Thu, 10/23/2014 - 16:12

You probably know the basic installation instructions for Liferay Bundles: „unzip and run startup.sh“ - with this you get to a working Liferay installation in a minute. It will run with all defaults - which might not be what you want in production.

This is part 2 of a series. Start with part 1 for "Introduction, Basics and Operating System Level", then continue here and check if more chapters are already available.

What Configuration?

As we've covered the Operating System Basics and the appserver with Liferay is running as an unprivileged user, let's check Liferay's configuration. Some of Liferay's configuration is done on the UI layer and gets persisted to the database. As the UI options naturally are spread all over the administrative UI, let's put this to the side for now. There's another resource that provides quicker ROI:

portal.properties

First of all: As a motivated System Administrator, you should have access to portal.properties already. It's well packaged (so that you don't accidentally change it) in Liferay's WEB-INF/lib/portal-impl.jar. Go ahead, extract it and keep it around. Then read it - yes: I actually recommend to read it. It's roughly 10.000 lines of configuration options, commented optional configuration as well as a lot of documentation for the individual configuration options.

You can also get hold of a HTML rendering of this file on the documentation server if you don't like the formatting of portal.properties. It might be easier for the eye to read.

Do you need to read it line-by-line? No. There are large sections, that you can easily "page-down" through. But if you have a broad idea of the content, you'll get a lot of ideas about Liferay's configurability. In fact, you might find features that you never knew to be in Liferay. I have learnt a lot about Liferay's features this way. And I have found some convenience options, that I'll add to every instance that I maintain.

(If you read it now and come back once you're done: I promise that I'll be still here when you come back)

...

...

...

...

...

...

No, really. Go read it.

...

...

...

...

...

...

...

What now?

Wasn't that an amazing read? What did you learn that you didn't know of?

Now that you've been through the file at least once, you might want to go through it again - now searching for specific values. Try the following search terms (and again, some of the places you can page-down through). Note, by design some are only partial words (e.g. in order to search for "security" or "secure", just search "secur")

  • password
  • encrypt
  • hash
  • restrict
  • secur
  • auth
  • timeout
  • servlet.filter
  • deploy
  • register
  • https

And when you're done with this, you probably want me to name the settings that you must set in order to get the "secure" certification for your configuration. Right?

Well, unfortunately I won't and I can't: What adds security for one ruins a feature for somebody else. You're totally required to do your homework - I can just point you to the options that you have. I think I forgot to mention earlier that security is hard work, but you probably knew this. This is part of the work. (oh, and please suggest your favorite settings that you keep an eye on)

If you don't like to do this work by yourself: My colleagues and I are available for rent ;). We'll still ask a lot of uncomfortable questions though. Ok, pun aside, I'll give you a few places to start:

Starting places

Yes, I'll give you a few. You'll have to promise though, that you'll view these as starting points. Everybody's system is different and I don't claim these to be complete (in fact, I'm keeping some options back, giving you the opportunity to shine in the comments;) )

jdbc.default.password: Do you like cleartext passwords to be available on disk, for anybody opening that file? Probably not. Liferay's default configuration uses the manual database configuration with driver, URL, name and password. However, you can also utilize JNDI and just replace the four classic configuration lines with a single entry on jdbc.default.jndi.name. Look it up, now you'll need to configure your application server to make the JNDI connection available to Liferay, and Liferay doesn't have a chance to know the connection password. On Tomcat this AFAIK still means that you have a configuration file with the password in clear text, but that's in tomcat's realm, no longer with Liferay. (Correct me if I'm wrong)

company.security.strangers.*: If you are running an intranet portal, you probably don't want random users to generate new accounts on your portal - by default they can. And if your content administrators just protect content for logged-in users, this can poke some holes.

portal.security.manager.strategy: If you're running 3rd party plugins from marketplace or other developers. If you mandate that plugins have security manager (PACL) enabled - you might want to enforce these settings.

ldap.*: It's easier to move your LDAP configuration around and configure different servers, if it's just a bunch of lines in portal-ext.properties. This might rather be convenience than security, but nailing the login process makes sure that only the right people can log in (and you can test the setup, move it around without typos etc)

*.auth.enabled: Determine the kinds of login that you allow on your system. Do you want to allow OpenID? Enable Facebook?

passwords.encryption.algorithm: On 6.2 Liferay uses a pretty good default. If you're running an older version and keep the hashed passwords in Liferay's database (as opposed to LDAP), you might want to know other options. Should your user database ever get loose, you don't want the hashes to be easy to brute-force.

default.admin.*: I don't like default user accounts, in any system. Even though Liferay comes with its own setup wizard where you can configure the admin user, you shouldn't timeout the session - otherwise you'll find that the default password has been taken from here (ever had a phone ringing while you did administration work? Or worse, a twitter notification or a squirrel in front of your office?)

com.liferay.portal.servlet.filters.*: Various filters that are active by default. If they refer to a product name that you don't know, most likely they can be disabled (e.g. for the SSO options that Liferay supports, you can disable either all or all but the one that you're using)

Take these settings as your starting point. Go further through the file and check what's around these settings. If you have your own favorite configurations that must not miss in this list (hint: it's not complete), consider adding them to the comments on this article. This way everybody gains that knowledge.

User Permissions

New users in Liferay, by default, are members of the roles "User" and "Power User". You can remove the "Power User" association, but should keep "User" as this is a sign that they're authenticated. However, this role comes with quite a lot of permissions. If they match your requirements - I don't know. You should inspect the list of features that they enable. Decide if your users should be able to maintain their own personal sites: This might open you up to malice behaviour if they can add custom administrative portlets to their sites. Liferay's portlets are typically safe and can't be added to personal sites, but you might have more than just the stock portlets.

Not to mention that your helpdesk might be thankful if they don't have to repair your user's personal sites every now and then when they deleted important portlets from their pages.

Do you <script>trust();</script> your content authors?

If you get what the headline implies: Answer the question. If you do trust them, continue on the next chapter. If you don't get the headline or don't trust your authors: Install AntiSamy (CE or EE) which will "make them trustable" by applying the OWASP rules to their content and eliminating potentially dangerous (scripting) content. You can also implement this functionality yourself by implementing com.liferay.portal.kernel.sanitizer.Sanitizer and configure sanitizer.impl in portal-ext.properties. When you implement this yourself, you can allow certain content that otherwise would be blocked (like embedding content from whitelisted external sites - like youtube - etc)

Portlets

You can disable quite a lot of portlets that Liferay delivers out-of-the-box if you don't need them. In the unlikely event of a loss in cabin pressure (e.g. in case one of them has security-related issues), you don't even have them available. When you choose a product like Liferay, you want it to have as many features as possible. If you want to lock down the installation, you want as few of the unused features being exploitable as possible. Careful: This might annoy your business users that expect to have the full feature set of Liferay available to them.

Portal Instances

I've seen a neat use of portal instances once. While instances are positioned for multi-tenancy, I personally don't really like all of the tenants to be sharing one portal/appserver. However, there's a nice aspect that rarely gets exploited: Only the default instance has access to the server level administration - e.g. only there you can install new portlets, trigger reindexing or garbage collection. When you use your default instance purely for administration and one extra instance for all content, none of your content administrators (not even those with portal-wide administrator roles) will be able to access these features and install server side code through Liferay's UI.

Future chapters
  • Fixing the port 8080 issues (and more HTTP-level issues, like https)
  • more Tomcat lockdown
  • a new episode of Radio Liferay on Security

...coming soon...

Looking forward to see some of you next week at Devcon. Remember to sign up for the community meetup.

Olaf Kock 2014-10-23T21:12:14Z
Categories: CMS, ECM

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!

Migue

 

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: http://opensourceconference.co.uk/files/2014/03/Open-vs.-Closed-Source.pdf

    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.

Database:

  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

Standards

 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.

 

Conclusion:

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 Liferay.com.

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 (http://forgerock.org/downloads/opendj-archive) 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 https://www.apereo.org/cas/download 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  : test@liferay.com
  • b.      Password: test@liferay.com

 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="org.springframework.ldap.core.support.LdapContextSource"> <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="com.sun.jndi.ldap.read.timeout" value="3000" /> <entry key="java.naming.security.authentication" value="simple" /> </map> </property> </bean>  
  • Add the BindLdapAuthenticationHandler to authenticationManager  to perform authentication with LDAP. Reemove the bean  SimpleTestUsernamePasswordAuthenticationHandler from property authenticationHandlers.                                                                
  • <bean  class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
  • 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 portal-ext.properties file and restart the server. Make sure that test@liferay.com 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 cas.server.name=http://localhost:9080 com.liferay.portal.servlet.filters.sso.cas.CASFilter=true auto.login.hooks=com.liferay.portal.security.auth.CASAutoLogin

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 ldap.security.principal=cn=admin,ou=People,dc=igate1,dc=com ldap.security.credentials=test ldap.auth.enabled=true ldap.auth.method=bind ldap.auth.search.filter=(mail=@email_address@) 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 ldap.group.default.object.classes=top,groupOfUniqueNames ldap.group.mappings=groupName=cn\ndescription=description\nuser=uniqueMember ldap.import.enabled=true ldap.import.on.startup=true ldap.import.interval=10 ldap.import.user.search.filter=(objectClass=inetOrgPerson) ldap.import.group.search.filter=(objectClass=groupOfUniqueNames) ldap.import.method=user #ldap.import.method=group ldap.import.create.role.per.group=true 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 user.groups.name.allow.numeric=true default.landing.page.path=/user/${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 test@liferay.com/test 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: test@liferay.com WHAT: ST-3-RMypRPMDKO0MgMfkIi1C-cas01.example.org 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: 127.0.0.1 SERVER IP ADDRESS: 127.0.0.1 ============================================================= WHO: audit:unknown WHAT: ST-3-RMypRPMDKO0MgMfkIi1C-cas01.example.org ACTION: SERVICE_TICKET_VALIDATED APPLICATION: CAS WHEN: Wed Oct 22 10:39:36 GMT 2014 CLIENT IP ADDRESS: 127.0.0.1 SERVER IP ADDRESS: 127.0.0.1 ============================================================= 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 Salesforce.com 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:

http://mdata.liferay.com/html/mdata-public/liferay-beacons-service-get.jsp?event=lrfs2014

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)

http://mdata.liferay.com/html/mdata-public/liferay-beacons-service-get.jsp?event=lrfs2014&from=1402583699000

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):

http://mdata.liferay.com/html/mdata-public/liferay-beacons-service-get.jsp?event=lrfs2014&from=1402583699000&to=1402583799000

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   http://www.liferaysavvy.com/2014/03/liferay-building-blocks.html   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 RoleLocalServiceUtil.java 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 UserGroupRoleLocalService.java 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 UserGroupRoleLocalService.java 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="http://liferay.com/tld/portlet" prefix="liferay-portlet" %> <%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %> <%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %> <%@ taglib uri="http://java.sun.com/portlet_2_0" 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 http://www.liferaysavvy.com Meera Prince 2014-10-19T05:48:20Z
Categories: CMS, ECM
Syndicate content