If you’re one of those people that believe that SOA is more than a buzzword surrounded by hype, then this blog might be worth reading. As you might guess, I’m one of those. And for real-world solutions. :-)

Nuxeo EP is built around two simple yet powerful concepts:

  • Services: a service is a component of the Nuxeo platform offering some feature to
    others (ok, so you do know what a service is! :-). From a technical point of view, in Nuxeo’s case a service is an OSGi bundle.

  • Extension points: a service might provide one or more extension points so that
    other services can contribute extensions to this point (to configure the service
    or extend it). Think Eclipse Equinox extension system ported to the server-side.

Basically, Nuxeo EP is a set of services that mutually extend themselves (plus a
bunch of business specific configuration files and UI) to offer a complete set of
high-level ECM Services, ready to be integrated into the Service Oriented
Architecture of your Information System (IS).

This is the future of ECM Platform providers and here is why… ;-)

One company, different needs

As you might know, or guess, a company’s departments can have very different needs
related to content management.

Let’s take a few examples:

  • marketing people want an application to manage their pictures and videos so that
    they can quickly find and get the right picture to illustrate their new “fact

  • the legal dept want a collaboration system to share and collaborate on legal
    documents. They also want a document management system to store all kinds of legal

  • engineers want a full-blown ECM system to handle collaboration, document
    management for industrial documents (blueprints, specifications, operation
    manuals, etc.)

  • the accountants want a system to manage invoicing and payment processes which
    can track physical items (e.g. incoming paper invoices, acceptance papers, delivery
    proof, etc.) and interact with SAP where all numbers are stored

  • the QA people want to manage their organizational diagrams and processes to be
    under version control and workflow. They also want the engineers to use a document
    management system to enforce audit and compliance on produced documents (specs,
    op. manuals, etc.).

Of course, I could add dozens of examples, and I’m sure you could too.

All those needs might require very different UI, processes and business logic. But
they still have some crucial common parts…

On to a Central Content Platform

Looking at those needs, besides their specifics, we can quickly define some
common requirements:

  • Content storage: scalable and secure content storage for short term (e.g.
    press release) to long term storage (e.g. documents of specifications).

  • Flexible content model: to address all those needs, a flexible content model is
    required. Hence the content storage needs to be flexible to store any kind of
    content model.

  • Security and access control: all the managed content needs to be secure and
    access controls have to be carefully applied. Hence the need of global security
    and access.

  • Search: you need to search all this content. Hence the need for a flexible (to be
    adaptable to different content model) indexing and search engine. If you can
    search all the managed content using one UI it would be even better.

  • Process management / workflow: to support everything from simple approval processes
    (specification draft) through to complex business processes (invoicing) or complex hierarchical approval processes (legal docs, specifications) you need an enterprise process engine, deeply integrated with your content repository.

  • Relation management: wouldn’t it be great to be able to track dependencies between
    specifications documents, or between legal documentation and contracts? Or track
    links between pictures? Or maybe just track impacts between the specification and
    the operations manual? It might even be in the requirements! Well, to do this you need a powerful relation engine.

  • User Notification: People want to be able to subscribe to changes so that they
    are notified (via email or RSS feed) when documents change. Let’s set up a
    notification system with email and RSS support (and maybe IM or SMS).

  • Content Rendition: pictures need to be resized or cropped, word documents have to
    be converted as PDF after approval (e.g. for distribution or long term archiving),
    etc. You need an extensible content rendition system that allows you to define your
    renditions and maybe write your own rendition plugins.

  • Directories / Vocabularies: You need to manage lists of terms to populate lists of
    choices in metadata forms, workflow screens, etc. You might also want to lists to
    come from your ERP system (e.g. project codes, imputation codes, customer list), some
    other applications or LDAP servers (customer lists, user lists, etc.). You need a
    flexible service to centrally manage lists (flat or hierarchical), stored into SQL
    or LDAP, and bind them to forms in your application.

  • Audit: last but not least, you want all actions performed in the applications by
    users or other applications to be logged. You also might want to create reports
    from that data. Hence the need of a central audit trail.

This is what we define by Central Content Platform: a unique place offering content
related services consumed by applications for end-users. End-users might see/use
very different applications/UIs, services and storage are centralized to
dramatically reduce maintenance cost and improve maintainability. And it’s much
easier to secure (high-availability, physical protection, security audit, etc.) one
central platform than each aspect of several different applications (with their own
storage, language, platform, etc.).

One platform, many applications…

With Nuxeo Service Platform this pattern can become a reality. You can set up a
scalable and reliable platform for ECM and make your business applications consume
those services. Each application for end-users might be written in different languages, implement different paradigms, serve different users with different business needs.

Moreover, Nuxeo EP leverages standards and patterns to offer a wide range of
communication systems. Java applications can use the java remoting system (EJB3
Remoting / POJO Remoting) and get access to the native API.

You prefer .NET, Ruby or PHP? Go on! Nuxeo EP also offer a wide range of Web
Services (SOAP or REST) which enable integration with with virtually any software
language / platform.

Need a workflow engine for your existing Spring based application? Just embed Nuxeo
Runtime in your contract management app, connect to our Nuxeo EP instance and
integrate your app with Nuxeo Workflow Service.
Need advanced document storage with versioning and security? Just contribute your
content type and store your documents into your Nuxeo EP’s Content Repository and
access through the API or directly from HTTP links. We will take care of all complex
document storage details such as access control, versioning, file streaming,
transactions, etc.
Need to add search? Plug your app to your Nuxeo EP’s Indexing and Search Service!

No more “one size fits all” ECM application

This is really what we think as the future of ECM. One application cannot fit all
needs of content and information management in an organization straight out of the box. End-users ask for
more and more adapted applications to improve their daily work flow. They require
more security, ease of use, accountability, business focus… Why not avoid those
“$10M, 3 years” burdens that made ERPs famous and deliver more to your users? More
dynamic, more usable, more often, more complete…

ECM platforms should not be huge monolithic applications. The SOA pattern
gives a golden opportunity to deliver great applications to your end users while keeping
all the advantages of reusable and centralized software.

This is our real business. This means a lot to us. It’s available today. Try
Nuxeo EP.

Still thinking Open Source cannot innovate?

Stay Tuned! ;-)


(Post originally written by Eric Barroca on the old Nuxeo blogs.)