Crafter Rivet Spins Off Into Crafter Software

Posted by on May 10, 2013

Rivet Logic Announces the Spinoff of Crafter Software

This week Rivet Logic announced the launch of Crafter Software Corporation, which will offer commercial support and licenses for the Crafter CMS open source project (previously known as Crafter Rivet). Crafter CMS is an award-winning web content and experience management solution that allows organizations to build and manage rich online experiences on the web, mobile, social, and all digital online channels.

“We have seen tremendous commercial demand for Crafter’s modern, open and well-designed solutions in a variety of industries,” said Mike Vertal, CEO of Rivet Logic. “With hundreds of sites now in production and interest surging from major organizations around the world, we knew the time was ripe to spinoff a new company entirely focused on continued development and global support of Crafter.”

Crafter Software’s solutions are offered as both a Community Edition under the GNU open source license, and as an Enterprise Edition with a commercial license and global support.

Rivet Logic will continue to offer Crafter consulting and full-lifecycle implementation services for Web content and experience management solutions.

What does this mean for you?

If you are an existing Crafter Rivet user or customer, you will continue to get the great consulting and solution support from Rivet Logic, along with software support from the dedicated team at the new Crafter Software — all from the same team that was supporting you before.

If you are considering Crafter for your next Web content management solution, you now have the extra confidence that Crafter Software has been established to focus on the continued innovation, development and support of Crafter on a global basis.

If you have any interest in a new, modern enterprise Web CMS that was built for the new era of web engagement, check out the new Crafter Software at craftersoftware.com and craftercms.org

Learn More

To read the press release, visit www.businesswire.com/news/home/20130507006137/en/Web-Experience-Management-Simplified-Crafter-Software

For more information on Rivet Logic’s Crafter-based WCM/WEM solutions and consulting services, visit rivetlogic.com/solutions/web-content-management and rivetlogic.com/services/crafter-consulting

Website Snapshots with Crafter WEM and Alfresco

Posted by on April 04, 2013

Every now and then we see a requirement from customers who specify that a snapshot of the entire repository for the website be maintained on a deployment or on a daily basis in order to enable a audit of the entire site at a given point in time, or to allow a rollback of the entire site at a given point in time.

The versioning system within Alfresco’s core repository does not natively support snapshots.  While it is possible to model this capability within the system through custom coding, the solutions tend to be complex while the demand for the functionality remains low.   In any technical solution it is important to keep things as simple as possible.  Whenever you run into a narrow requirement that threatens to complicate your systems you need to take a step back and determine:

  • Is the requirement is truly necessary?
  • Can the requirement can be changed slightly to work better with the existing technology?
  • If the requirement is necessary, can you can integrate with a 3rd party that solves the problem directly without complicating the overall solution?

In our example we are left with the third option.  Given this, the first question is: are there any existing, robust, affordable solutions for maintaining snapshots of an entire collection of “assets” that already exists and can be cleanly integrated?

The answer is “Yes.” Snapshot capabilities while not very common in web content management systems are extremely common in source code control systems like SVN, Git and others.  All of these off the shelf source control systems are extremely robust and are free open source platforms.

Following the idea that we’re going to integrate with an existing source control system to meet the snapshot requirement, the second question is: can our WCM environment represent all content and metadata as files?

Again, with Crafter WEM the answer is yes.  All content and metadata are represented as XML files or raw native formats such as images, rich documents, videos etc.

Our third question is obviously: how does the integration work?

Let’s review our business and technical requirements:

  • We want a snapshot of content that went LIVE on our site on either a deployment OR daily basis.
  • We need to be able to audit the entire site at a given point-in-time if an investigation is required (by law or organizational policy)
  • We want a integration with a source control system that does not complicate our overall WCM software and solution.
  • Our solution must cover all content and metadata

Now let’s review a potential solution for these requirements.

alfresco-wcm-repository-snapshot-arch

Getting published content in to the source control system

Because Crafter WEM is a decoupled system where the authoring and delivery system are independent systems separated by an approval process, and a deployment, multi-channel, multi-endpoint deployment is a natural part of the architecture.  As you can see in the illustration above, we have a typical deployment to our web infrastructure in the DMZ and we also have a deployment agent inside our corporate firewall, which will put content and metadata in a disk location managed by SVN, Git, or some other source control management system. All metadata and content can be deployed to the source control endpoint.

Delivering content and metadata to the source control system is a simple and robust solution.

