Author Archive

January 1, 2018

Are you ready for AEMRockstar 2018?

Its back for another year! Join us at Adobe Summit 2018 for one of the most popular sessions from Summit 2017. It’s one part tips and tricks and one part exciting “Shark Tank” experience where the winners are chosen in real time.

This year we’re focusing on not just presentations but live demos to really show the power of the tips and tricks that our contestants have come up with. Think you have an idea that is good enough to battle it out with other finalists in Las Vegas? Submission closed

If you’re chosen as one of our presenters, you’ll receive a free pass (valued at $1895) to Summit on March 25-29, 2018 in Las Vegas, and the opportunity to win cool prizes like airline tickets, laptop, or who knows what! And don’t forget about the bragging rights. 

 

Submission closed: January 29, 2018


Tips for submission:

  • Multi-Solution items (AEM + Analytics, IO, etc.) present better to the varied audience of Adobe Summit.
  • Think of the value proposition that your tip or trick is solving. Be prepared to defend it.
  • Does it “wow” when demoing?
  • Adobe customers using Experience Cloud or Adobe Partners with a customer co-presenter are highly desired.

To be considered, all you have to do is submit your tip using this online form. We’re looking for all things AEM. Sites, Assets, Mobile, Forms, anything and EVERYTHING! We want tips that you believe will show your fellow AEM marketers and technologists new things about AEM and help them to do their jobs more effectively and efficiently. Ultimately, your judges will be the session attendees, including leaders from the AEM Product and Marketing teams, as they vote for their favorite tips. Don’t be on the fence about submitting a tip — you might be surprised how useful things can be to others.

We’ll be screening your tips based on how innovative, practical, and valuable they are as well as how broadly they could be used by AEM marketers and technologists at other companies in different industries. We’ll select up to 5 finalists who will come to Las Vegas and present their tip to one of the largest audiences at the conference. This is a great opportunity to attend Summit and showcase your talents to the world!

We are giving away some swag to everyone who submits an idea as well. Every person who submits an idea gets the new vol 2 AEM Rockstar sticker (subject to availability)!

Eligibility Requirements (the fine print)

  • Adobe employees are not eligible
  • You are responsible for all expenses except the Adobe Summit registration.
  • Finalists from the previous year are not eligible.

2017 Recap

The first ever AEM Rockstar session was a resounding success. We were in the top 10 most attended sessions at Summit last year! As for prizes, last year, in addition to the free Summit pass, we gave away,

  • 1st – DJI Mavic Pro Drone
  • 2nd – $200 Amazon Gift Card
  • 3rd – $100 Amazon Gift Card

To get your creative juices flowing, below are our finalists and their submissions from last year.

Dan Klco, Perficient

“Integrating AEM with other Adobe Marketing Cloud solutions using data layers powered by Sling Models.”

Rima Mittal, Sapient

“Need a script to change existing production content? Sling Pipes to the rescue.”

Robert Langridge, Carphone Warehouse

“How Dixons Carphone gives their authors the ability to generate designs to be used in their AEM Mobile application.”

Ruben Ruesser, headwire, Inc.

“Making sure all your developers generate consistent files during AEM development.” – the AEM Developer Companion

Martin Fitch, Kaiser Permanente

“How Kaiser Permanente achieved their stringent approval requirements using AEM workflows.”

Congratulations to Dan Klco for being our inaugural winner.

 

Submission closed: January 29, 2018

 

 

 

6:57 AM Permalink
March 28, 2017

Dan Klco: #AEMRockstar 2017

If you haven’t heard already, Adobe Summit NA 2017 is in the books! As a result, we have the inaugural #AEMRockstar winner: Dan Klco from Perficient Digital.

The recorded session should be on the Summit online site for those that attended, with the presentations available for download as a PDF. Each finalist will also share their presentation in an upcoming guest post.

Final Results:

  1. Dan Klco, Perficient Digital
  2. Ruben Reusser, headwire.com, Inc.
  3. Rima Mittal, Sapient
  4. Martin Fitch, Kaiser Permanente
    (tied) Robert Langridge, Dixons Carphone

Looking forward to next year.

1:29 PM Permalink
June 9, 2016

config vs cfg – Battle royale

If you’ve been around AEM (and CQ) long enough, you’ve probably seen OSGi configurations serialized out in the form of a file. Its the easiest way to pre-configure various services and components in AEM. A common example is configuring a node and/or data store.

https://docs.adobe.com/docs/en/aem/6-2/deploy/platform/data-store-config.html

You’ll often find examples listing a files that have .cfg or .config extensions. Which leads me to the question:

Which format is the right one?

That is a bit tougher to answer. They both share generally the same patterns but have a few subtle differences.

CFG format:

  • Standard properties file format (java.util.Property)
  • Comments allowed
  • Only string values supported
    • A class name PropertiesUtil can convert (cast) values to their proper types. All common configurable classes available (OOTB) should use this utility and therefore should not be a big issue.

