I just finished reading Alfresco 4 Enterprise Content Management Implementation from Packt Publishing. Getting straight to the point, I would give it 3/5 stars. The main reasons for the rating are that nearly every page of the book has a grammatical error, almost the entire book focuses on Alfresco Explorer rather than Alfresco Share, and I don't believe that the authors went into the appropriate depth for the intended audience. Even though the book has some flaws, it is filled with useful information and would provide an excellent foundation for a content management project or evaluating Alfresco.

Overall Overview

I am a bit of a stickler for proper grammar. This book was difficult for me to read because of all of the errors. I am shocked that a publisher would release a book like this. It's as if the book was never edited. Here is just one example that I ran across while writing this review, "The JBoss community portal project no more exists." p 34. There are many more but I won't belabor the point.

Alfresco Explorer is no longer being developed by Alfresco and hasn't been since version 4.0 of Alfresco was released a couple of years ago. Regardless of if you are using Share or Explorer, the repository is configured the same way. Unless you have an existing implementation of Alfresco Explorer, there is really no value in learning how to use or customize the Alfresco Explorer UI (on a related note, check out Alfresco CCO, Jeff Potts', blog post on a related topic). Alfresco will not certify a solution built on Alfresco Explorer: "The legacy Explorer UI is no longer being actively developed by Alfresco and will eventually be end‐of‐lifed. As a result, extensions that integrate with the Explorer UI are ineligible for certification." The book throws in a single chapter on administering Alfresco with Alfresco Share. I'm not clear on why the rest of the book uses Alfresco Explorer as an example except for this one chapter. My best guess is that the authors also have a book on Share that they would like to sell.

Although the book states that it is "not a developer guide", the book provides a lot of great information about what can be done with Alfresco. Unfortunately, there is not enough commentary or explanation as to the underlying concepts to allow someone without any background Alfresco knowledge to actually implement an Alfresco project. The level of detail provided would be well suited for people evaluating Alfresco or learning the concepts of enterprise content management. I did find the level of detail to vary from too detailed to not enough detail for the intended audience.

Finally, I found the diagrams to be difficult to read. To be fair most of the reading I did was from a phone, but the colors used aren't particularly high contrast which makes the text hard to read. The book is slightly out of date since it references the "old" Alfresco support portal. This year Alfresco changed its support portal platform and the directions on p. 38 and 40 are no longer valid.

To Read or Not to Read

If you are looking for a Read/no-Read decision. Here is the bottom line:

  • I liked the breadth of information about what is possible with Alfresco and it covers the major features of Alfresco.
  • I disliked the focus on Alfresco Explorer and the varying degree of detail (both too much and too little).

If you are new to content management or new to Alfresco, this book is a good starting place and worth a read. If you are experienced with Alfresco or looking for a guide to do an implementation, this is not the book for you.

If you want chapter by chapter summary, thoughts, and errors keep reading, otherwise you can stop here.

Chapter Overviews, Thoughts, and Errors

The following sections are organized by chapter and include a basic summary of the content, thoughts on the content, and any errors that I noticed while reading. The errors and thoughts are in a bulleted list under the summary.

The preface covers some background information on the authors' company, on Alfresco, on the topics covered in the book, what is required (to do the examples), and various other administrative material.

Chapter 1: Introduction to Alfresco
The first chapter is a solid introduction to Alfresco, what is possible with Alfresco, the different components and features of Alfresco, the benefits of Alfresco's open source and open standards philosophy, and the different enterprise content management (ECM) roles that Alfresco can play in an organization.

  • The authors state that Alfresco is based on Java 1.7, Alfresco 4.1.2 uses version 1.6 of Java (p. 13). Java 1.7 is supported in Alfresco 4.2.

Chapter 2: Installing Alfresco
This chapter discusses the platforms and installation options for Alfresco as well as AMP files and the Module Management Tool.

  • On p. 34, the authors imply that a portal is a normal, if optional, part of an Alfresco install. This discussion belongs in Chapter 9 on integrating external applications with Alfresco.
  • The book uses Windows XP as an example OS for installing Alfresco (p. 35). While adequate for development and testing, this is definitely not supported nor best practice (the same goes for Mac OSX).
  • The installation notes on p. 35 omit ImageMagick and SWFTools. These are required for image resizing and transformations and flash preview if you are not using the packaged installer for Alfresco.
  • Flash Player is not required for a server install of Alfresco. It is only required on a client machine (p. 45).
  • The book goes through a binary install of Alfresco on Windows, a ZIP file install of Alfresco on Windows, and a binary install of Alfresco on Linux. Since the book itself recommends Linux as a production platform it seems to me it should have spent more time going through the Linux install process with the ZIP archive. On the other hand, since this is not a developer guide, any ZIP installation install seems off topic for the book.

Chapter 3: Getting Started with Alfresco
This chapter covers a basic introduction to the Alfresco Explorer web application and basic Alfresco repository configuration. The sections on configuring the repository, although they just call it configuring Explorer, are quite relevant and helpful.

  • On p. 71, the book states that an absolute path is the best practice for the dir.root property and yet the example is a relative path, "./alf_data".
  • The book lists several features that are not supported when using multi-tenancy with Alfresco. There is actually a pretty extensive list of things that are not supported. See theAlfresco 4.2 Documentation on what hasn't been implemented in multi-tenancy for the latest list (p. 83).
  • On p. 85, the book implies that Lucene search is required for clustering Alfresco. This may just be poorly worded, but both Lucene and Solr are supported for clustering. In fact the reason for introducing Solr was to scale Alfresco even larger than was possible with Lucene.