Creating a snapshot

To create a snapshot we must check-in (AKA commit) to the source control system.

If we want to create a snapshot on every single deployment we can use a simple callback in our deployment target configuration to perform a check in via a command line operation.

Code Listing 1:
The configuration below demonstrates how to invoke a command line operation from the deployment agent after content has been received.

<beans xsi:schemaLocation="...">
    <bean id="MyTarget" init-method="register">
        <property name="name"><value>sample</value></property>
        <property name="manager" ref="TargetManager"/><property name="postProcessors">
            <list><ref bean="commitSiteOnDeploy"/></list>
        </property>
        <property name="params">
            <map>
                <entry key="root"><value>target/sample</value></entry><entry key="contentFolder"><value>content</value></entry>
                <entry key="metadataFolder"><value>meta-data</value></entry>
            </map>
        </property>
    </bean>
    
    <bean id="commitSiteOnDeploy">
        <property name="command" value="svn  "/>
        <property name="arguments">
            <map>
                <entry key="ci" value="PATH TO DEPLOYMENT"/>
            </map>
        </property>
    </bean>
</beans>

However, if we want to commit a daily (or any time-based snapshot) we can accomplish this with a simple operating system based scheduled task that performs the check in via a command line operation.

Reviewing a snapshot for audit

Reviewing a snapshot in the event of an audit is as simple as a check out of the particular version from the snapshot repository and launching a Crafter Engine instance on top of the checked out content.

Reverting our WCM environment to a particular version

Reversion of our entire site would require the following steps

  • Check out the particular version
  • Either create a new WEM project based on the check-out content and re-deploy to your targets
  • OR import the checked out site in to your existing WEM project and then deploy to your targets.  Take care to analyze your deployment history for deletes as these will need to be managed if you choose to revert over top of your existing project.

Performing Diff Operations

It’s possible to perform a diff operation between versions at any time. Almost all modern source control repositories support version dif functionality.

If you wish to compare the head of your repository with a particular version you can take the following steps:

  • Check out the trunk of your snapshot repository
  • Copy your preview directory in to your snapshot repository check-out
  • Use source control repository to perform diff operation.

Summary

Repository snapshots are an important requirement for a small number of organizations.  Crafter WEM is able to support these requirements with simple, robust integrations through its deployment architecture and readily available, affordable source control systems.

Building Enterprise Customer Portals with Liferay

Posted by on April 04, 2013

Remaining competitive in today’s market means customer-driven companies must continue to provide their clients with added value, and one of the most effective ways of achieving this is through a customer portal that enables a holistic view of the information customers care about the most. Customer portals also present an opportunity for organizations to generate revenue through strategic discovery features that expose clients to products they might be interested in.

Liferay for Customer Portals

Liferay Portal provides a versatile platform for solving a variety of business needs, including intranets and extranets, collaboration sites with blogs, wikis, and forums, consumer facing websites, and social community sites with built-in social networking features. And one of the most common use cases we’ve seen is customer and self-service portals.

Liferay’s site-based architecture makes it ideal for customer portals. A key capability of these portals is to provide separate sites, pages, and content for each customer. And since Liferay allows you to easily create individual customer sites with very little work, the scoping of the content and digital assets within those sites is supported natively.

LIferay easily supports the two most important features of customer portals – personalization and site-based security.

  • Personalization – Liferay allows for creation of personalized pages for each customer. The information collected within each customer site can then be utilized in creative ways to further enhance personalization and increase user engagement. Liferay roles and teams are often used as an elegant way to differentiate between user types within a single customer site, which in turn opens the door for further fine-grained personalization.
  • Site-based Security – Liferay’s architecture facilitates security by enabling straightforward management of site members and their permissions within the site. Moreover, end users can be appointed as site administrators to help decrease help desk load while providing customers with much needed content ownership and management capabilities.

Challenges and Solutions

Every project has its challenges, and it’s important to follow best practices and address them in the beginning to ensure a smooth implementation. From our experience in implementing customer portals of varying sizes, we’ve seen a number of common challenges and have found successful ways of addressing these with Liferay’s flexible platform.

Information Architecture

The quality of the information architecture will have a large impact on the success of the portal. The information architecture defines the types of content your customers will see inside the portal and the navigation within the portal to get to the right content, so it’s critical to define and categorize the content and display it in a way that’s easy for the customer to understand. A customer portal that makes finding important content difficult is destined for failure.