CONFIG format:

  • Introduced in the Felix framework in 2010 (see: https://issues.apache.org/jira/browse/FELIX-2513)
    • But not used directly by Sling until later (2011-ish+); CQ/AEM uses the Sling Launchpad Installer vs. the Felix FileInstall.
  • Supports typed values (boolean, Int, Float, Char, etc)
  • first line can be a comment (#example), but inline comments are not allowed
  • Various things need escaping
  • Multivalue properties are easier

A good explanation of the format can be found here:
https://sling.apache.org/documentation/bundles/configuration-installer-factory.html

The configuration handler code which sets up the formatting:
https://github.com/apache/felix/blob/trunk/configadmin/src/main/java/org/apache/felix/cm/file/ConfigurationHandler.java

You can see examples of the CONFIG format persisted under the <install dir>/crx-quickstart/launchpad/config in a typical AEM instance.

Conclusion

The good news is that both formats are functional and supported. You don’t have to choose one versus the other. Although I’d advise against doing both interchangeably. Therefore, the guidance that I’d suggest is:

If you’re starting a new deployment/implementation, use CONFIG. Its the newer standard and provides more flexibility with regards to property config design.

If you’ve already deployed and have existing CFG files, stick with CFG. There appear to be no plans to remove/deprecate this format.

10:31 AM Permalink
March 16, 2016

AEM 6 – migrating to FileDataStore from embedded segmentstore binaries

Have you ever come into a situation where you’re up and running on AEM 6 using the default setup with the segment store containing everything – content & large binaries – and you wish you would have thought to split them out into a FileDataStore (or S3) after the fact? Most of the time you probably have architected the solution this way from the start. However, there are probably times you want to eek out every bit of performance optimizations that you can after initial rollout.

Enter oak-upgrade (and its Adobe sibling, crx2oak)

Background

As most should know already, the default Oak architecture you get with AEM 6 stores the binary content (files like images, videos, pdfs, etc) within the repository tar files. Look in crx-quickstart/repository/segmentstore for examples or read up on the structure here: http://jackrabbit.apache.org/oak/docs/nodestore/segment/tar.html or check out Francesco Mari’s analysis here: http://francescomari.github.io/2015/05/04/looking-into-tar-files-in-oak.html.

Now for most Sites use cases where your authors create alot of content and occasionally upload a pdf or image, this setup is just fine. However, if you want the best performance and the ability to share your data store with other instances, then you should go with an external data store like FileDataStore which we’ll focus on here.

Getting Started

disclaimer: not responsible for any damage you cause to your instances. Please test thoroughly on non-production instances before considering attempting this on a working production instance.

Before we start, you should update your Oak version on AEM 6 to the latest Adobe supplied version. As of this writing, oak-upgrade (1.6) needed either 1.0.12+ (AEM 6.0) or 1.1.7+ (AEM6.1) to migrate segment format V_11 repositories. This is important.

You’re going to need alot of disk capacity during the migration as the process creates a new datastore directory with all the data as well as a new repository directory and segment store. You are doubling your disk needs temporarily as the end result is basically two copies of your repo.

Depending on the size of your repo, the migration may take a considerable amount of time. In addition to the binary data being copied, some of the Oak indexes will most likely need to be re-indexed (automatically).

The Steps

Backup all data before starting.

  1. Download the latest version of oak-upgrade from Apache. I built my version (1.6-SNAPSHOT) from source using maven.
  2. Create a parallel directory to house your new repository directory (eg. “repository_new”)
  3. Copy your oak-upgrade jar to the base install directory – parallel to the main aem quickstart jar.
  4. Run this command:
    java -jar oak-upgrade.jar –copy-binaries –src-datastore=crx-quickstart/repository/segmentstore –datastore=crx-quickstart/datastore crx-quickstart/repository crx-quickstart/repository_new –mmap[your paths may vary]
  5. The output of this command should be bunch of RepositorySidegrade INFO messages and a new repo directory with a segmentstore with tar files and a datastore directory with a bunch of two character long directories.
  6. Rename the existing repository directory to “repository.migrated” (or something else).
  7. Rename the newly populated repository to “repository” from whatever you set in step 4.
    Note: I realize that you can point AEM to whatever repository.home you wish via OSGi configuration, but this just seems easier (and faster).
  8. Create a text file named org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.cfg in crx-quickstart/install. Add the following content to the file:
    path=crx-quickstart/datastore

    (or whatever you set your path to)

  9. Create a text file named org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService.cfg in crx-quickstart/install. Add the following content to the file (Note: this is also where you can change the repository.home path (not shown here)):
    customBlobStore=true
  10. Start up AEM like usual and monitor error.log for any anomalies.

Conclusion

I ran the migration on a pretty vanilla AEM 6 (Oak 1.0.27) instance (with OOTB content) and the whole process went very quickly. The oak-upgrade command took less than 30 seconds. Startup took around 2 minutes to complete and I have yet to find anything wrong with the new system.

 

9:27 AM Permalink
September 16, 2014

MongoDB + AEM Production Servers

 

I response to my previous post, here is the basics of a sharded cluster MongoDB setup. As you can see, if you were to place each element on its own server you’d end up with alot of servers.

Sharded Mongo

After a bit of research into how each mongo element is used and its performance characteristics, I arrived at the following sleek(er) configuration of servers. This is arrangement is symmetric to allow for cross data center architectures.

Mongo-Production

Servers

This post was heavily influenced by a concise Will Burton post: http://two4seven.me/sharding/

12:48 PM Permalink
  • Authors

  • Archives

  • Developer Resources