Chapter 4: Implementing Membership and Security
This chapter contains a very good discussion of users, groups, and roles. The majority of it is useful. Unfortunately the out of the box roles in Alfresco Share are quite different than those of Alfresco Explorer and it would have been nice to discuss these as well.

  • The one error that I noticed is on p. 90, which suggests that in Share the user's name is shown in the top left-hand corner. As long as I can remember it has been the top right-hand corner.

Chapter 5: Implementing Document Management
This chapter is useful as a general discussion of the concepts and features in Alfresco. The implementation and specific discussion of Alfresco Explorer is OK, but discussion of Alfresco Share would have been better. The sections about the various interfaces to Alfresco is relevant for both Explorer and Share (CIFS, WebDAV, IMAP, etc).

  • Although not supported in Alfresco Explorer, Alfresco Share does have a revert to previous version function for documents (p. 139).

Chapter 6: Implementing Business Rules
This chapter covers the basics of implementing a simple workflow in Alfresco (simple, meaning rule based). The book covers this using Alfresco Explorer but the same concepts work in Alfresco Share as well.

Chapter 7: Extending [sic] Alfresco Content Model
This chapter covers content modeling and related concepts. It is applicable to both Explorer and Share except the parts about extending the Alfresco Explorer UI.

  • One particularly useful tidbit I found was regarding passing options when resizing and transforming images on p. 183.

Chapter 8: Implementing Workflow
This chapter contains a lot of good information on the workflow options that are available in Alfresco and how to implement them. I found the discussion to be cursory and lacking in many ways, which is completely understandable since entire books are written on jBPM and Activiti workflow. I think given the target audience for this book, I would have left out some of the more technical details and examples and focused on the concepts rather than the implementation.

Chapter 9: Integrating External Applications with Alfresco
This chapter discusses a vast array of concepts around integrating Alfresco with external applications, obviously not at a very deep level. The point of the chapter is to convey all that is possible in terms of integration and give some examples. Some examples are more custom integrations involving coding, like Facebook, while others are out of the box, like Microsoft Office. There were a couple of oddities that I noticed in this chapter:

  • I found the diagram on p. 293 to be strange. Why did the designers stretch out the images on the right hand side?
  • There is a typo on p. 295. The URL "http://localhost:8080/alfresco/webdev/" should read "http://localhost:8080/alfresco/webdav/".

Chapter 10: Alfresco Administration Operations
This chapter discusses many of the topics covered in earlier chapters but with respect to Alfresco Share. It covers basic user and group administration, managing categories, publishing channels, file servers, feed emails, installing a license, replication jobs, search, workflow, IMAP and Google Docs. The book essentially goes through each item in the Share Admin console, but does not give a lot of background information on why you might want to change the configuration item.

  • This is the only chapter that focuses on Alfresco Share. It is unclear to my why the authors chose to focus on Alfresco Explorer for the rest of the book and Share for this chapter. It seems very out of place although welcomed.
  • One thing that people new to Alfresco might be confused by is that on p. 344 the authors state that "Alfresco Share is a web application that runs on a machine that is separate from that of the repository." This is not entirely accurate. Alfresco Share is a separate web application and can be run on a separate machine or on the same machine. Very rarely is it worthwhile to separate Alfresco Share from the repository.

Chapter 11: Customizing the User Interface
This chapter discusses various ways to customize the Alfresco Explorer user interface. Most of the concepts are analogous to the same customizations that can be done in Share but the implementation is much different.

  • On p. 371, the authors state that Alfresco Explorer is the default web application for the Alfresco repository. I suppose that strictly speaking this is true, but given that there is no further development on the Alfresco Explorer UI, Alfresco Share is the defacto default UI for Alfresco.
  • I found this chapter to be interesting from a historical point of view.
  • I also noticed that the book stops giving directory locations for JBoss in this chapter, but I don't know when they stopped doing so.

Chapter 12: Search in Alfresco
This chapter was probably the most interesting chapter for me personally. The discussions of Solr and Lucene were very good. I did find myself wanting more information on the topics though. Again since this is not a developer guide, the level of detail provided was probably what I should have expected. Again the examples are for Alfresco Explorer but the concepts apply to Alfresco Share as well.

  • I do find the mix of detailed examples but lack of commentary odd for the intended audience. For example, I would not expect someone evaluating Alfresco to care how to tune the Lucene indexing properties.

Chapter 13: Implementing Imaging and Forms Processing
This chapter discusses concepts around form processing and OCR with Alfresco. The subject matter, while useful, seems out of place. The custom rule based form processing workflow is a good example to demonstrate the capabilities of Alfresco.

  • The detailed explanation of how to integrate with Ephesoft doesn't really fit. There are books that cover Ephesoft in detail. I don't think this detailed integration example belongs in a book that is not aimed at developers.

Chapter 14: Administering and Maintaining the System
The final chapter covers administration concepts such as importing and exporting content, backing up Alfresco, general maintenance, replication, high availability, disaster recovery, upgrades and subsystem management through JMX.

  • Once again I found the content of the chapter to be quite useful, but the level of detail to vary between too little and too detailed for the intended audience.
  • I would have left out the code level integration with the Bulk File System Import Tool, for example, and I would have spent some more time talking about clustering and hot spares.

Final Thoughts

To summarize, the book was a worthwhile read for those interested in Alfresco, evaluating Alfresco, or beginning to learn Alfresco development. There are a few tidbits here and there for experienced Alfresco administrators and developers. The level of detail throughout the book varied quite a bit. I think most will find it either too little or too much. If you are at all interested in Alfresco Share, this book will not be of much use other than learning the basic features of Alfresco and repository configuration.

Loading Conversation