To resolve this in Liferay, you need to gain a clear understanding of Liferay’s architecture along with best practices. It’s important to involve a customer sample when defining and categorizing your content to determine which content is important for each customer.

Integration

Integration is a critical part of every customer portal because, more often than not, the content that customers typically care about usually resides in external third-party enterprise systems, some of which may change over time. Therefore, the best way to approach integration is with a reusable integration layer.

Liferay supports this with their service builder library, which allows developers to create a standard service layer abstracting all integration logic. With this, technical architects can easily provide their developers with a standard API to use for systems integration, resulting in increased developer efficiency and better overall solution maintainability.

Flexibility

Many customer portal solutions in the market were built to satisfy the immediate needs of those customers. This often leads to the solutions becoming inflexible, so when new technology or new use cases are required, these solutions simply can’t keep up. In addition, today’s users expect Web-based solutions to constantly evolve and get better, making the portal solution framework’s flexibility a key factor in determining both short- and long-term success.

Liferay addresses this challenge with its native support for the implementation and deployment of custom plug-ins to address any future customer needs. Additionally, Liferay was built with customization in mind – almost every aspect of the portal can be customized or overridden without sacrificing the ability to maintain a clear and supported upgrade path.

Branding

The ability for a customer portal to support different branding aesthetics for each customer provides a much appreciated, tailored experience to the users of the portal. The challenge here is that the majority of portal frameworks in the market today don’t easily support site branding, which usually forces adopters of those technologies to stick with one look and feel for all customers. Support for interchangeable skins or themes in a portal, though challenging for the portal vendor, enables more personalized user experiences.

Liferay’s Themes, Layouts, Mobile Support, and Custom Site Metadata allow developers to create unique look and feel options for each customer. The technical knowledge required to implement different skins is standard user interface technology such as HTML, CSS, and JavaScript. This doesn’t just make branding easy, but also quite flexible.

Innovation

Interaction within a customer portal is typically thought to be business-to-customer. However, customer interactions don’t have to be unidirectional, and a new market trend is introducing social customer-to-customer interaction within portals. This social interaction can be particularly beneficial to companies whose revenue depends on successful ongoing transactionality between customers.

Liferay’s flexible platform and robust feature set also allows it to support innovative new features as market trends change. Rivet Logic is proud to be one of the few, if not the only, Liferay partners to have implemented such a portal with a fully integrated marketplace experience for buyers and sellers of services to collaborate and transact within the portal. With features like Google Maps-based discovery, quote management, private messaging, customer service, and more, we were able to build an extremely successful customer portal with the help of Liferay’s flexible framework.

Liferay’s robust portal platform provides a versatile solution for satisfying a variety of enterprise needs, including building consumer-facing websites. Implemented correctly, these customer portals can bring great value to your customers, resulting in increased customer satisfaction and loyalty.

Implement Faceted Search with Solr and Crafter WEM

Posted by on March 25, 2013

Crafter Engine, the delivery component of Crafter Rivet Web Experience Management provides powerful out-of-the-box search capabilities based on Apache Solr.  Solr is extremely fast and provides a wide range of capabilities that include fuzzy matching, full-text indexing of binary document formats, match highlighting, pagination, “did you mean”, typed fields and of course faceted search. Faceted search (aka faceted navigation) is an ability of the search interface to break down a search in to categories that allow a user to filter and narrow down the number of results by selecting only those category values that are relevant.

faceted-search

Before we get in to the construction of a faceted search let’s take a quick step back and look at some basic architecture.

The first thing to think about is the type of thing we’re going to be searching on.  From a web content management perspective, this is often referred to as the content model. A content model in its most basic form is just the description of an entity like an article and its properties such as title, author, publish date, body and so on.    In the figure above we see a search-driven UI that allows the user to narrow down a collection of jeans by size, color and fit.  In order to enable this we have to “model” the jeans.  These filters are criteria that must be associated with each instance of the content type.  Each field (color, size, fit) has many possible values that are selected by an author when a jean object is created.

product-model

In the figure above you can see just a small portion of the Jeans product content type in the Crafter Studio drag and drop content type management tool.  Note the fields for size, color and the data sources that pull values for these fields from managed taxonomies.

Once we’ve created our content type we can now create instances of jeans, provide the details for the product and select the criteria that correctly categorizes the pair of jeans.

select-criteria

Whenever an object is published from Crafter Studio (the content authoring environment) to Crafter Engine (the delivery platform), it is immediately indexed by Solr with the help of Crafter Engine’s deployment Solr plug-in.  Once published Solr is aware of each category and selected values for that category.

Now that we have content indexed in Solr we can build a search page. We’re going to build the Jeans category page from the first figure. All of the coding will be done in the Freemarker template language supported by Crafter Engine. For our example we’ll keep the implementation very straightforward without any abstraction.  Advanced coders my choose to factor and encapsulate the code differently.

To begin, create or navigate to your category page content type (standard fields are fine) and then open the template editor.  For a more in-depth tutorial on basic content modeling click here.

template-editor

Now that we have our template editor open and we’re ready to begin coding. Let’s start with a review some basic requirements.

  • We need to maintain or store the user’s selections for the various filters so that they persist from one search execution to another.
  • We need allow the user to simultaneously filter all three categories (color, size, fit)
  • We want to provide the user with a count of the number of items available for each category value
  • We need to provide sorting (in our case price high to low, price low to high, and by arrival date)
  • We need to provide pagination (showing n results per page)

Maintaining the user’s selection

How you choose to maintain the user’s selections so that they are available across search executions is largely a function of a few factors:

  • How long do the values need to persist:  Only so long as the user is on the page? For the session? Whenever they visit the site?
  • How sensitive is the value being stored?
  • How are you refreshing the results: page reload or Ajax?

You have many options from simple JavaScript values that will be maintained only as long as the user does not leave or refresh the page to cookies, sessions and profiles each of which have their own life-cycle and security attributes.

For our example we’re going to store the values in a cookie.  This requires no additional configuration and persists across several visits.  To do this we’ll need the following code:

Create template variables with current cookie values

As you can see, the code simply creates a template value for each user selection based on the value from the cookie.  If no cookie is found a default value (specified by !”FOO”) is provided. This code would typically appear close to the top of the template.

<#assign sort = (Cookies["category-sort"]!"")?replace("-", " ")>
<#assign filterSize = (Cookies["category-filter-size"]!"*")>
<#assign filterColor = (Cookies["category-filter-color"]!"*")>

Render controls with values selected from cookies

Now we need to build the filter controls for our users so that they can narrow their searches. In the code below we’re iterating over the available options (we’ll show how these are acquired in just a moment) and creating the options for the select component.  For each option we look to see if it is the currently selected item and if so we mark it as selected.

<select style="width: 90px"  onchange="setCookie('category-filter-color', this.value);">
   <option <#if filterColor=='*'>selected</#if> value="*">Color</option>
   <#list colors?keys as colorOption>
      <option <#if filterColor==colorOption>selected</#if> value="${colorOption}">${colorOption} (${colors[colorOption]})</option>
   </#list>
</select>

Provide a  mechanism to save a selected value to our cookie and force a refresh

In the code above you can see a simple JavaScript function on the “onChange” method for the select control.  Again you can see here we’re keeping the code as abstraction free as possible to make the example clear.  Below is the simple JavaScript function:

<script>
  var setCookie = function(name, value) {
    document.cookie = name + "=" + value + "; path=/;"; 
    document.location = document.location;
    return false;
  }
</script>

Building the Query and Filter Options

Now that we have a mechanism for choosing criteria it’s time to use those values to create and execute a query.  In the section below we’ll look at how queries are built and executed through the Solr-powered Crafter Search interface.

Construct a query that is NOT constrained by filters.

We will use the results of this query to get the possible values and counts for our filters.
Below you can see we’re building up a simple query for the jeans content type, gender and collection.

<#assign queryStatement = 'content-type:"/component/jeans" ' />
<#assign queryStatement = queryStatement + 'AND gender.item.key:"' + gender + '" ' />
<#assign queryStatement = queryStatement + 'AND category:"' + category + '" ' /> 
<#assign queryStatement = queryStatement + 'AND collection.item.key:"' + collection + '" ' />

Construct a query based on the first but with additional filter constraints

We will use the results of this query to display the results to the user.

<#assign filteredQueryStatement = queryStatement />
<#assign filteredQueryStatement = filteredQueryStatement + ‘AND size.item.value:”‘ + filterSize + ‘” ‘ />
<#assign filteredQueryStatement = filteredQueryStatement + ‘AND color:”‘ + filterColor + ‘” ‘ />

Execute the unfiltered query

Here you can see we’re declaring the facets we want the counts on.

<#assign query = searchService.createQuery()>
<#assign query = query.setQuery(queryStatement) />
<#assign query = query.addParam("facet","on") />
<#assign query = query.addParam("facet.field","size.item.value") />
<#assign query = query.addParam("facet.field","color") />
<#assign executedQuery = searchService.search(query) />

Execute the filtered query

Here you can see we’re declaring the pagination and sorting options.

<#assign filteredQuery = searchService.createQuery()>
<#assign filteredQuery = filteredQuery.setQuery(filteredQueryStatement) />
<#assign filteredQuery = filteredQuery.setStart(pageNum)>
<#assign filteredQuery = filteredQuery.setRows(productsPerPage)>
<#if sort?? && sort != "">
 <#assign filteredQuery = filteredQuery.addParam("sort","" + sort) />
 </#if>
<#assign executedFilteredQuery = searchService.search(filteredQuery) />

Assign the results to template variables

Below you can see the how we’re getting the matching jean objects, and number of results returned from the filtered query response.  You can also see how we’re getting the available options and counts from the unfiltered query response.

<#assign productsFound = executedFilteredQuery.response.numFound>
<#assign products = executedFilteredQuery.response.documents />
<#assign sizes = executedQuery.facet_counts.facet_fields['size.item.value'] />
<#assign colors = executedQuery.facet_counts.facet_fields['color'] />

Displaying the Results

Display the products

In the code below, we’re iterating over the available products and simply displaying the details for it.

 <#list products as product>
    <#assign productId = product.localId?substring(product.localId?last_index_of("/")+1)?replace('.xml','')>
    <@ice componentPath=product.localId />

    <div>
       <img src="${product.frontImage}" />
       <div style='width:170px;'><a href="/womens/jeans/details?p=${productId}">${product.productTitle}</a></div>
      <div>${product.price_d?string.currency}</div>
      <div>                                
          <@facebookLike contentUrl='http://www.rosiesrivets.com/womens/jeans/details?p=${productId}' width="75" faces="false" layout="button_count"/>
       </div>
   </div>
</#list>

Construct pagination

Given the number of items found and our productsPerPage value we can determine the number of pages to show to the user.

<div>
    <ul>
        <#assign pages = (productsFound / productsPerPage)?round />
        <#if pages == 0><#assign pages = 1 /></#if>        
        <#list 1..pages as count>
            <li <#if count=(pageNum+1) >class="active"</#if>><a href="${uri}?p=${count}">${count}</a></li>
        </#list>
    </ul>
</div>

faceted-search

Alfresco Cloud’s Key Capabilities

Posted by on March 15, 2013

SaaS Based Collaboration

The first aspect and most basic use of Alfresco Cloud is as a cloud hosted collaboration application for your organization.  Alfresco Cloud is multi-tenant and can host as many organizations (which Alfresco calls networks) and project spaces within each of those networks as is needed.

In the illustration below you can see two independent organizations each with several project teams working independently on the Alfresco Cloud.

 

If you need to spin up a simple collaboration environment for your department Alfresco Cloud is a great solution.  Alfresco Cloud is affordable and based on per user pricing.  There is zero software to install or setup and you get a ton of really rich collaborative features from document libraries to wikis, calendars, blogs and much more.

Cross-Organization Collaboration

Where things start to get really interesting, however, is with cross-organization.  With Alfresco Cloud you can manage content between organizations to enable B2B interactions between knowledge workers from the different organizations – again all with zero infrastructure setup.

In the illustration below you can see a project team from each organization collaborating with one another through Alfresco Cloud’s permissions which ensure that only that content which should be shared is in fact shared.

Alfresco One: Private – Public Cloud Sync

The thing is that not all content is meant to live in the cloud.  Organizations of all sizes generally have some content they still feel needs to be controlled and secured inside the firewall or as is often the case, there are integrations with critical business systems that are mandatory and those integrations are only possible between systems located within our firewalls.

With Alfresco Cloud this is no issue.  You can setup and host your own private infrastructure internally which serves as the system of record and hosts all of your content including those items which must remain internal and for content you want to collaborate on with organizations outside the firewall you can create a synchronization (using Alfresco One) with Alfresco Cloud and synchronize specific content between your organizations private infrastructure and the cloud to facilitate the collaboration.

In the illustration above we have a private infrastructure on the left and the cloud on the right. You can see that some project teams are working only against this internal infrastructure while others may work only against the cloud.   And we can see a secure, relationship between our internal infrastructure on the left with the Alfresco Cloud on the right.  This synchronization is enabling our teams to collaborate with one another regardless of whether they are working on public or private infrastructure.

Remote API for the Cloud

And finally Alfresco Cloud supports a remote application programming interface or API which is based on CMIS (Content Management Interoperability Standard) and a few additional Alfresco specific non-CMIS APIs.

This is a real game changer because it means that collaboration no longer has to take place through the user interface but as we can see here in the diagram we can enable applications and automated processes to participate in our collaborations – and because we have a sync between private a public cloud infrastructure we’re not just talking about cloud based content storage here – which is great in its own right — we also have a very powerful integration platform.

When you combine the API and the public/private sync what you gain is infrastructure akin to an integration bus.

 

 

 

Personalization and Targeting Web Content for Customer Experience Management

Posted by on March 12, 2013

Content targeting is all about getting the right content to the right user at the right time. While targeting used to be something large companies with big budgets utilized to make incremental improvements on transactions, it’s becoming increasingly important that organizations of all sizes start looking at content targeting.

This is largely attributed to the explosion of mobile device usage, which goes beyond just another form factor to how your sites are being used. People are online more often than ever before because they have their devices with them at all times. However, they are online in shorter bursts for specific, immediate needs in the context of their daily activity. In order to hold the attention of this new type of Web consumer, we must speak directly to them with content that is relevant to who they are, where they are, and what they need or are doing.

The tricky part is understanding your users, which can range in complexity. Usually, the more specific your overall goals and interactions with your user, the easier it is. However, in most real-world cases, we find that understanding a user can be quite complex. When a visitor visits a site, we need to determine the reason behind each specific visit. To do this, we must leverage both explicit information provided by the user (or about the user provided from sources like preferences or a profile page), and implicit information based on the user’s behavior on the site and other interactions with your organization.

When it comes to user behavior, certain behaviors are more accurate in helping us understand what a user wants. Behavioral targeting projects often discuss the use of click stream analysis, but this turns out to be a pretty inaccurate indicator of what the user actually wants. On the other side are purchases, which are great in that they tell us exactly what the user wanted. However, by that time, we’ve already missed out on the opportunity to engage with the user with up sells, cross sells, and other useful information. They already have what they need and are on their way. A purchase can certainly help us during the next visit, but it’s not usually that valuable during a visit.

However, when a user’s behavior is of the engagement type, they are telling us exactly what they want. Comments, ratings, and the ability to download content are quite important. Users love these types of features because it gives them a channel to communicate with your company and community. At the same time, these types of features are also the most accurate indicators of what the user wants during a given visit to your site, often prior to a major conversion like contacting your sales department, or even making a direct purchase.

Traditional approaches in handling audience-specific content on websites include creating mixed audience pages with content that speaks to more than one audience on a given page, or creating stove-pipe websites where sections are dedicated to each audience, or a mixture of the two. These approaches make it difficult for users to get to the content they want, especially in a mobile context.

With Crafter Rivet, we can handle content targeting in a much more effective way than these older approaches. Crater Rivet supports dynamic content through the use of templates, which along with the help of other components in the system, can make decisions about how, when, and what content to serve to any given user.

Content targeting in Crafter Rivet relies on a rules engine. The rules engine has access to information about the user which can be acquired from the user profile – populated by the user through a profile Web form, a CRM system integration, or other data source – location provided by the browser, social graph through Facebook integration, user activity tracked and recovered from analytics integration, and so on. Using these data points, the rules engine will work in conjunction with the template engine to create a unique, personal experience for each user or type of user.

To learn more about how Crafter Rivet can address content targeting, visit crafterrivet.org.

The Web Experience Management Platform Strategy For The Era of Engagement Is All About Integration

Posted by on March 04, 2013

In her blog entry entitled “Buyer Beware of Customer eXperience Management (CXM) Platforms” Irina Guseva gives an accurate and frank accessment of many of the so called WEM (Web Experience Management) platforms available today.  Irina brings three issues to light: The first, is that there is a lot of messaging focused on higher order experience management concerns that down play and in some cases altogether dismiss the importance of WCM (Web Content Management.) In reality, WCM will remain extremely important as content is the cornerstone of experience. The second issue illuminates the fact that it can be extremely difficult for someone in search of a solution to cut through all the marketing and hype in order to get down to what an offering provides and how it is different from the competition.  The third issue points out the flawed strategy employed by many solutions on the market today that try to check off all of the requirements of experience management by offering shallow, mediocre capabilities relative to what can be provided by specialized 3rd party solutions.

We couldn’t agree more.  No single platform can truly meet the today’s customer experience challenge or requirements going forward without integration with critical business systems like CRM (Customer Relationship Management) and specialized 3rd party platforms for lead generation, campaign management, analytics and others. Some platforms will attempt to build these capabilities in.  This is a losing strategy.  The architecture is wrong, the pace of innovation is governed by a single source, and feature sets will never rival that of a dedicated system.  The platform strategy for the era of engagement is all about integration.

Building an HR Portal With Liferay

Posted by on March 04, 2013

Leading enterprises are constantly looking to improve employee productivity by enabling efficient communications throughout the enterprise. This usually starts with an effective portal for human resources – an enterprise HR Portal – which enables organizations to disseminate corporate information to the work force in an engaging, efficient and intuitive manner.

Over the years, Liferay has evolved into a platform that can satisfy most Web-based enterprise needs, from corporate intranets to customer portals and enterprise websites. And one of the most popular Liferay use cases is the HR Portal, which is often the first step towards building an intranet. An HR Portal provides an efficient means of disseminating various company news and offers an ideal medium for employee outreach.

In a recent webinar, we demonstrated how to build an enterprise HR portal with Liferay in just 30 minutes. The demo showcased our latest open source Liferay community contribution that allows developers to easily create a fully functional HR Portal. This easy-to-deploy portal solution comes with many useful features, including:

  • Corporate news authoring and publishing
  • Customizable news publishing channels
  • User-friendly people directory
  • Customizable portal-wide main navigation bar
  • Smart news carousel
  • Customizable quick links

This HR Portal solution will soon be available in Liferay Marketplace – with the Community Edition available in a matter of weeks and the Enterprise Edition under development. Both versions will be available for free download.

Watch our recorded webinar to see a demo of the HR Portal in action!

Alfresco Cloud is much more than meets the eye

Posted by on February 28, 2013

As many of you know Alfresco introduced its cloud offering almost a year ago. At the time of this writing there are a number of unique ways you can interact with Alfresco Cloud:

  • Collaborative SaaS (Software as a Service) application. Teams to quickly spin up collaborative spaces (in Alfresco’s Share application) and begin working together with zero on premise software.
  • Members of the cloud can join multiple networks which enables them to work and collaborate across organizational boundaries.
  • Custom applications can use Alfresco Cloud as a store. You can interact with cloud through an API (CMIS and Alfresco specific RESTful APIS.)
  • And you can sync content between your on-premise instance of Alfresco and the networks with-in cloud that you belong to.

Share in the cloud as a SaaS offering is a pretty obvious play. There is a lot of value in this simple use case for organizations that need good collaboration tools but just don’t have the appetite for or enough user volume to justify hosting their own infrastructure.

When you combine this SaaS offering with the ability to securely and selectively collaborate with other organizations, you are now enabling all kinds of people-oriented B2B interactions that can be extremely difficult when you have a system that is stuck behind a firewall.

Add to that an API to that and now it’s not just people-oriented B2B and internal interactions that can take place, it’s automation and rich behavior.  At this point Alfresco in the cloud is no longer an application.  It’s a bus.

Now not all content was meant to live outside the firewall and not all systems can or even should live/reach outside the firewall.  With Alfresco’s “cloud sync” capability Alfresco Cloud closes this gap by allowing organizations to selectively and securely sync specific content between an on-premise instance and the cloud.  This is extremely exciting because it opens up a whole new realm of possibilities for B2B integration and mobile enablement.

If you’re thinking about Alfresco Cloud as a simple collaboration application or a simple cloud based content store it’s time to rethink.  Alfresco Cloud paired with Alfresco on premise is an extremely exciting hybrid architecture and integration middle-ware that opens up use cases which have traditionally required dedicated business to business infrastructures that were difficult to get approved let alone set up: basically not possible.

On March 14th Rivet Logic will co-host a webinar with Alfresco entitled Using Alfrescos Hybrid Cloud Architecture for Better Web Content Management where we will discuss and demonstrate how hybrid architectures can be applied in a WCM (Web Content Management) context to enable collaboration with external partners like agencies and for integrations with other content services, providers and consumers such as AP, Routers and the like.  While WCM use cases will be the focus of the conversation, the topic is perfect for anyone interested in learning more about Alfresco hybrid architectures.  See you there!

https://www.alfresco.com/events/webinars/using-alfrescos-hybrid-cloud-architecture-better-web-content-management

Web CMS and Digital Assets: Crafter Rivet / Alfresco Integration with Adobe Photoshop

Posted by on February 21, 2013

Digital assets are a key component of almost all web experience and customer engagement projects. In today’s era of engagement with all of the additional content targeting, personalization, internationalization and multi-channel publishing the number and permutation of digital assets associated with any given project are growing rapidly.  This trend will only continue as we move forward.  Content workers (authors, designers, content mangers) need to be able to create, locate, modify and manage the growing number of assets easily and efficiently in order to maintain brand quality and deliver projects on time and on budget.

In today’s blog entry we’re going to focus on the creative side of WCM (Web Content Management) and DAM (Digital Asset Management) even though this is only a small portion of the overall set of use cases.

Let’s begin by considering the following example use cases:

  • Create mobile appropriate image resolution variants
  • Create video stills
  • Imprint watermarks
  • Thumbnails for galleries and promotional kickers

Each of these use cases are important ingredients in providing the user with a great experience but they also introduce a lot of additional work for our content teams.  One of the ways to deal with the large volume of asset creation and manipulation responsibilities is to automate them.   The use cases mentioned above and many others like them are a perfect candidate for automation.

Crafter Rivet leverages Alfresco’s enterprise content management services for image transformation. With a few simple rules applied at the repository level it’s possible to provide your content team with image resolution variants, video stills, apply watermarks, to scale and crop thumbnails and then to make these assets available for review by our authors all in an automated fashion with no additional labor required beyond uploading the canonical assets.

Another important way to help our content teams cope with the sheer volume of digital asset related workload is to make sure our teams are able to work with the very best tools at their disposal.  With today’s modern browsers it is possible to provide a fairly decent set of tools / asset manipulation functionality right with-in the browser.  However, while purely web-based tools have their advantages they are often slower and much less powerful than the desktop tools serious content contributors are used to working with.

The biggest productivity boosts are gained when we empower our designers and other content workers on our team with rich, native tools that they are already familiar with and work  with on a daily basis.

Adobe’s creative suite (which contains tools like PhotoShop) is the quintessential software package for image/digital asset creation and manipulation.  Designers are deeply familiar with these tools and are able to leverage their enormous arsenal of capability to accomplish a tremendous amount of work in a short amount of time.  The issue that many organizations often face, is that while the tools themselves are great, the interfaces between the tools and the systems that ultimately store, manage and deliver the assets are either non-existent, human-process based, or have clunky integration. This gap creates a drag on the margin of productivity and introduces room for error.

Fortunately Alfresco, Adobe and Crafter Rivet Web Experience Management have a solution that connects rich, creative desktop tools,  to your systems of record (e.g. repository) and ultimately to your systems of engagement (e.g. website) in a seamless fashion.  Content creators work right with-in the rich, local tools that they are familiar and productive with and those tools are deeply integrated with the repository which means that all of the organization, policies, metadata extraction, and versioning provided by the repository etc are seamlessly integrated and enforced.  Alfresco is a CMIS (Content Management Interoperability Standard) compliant repository.  This standards based interface enables it to communicate with external applications like Adobe’s products in order to interact with and operate on the content, metadata, permissions, versions and so on housed within the repository.   Adobe provides a platform called Adobe Drive which enables its tools to connect in a rich fashion over CMIS to Alfresco.  Once we’ve connected our Adobe tools and our Alfresco repository authors working within Crafter Studio, the authoring and management component of Crafter Rivet can now see content updates coming from the Adobe tools right in context with the work they are doing through in context preview and editing. They can also interact with that content through the web based tools, workflow, versioning, metadata capture and publishing capabilities of Crafter Studio.

By closing the integration gap we can now provide powerful tools for productivity and at the same time do so in a way that makes it seamless and easy for our creative teams to collaborate across the entire process.

Click on the video below to see Adobe and Crafter Rivet WEM / Alfresco in action together!

Video of Photoshop altering images in Crafter Rivet Web CMS and Alfresco

 

Crafter Rivet is a 100% open source, java based web CMS for web experience management and customer engagement.  Learn more about Crafter Rivet at crafterrivet.org