Wednesday, 19 September 2018

Content Approval workflows in AEM 6.4

I have given a step by step demo of content approval process in AEM 6.4 in the video. Here I will explains the steps involved in detail.

[Click on images to see them big]



There are 3 major steps involved in AEM content approval,
  1. Creating a simple workflow model
  2. Creating a content approval workflow based on the model created
  3. Verify the workflow
User Creation

Before we start, we need a set of users to understand our Workflow process. For this , we will create 3 users called author, editor, legal.

Go to tools> Security > Users and create 3 users author, editor, legal. This is quite simple and direct step.

Steps for workflow creation

1) Creating a simple workflow model

- Go to Tools, Workflow, Models

- Select 'Create', then 'Create Model'.

- Then Add Workflow Model dialog appears. Enter the Title and Name, then select Done.

Newly created model is listed in the Workflow Models console.

- Select your new workflow, then click on Edit to open it for modification:

The new workflow will contain:
  • Flow Start
  • Step 1
  • Flow End
- Delete Step 1

- From the Workflow selection of the steps browser, drag a Participant Step onto the workflow and position it between Flow Start and Flow End.

- Open the properties by clicking on configure option

- In the Common tab enter Validate Content - for both the Title and Description.

- Open the User/Group tab:

- Select Editor for the User/Group field.

- Confirm the updates by selecting the tick mark.

- Drag an Or Split onto the workflow and position it between Validate Content and Flow End.

- Open the Or Split for configuration.

Configure:
  • Common: select 2 Branches
  • Branch 1: select Default Route. - This option will be selected by default when the user reviews the content.
  • Branch 2: ensure Default Route is not selected.
  • Confirm your updates to the OR Split.
- Drag a Participant Step to the left hand branch, open the properties, specify the following values, then confirm the changes:

Title: Reject Publish Request
User/Group: Author - (Editor will reject the publish and notify the author).

Now,

- Drag a Participant Step to the right hand branch,
- In the properties section, specify the following values, then confirm the changes:

Title: Approve for Legal review
User/Group: legal - (If editor is fine with the content, he asks the legal person to review for legal adherence).

- Drag an Or Split onto the workflow and position it between Validate Content and Flow End.

- Open the Or Split and make configurations as below.
  • Common: select 2 Branches
  • Branch 1: select Default Route.
  • Branch 2: ensure Default Route is not selected.
  • Confirm your updates to the OR Split.
- Drag a Participant Step to the left-hand branch, open the properties, specify the following values, then confirm the changes:

Title: Reject Publish Request
User/Group: Author - We will reject the publish and notify the author.

- Drag a Participant Step to the right-hand branch, open the properties, specify the following values, then confirm the changes:

Title: Publish Page as Requested
Process: select Activate Page. This process publishes the selected page to the publisher instances.

Now the workflow model looks like this.




Note: Remember to sync the workflow so that the latest changes will be always updated in run time.

2) Creating a content approval workflow based on the model created

- Now login as user 'author'

We have two options to trigger the content approval workflow.

a) Go to workflow model (http://localhost:(port)/libs/cq/workflow/admin/console/content/models.html) select, click on start workflow and specify the payload.

b) Go to sites> a project specific page. Select the page and click on 'Create workflow' from top left menu. Then in new window select the workflow model and provide a title. In next window click on 'create' so that the workflow will start.

3) Verify the workflow

- Now login as user 'editor' and go to inbox and open the message and complete the workflow. Editor will have options Approve for Legal review , Reject Publish Request

 Now the workflow will be moved to legal person as per our workflow model definition,

- Login as legal, and from inbox he will have options like 'Reject Publish Request', 'Publish Page as Requested'. Complete the review and approve it. So that the page gets activated.

If any of the editor or legal person rejects, the payload goes back to author and asks for re-verification.

Below given a video recording of the above mentioned activity. Let me know if you face any issues through the comments section.

        

Thursday, 23 August 2018

AEM 6.4 Assets - Walkthrough

Adobe Experience Manager Assets helps you to work with assets, like create, store, and deliver images, video, and other content for any screen or device.

AEM 6.4 has various asset operation on its touch UI.

Below given the image of assets UI.


Assets section has below options.

File:
File section helps to traverse to files and do various operation on an Asset

Collections:
A collection is a set of assets within Adobe Experience Manager (AEM) Assets. Collections are used  to share assets between users. A collection can include assets from different locations.

Collections can be shared with various users that are assigned different levels of privileges, including viewing, editing, and so on.

Lightbox: is a special type of collection that provides easy access to assets. We can quickly access Lightbox to add or delete assets. Every user has an exclusive Lightbox that is automatically created when the user logs in to Adobe Experience Manager (AEM) Assets.

Remember the Lightbox collection cannot be deleted.

Shared Links:

Adobe Experience Manager (AEM) Assets lets you share assets, folders, and collections as a URL with members of internal and external organizations, including partners and vendors. This makes a convenient way of making resources available to external parties without them having to first log in to AEM Assets.

Asset templates :

Adobe InDesign can be used to create and export brochures, flyers and print ads that speeds time to market while complying with brand guidelines and break digital and print silos with consistent messaging across channels leveraging AEM platform.

Catalogs:

Catalogs allows customers to leverage pre-designed InDesign templates to generate new catalogs straight from Experience Manager, target print channel, saving significant time and layout costs.

Jobs:
The Jobs page shows the progress of the asset upload. We can continue working in AEM and return to the Jobs page in Dynamic Media at any time to review an in-progress job.


AEM 6.4 Assets Supported Formats

Image Formats : PNG GIF TIFF JPEG BMP PNM PGM PBM PPM PSD EPS PICT PSB
Document:  DOC DOCX ODT PDF HTML RTF TXT XLS XLSX ODS PPT PPTX ODP INDD PS QXP EPUB Adobe Illustrator (AI)
Multimedia : AAC MIDI 3GP MP3 MPG OGA OGG RA WAV WMA DVI FLV M4V MPEG OGV MOV WMV SWF
Video : mp4 mov qt flv wmv mpg m4v f4v vob m2v mp2 avi webm ogv ogg mxf mts mkv r3d rm ram flac mj2
Archive : TGZ JAR RAR TAR ZIP
Other Supported Formats :SVG, CSS VTT XML Javascript




Video tutorial for AEM 6.4 assets:

 

Tuesday, 21 August 2018

Sample components Creation in AEM 6.4


Steps to create a simple component in AEM 6.4 .

Under /apps, create a project folder(I have create 'myproj'), under which create a /components folder.

Under components, create folders /content and /structure as shown below.

Below shown the component structure in AEM 6.4.

[Click on any image to see it big & clear]

[Component structure in AEM 6.4]

Under structure create a node called 'header'., rename the header.jsp to header.html.

Add property 'componentGroup' : myGroup for the header node.

Copy pasted below html content in 'header.html'

    <div>    
        <li>         
            <p>This is a sample component</p>
            <h3>Header</h3>
            <p>This is a sample text in body pf component</p>           
        </li>
      </ul>
    </div>

Under header node, create a 'dialog' [primary type : cqDialog; xtype dialog]
Under dialog node, we will have 'items' [primary type: cq:Widget; xtype:tabPanel]
Under items, we will have 'items' node [primary type: cqWidegtCollection]
Under items, we will have  'tab1' node[primary type :cq:Panel; title: Tab 1]

The component is ready now.

Author this component on a page:
Since this is a new component, we need to make this component available for our template.
Add this component to our template created earlier by following below steps.

We had placed the component under 'myGroup'.
Now go to template policy section and modify the property to add the component as part of this template. Procedure is shown in below image.



[AEM 6.4 add policy]


Now as you see the new component is available for our template for authoring.


[New component]


Author the component on template and create a new page, so that the newly created component is visible now.


[New component authored n AEM 6.4.png]


Now activate the page (which includes template, component activation), so that the page will be visible in publish environment.

AEM 6.4 Tutorials Video Series
 

Create a page from the template in AEM 6.4



The page creation in AEM 6.4 is very much similar to other previous AEM versions.

I will be using 'we-retail' content location for my page creation to save time.

Go to site admin and reach the path '/content/we-retail/language-masters/en',(remember this is the content path where I had configured my template in my previous post).

 Click on new page and select the 'Html 5 template' we created as part of previous post as shown below and create page from it.

[Click on the image to see them big & clear]

[site creation AEM 6.4]

The new page looks like this.



[Page creation aem 6.4]

Next post we will demonstrate how to create AEM 6.4 sample components.

AEM 6.4 Tutorial Series

Creating an editable template in AEM 6.4


Steps involved in creating an AEM 6.4 Editable Template.

1) Create template folder

To create a template folder, follow this steps.

Go to Global Navigation -> Tools > Configuration Browser.

All the existing folders are listed to the left rail including the global folder.

Click 'Create'.

In the Create Configuration dialog enter below details:

Title: Give a title for the configuration folder(For Eg.SampleFolder)
Editable Templates: Tick to allow for editable templates within this folder
Click Create



2) Creating a New Template - This is usually done by Template Author

Follow below steps.

Go to Tools -> General -> Templates
Select the previously created folder 'SampleFolder'.
Select Create, Select HTML5 Page template(content page), select 'Next'
Enter the name and description and select 'Create'

[Click on the image to see them big & clear]





Now we will see a Success message on completion

AEM 6.4 template creation success


Select Open to start editing the template or Done to return to the template console.

We now have the template created and it has below form.



Using structure option, I have authored a text and an image as shown below.


Using layout container[root],  I have unlocked the layout so that all pages which uses this template will have 'Drag Components Here' enabled and I will be able to author more components.




The 'policy icon' left to the lock icon helps to add policy like linking specific component to this template.

We have the template ready now.

3) Enable the template

Now go to templates folder and select the 'Enable' template so that it is activated. Enabling the template allows the template to be used for page creation.




4)Allowing a Template - Template Author

Now, we need to link this template to our content path. The configuration path is '/conf/SampleProjects/settings/wcm/templates'




Path format in general is : /conf/<your-folder>/settings/wcm/templates/.*

Add this path to page properties of the content root where you are creating page. I have selected 'we-retail' as may content root for ease(/content/we-retail/language-masters/en).

Here is how you can do this, open page from site admin, go to page properties, > advanced > Template settings and add allowed templates with current template path as shown below.

Template property in AEM 6.4

We are done with the template creation now. In next post, we will try to create a page using this template.

AEM 6.4 Tutorial Video Series 
 

Creating a sample component & template in AEM 6.4

In this post , we will understand how to create a sample component, template in AEM 6.4. Below given the steps explained in this tutorial.

  • Create a template in AEM 6.4
  • Create a page from the template in AEM 6.4
  • Create a component in AEM 6.4
  • Author the component in AEM 6.4
  • publish the page and test in AEM 6.4


Template basics in AEM 6.4:
There are 2 types of AEM templates in AEM 6.4, Editable Templates and Static Templates

i) Editable Templates
Now the AEM expects template creation as a combined job of template authors, admin and developer. The editable templates can be created and edited by template authors using the Template console and editor.

ii) Static Templates
Normal way of developing a template. These are developed purely by developers, they cannot be created or edited by authors.

Is there any difference in using editable and static templates while authoring a page?
No. There is no difference and no indication between static and editable templates while creating a page.

Here I will be explaining about working with editable templates.

A template will have below features.
  • Structure - Predefined content that cannot be changed on pages created with the template.
  • Initial Content - Predefined content that can be changed on pages created with the template.
  • Layout - Helps to author for a range of devices by defining various layouts.
  • Styles - Define the styles to be used with the template and its components.


What is a component?
Components are modular units which realize specific functionality to present the content on a website. They are re-usable.

There are two sets of Adobe-provided AEM components available; Core Components & Foundation Components.

Core Components: Core components are known for flexibility and feature-rich authoring functionality. Core Components were introduced to provide robust and extensible base components.

Features:
-Core components make page authoring more flexible and customizable.
-Built on the latest technology and best practices.
-Extending them to offer custom functionality is simple for the developer.

Examples of AEM 6.4 core components are,
  • Breadcrumb
  • Form Button
  • Form Container
  • Content Fragment
  • Form Hidden
  • Form Options
  • Form Text
  • Image
  • Language Navigation
  • List
  • Navigation
  • Page
  • Quick Search
  • Social Media Sharing
  • Text
  • Title

Foundation Components: Out-of-the-box components, which form a subset of the components. Available for a standard installation of AEM.

Note: Foundation components are based on legacy technologies, but are no longer enhanced, so new way is core components.

There are 3 types of foundation components.

  • General: For eg. Adaptive Image,Carousel,List
  • Columns: For eg. 2 Columns, 3 Columns, Column Control
  • Form: For eg. Form (component), Account Name, Address, File Upload,Image Upload


 Complete AEM 6.4 Tutorial Video Series


  

Monday, 20 August 2018

Useful AEM Consoles in AEM 6.4

 Below given all useful consoles from AEM 6.4. This is valid for versions AEM 6.3, AEM 6.2, AEM 6 etc.










AEM Tutorial Videos

AEM Admin Console
http://localhost:4502/aem/start.html

Site Admin Console
http://localhost:4502/siteadmin

DAM Console
http://localhost:4502/damadmin

Campaigns
http://localhost:4502/mcmadmin#/content/dashboar

Inbox
http://localhost:4502/inbox

User Admin
http://localhost:4502/useradmin

Tools Admin
http://localhost:4502/miscadmin

Tag Admin
http://localhost:4502/tagging

CRXDE Lite  
http://localhost:4502/crx/de/index.jsp

CRX Explorer  
http://localhost:4502/crx/explorer/index.jsp

Package Manager  
http://localhost:4502/crx/packmgr/index.jsp

Package Share Explorer  
http://localhost:4502/crx/packageshare/

Backup Console  
http://localhost:4502/libs/granite/backup/content/admin.html

Web Console  
http://localhost:4502/system/console/configMgr

OSGi Bundles Console/Felix console  
http://localhost:4502/system/console/bundles

Query Debugger Tool  
http://localhost:4502/libs/cq/search/content/querydebug.html

Search UI  
http://localhost:4502/crx/explorer/ui/search.jsp?Path=&Query=

Display Client Libraries in use by Component  
http://localhost:4502/libs/granite/ui/content/dumplibs.html

JVM Memory Usage  
http://localhost:4502/system/console/memoryusage

JVM Runtime Properties  
http://localhost:4502/system/console/jmx/java.lang%3Atype%3DRuntime

Performance profiler  
http://localhost:4502/system/console/profiler

Disk Performance Benchmarking  
http://localhost:4502/system/console/diskbenchmark

Product Version and License Information  
http://localhost:4502/system/console/productinfo

Node Type Administration Console  
http://localhost:4502/crx/explorer/nodetypes/index.jsp

Maintenance Tools  
http://localhost:4502/system/console/jmx/com.adobe.granite%3Atype%3DRepository

http://localhost:4502/libs/cq/workflow/content/console.html





Wednesday, 1 August 2018

Enhance Language Translation capabilities of Adobe Experience Manager using Smartling’s Connector

As we know a bigger portion of the global audience accessing digital content doesn't speak English. So the content generated in English needs to be converted to other languages as required. In AEM we do this using various methods including manual process.

Necessity of agile global content management

  • Automate translation management and user experience.
  • Centralize all translation activity to a cloud based dashboard.
  • Take help of analytics to improve translation quality.

For almost all companies translation means manual process of copy paste content in spreadsheets.

Common components of a Translation Management System(For E.g: Smartling)

  • Cloud based and with translation services enabled
  • Having Workflows
  • Have a database
  • Have a good connectivity across channels
  • Ability to provide reports of any kind
  • Should be Secure
  • With a guidance and support

AEM With Smartling - Advantages
 
AEM with Smartling extend Adobe Experience Manager’s capabilities with seamless access to a powerful translation management platform.
The combination of Adobe Experience Manager and Smartling provides users with a robust solution for translation, with full visibility and control across the entire organization. Smartling builds on Adobe Experience Manager’s localization framework, which enables to request translations with the click of a button.

Smartling has almost all of the common components of a Translation Management System.

Some of the features are listed below.
  • Helps to create high quality translations automatically
  • Leverages any native frameworks for localization
  • Translate page, DAM asset metadata, dictionaries, custom attributes , database content etc,
  • Having a dashboard to control translation process and report generation
  • Highly customizable

Why Smartling?
 
Smartling is one of the leading translation management platform to localize almost anything. Smartling's translation management system streamlines the translation process into largely automated and hands free undertaking.

With a focus on automation, scalability, and connectivity, Smartling helps developers tackle translation with technology that addresses current and future requirements

Below are some of the Smartling features
  • Save Time & Money
  • Reliable Technology
  • Status and reporting
  • omni-channel
  • Highly extensible and secure
  • Support for all major localization file formats
  • Seamless integration with developer environment with Smartling SDK
  • Automated generation of visual context for dynamic web applications and mobile apps
  • Automatic data capture
  • machine learning insights
  • APIs with hundreds of endpoints

Site Link: SmartLing

Are there any other such translators?
 
Yes. Wordbee is one such tool for localization of content. It is a cloud-based collaborative translation and project management platform. Wordbee provides Beebox, a CMS connectivity solution to work with AEM.



Adobe AEM CMS can be integrated with Wordbee Translator via its Beebox connector. The AEM-Beebox helps to localize perfectly with minimal management time.

The Beebox Connector is a regular Adobe AEM package (bundle). This connector lets you automatically apply the right project workflow to the right content source. The package has a UI which enables translation jobs and activities. The AEM Connector communicates to the Beebox middleware.

Advantages
  • The Beebox server is installed at the AEM/CQ owner’s premises.
  • A single Beebox server can connect any number of content management systems with any number of Translation Management Systems or translation teams. 

Read about Wordbee
AEM connector page

Friday, 27 July 2018

Understanding Indexing in AEM

Older version of AEM/ CQ, Jackrabbit index the content by default. But Oak doesn't index content by default. We need to do it like how we do indexing for a DataBase.

Why do we need to index?
When a JCR query gets executed, usually it searches the index first. If there is no index, the query executes for the entire content. This is time consuming and an overhead for the AEM. But keep in mind, if the frequency of queries executed are less, we can ignore the indexing.

Let us understand the Oak and AEM indexing in detail here.

In fact, there are three main types of indexes available in Oak
  • Property
  • Lucene
  • Solr
And below are the supported query languages from Oak
  • XPath (recommended)
  • SQL-2
  • SQL (deprecated)
  • JQOM
AEM allows writing queries in one of three ways:
  • QueryBuilder APIs (recommended)
  • Using XPath (recommended)
  • Using SQL2
Note: all queries are converted to SQL2 before being run,

Indexing modes
Different versions of the node data is compared to find indexes. The indexing mode defines how comparison is performed, and when the index content gets updated. Below given the indexing mode and details.

Sync Vs  Async Vs Nrt
  • Async - When we index in async mode, results returned by index may not always reflect the exact up to date state of the repository.
  • Sync - Sync Index ensures that index is updated as part of each commit.
  • NRT - This method indicates that index is a near real time index.
The flow of index is given in below image.
*Click on image to view it big and more clear.

[Indexing in AEM 6.4]



Below given various indexes in detail.

Property Index - Not a full-text indexing method. Index definition is stored in the repository itself.

Configuration
type: property;
propertyNames: jcr:uuid (of type Name)

Ordered Index - [deprecated] - This is an extension of the Property index. It keeps the order of the indexed property persistent in the repository.

Configuration
type: ordered;
propertyNames: jcr:lastModified

Lucene Full Text Index - This is a full text index method, which is asynchronous too.

Configuration
type: lucene ;
async: async

Lucene Property Index - This is not a full-text indexing.

Configuration
 type: lucene ;
 async: async ;
 fulltextEnabled: false;
 includePropertyNames: ["alias"]

The Solr Index - This is a full-text search but it can also be used to index search by path, property restrictions and primary type restrictions, which means the Solr index in Oak can be used for any type of JCR query.

Configuration
type:solr;
async:async;
reindex:true

Traversal Index - When no indexing is done; All content nodes are traversed to find matches to the query, slower and overhead to AEM.

A tabular version is given below



[AEM Oak Indexing]


Video description of the blog given below.



 Read about AEM 6.4 Oak Queries and Indexing

Best Practices for Queries and Indexing

Monday, 23 July 2018

Single Page Applications and AEM

What is Single Page Applications - SPA?

Single Page applications are pages which dynamically update its content using AJAX calls to create a fluid & responsive experience.

In traditional applications, each request reloads/renders the HTML; but in SPA all interactions happens through AJAX calls. The return data is in JSON format. Previous versions of AEM had a miss on the SPA but with upcoming releases AEM SPA Editor provides a wonderful solution for supporting SPAs within AEM.

Single Page Applications - Features


  • This avoids page reloading.
  • Reusable Content.
  • Majority of the work happens in client side.
  • Good separation between content and UI
  • Provides interactive experience
  • RESTFul JSON


SPA(Single Page Applications) Basics

Below image gives an overview on the Single Page Applications in general.
As mentioned, only the first request is responded with a complete HTML. Further requests are made in AJAX way to the server and response in provided in JSON format.


SPA with AEM.
Latest AEM releases are enabling users to develop Single Page Applications using AEM. AEM SPA Editor allows user to author a page with Content Fragments in addition to other normal components like title, footer, images etc and AEM Sling models generate the Page equivalent JSON. This RESTFul JSON can be made available for other SPA frameworks like Angular React etc.


 In upcoming posts, I will explain, how to create SPA in AEM.


Video version of the post is available below.

 

AEM 6.4 related posts:
Create Content Fragments : Step By Step Tutorial
Content Fragment out put as JSON

Friday, 22 June 2018

Quality, Security, Performance Checks in Adobe Cloud Manager

Brief Overview:
As we all know, Adobe Cloud Manager(ACM) is part of the Adobe Managed Cloud Services. Using Adobe Cloud Manager(ACM) organizations can manage their AEM application in cloud themselves.
Read more: Why you should think of using Adobe Cloud Manager for AEM Projects?

There are 3 types of Quality checks provided by ACM CI/CD process.
  • Code Quality
  • Performance Testing
  • Security Testing

Below given Security & Performance Testing criteria's
1. Security checks

Critical:

Critical security is based on 13 AEM Security health checks.
  • AuthorizableNodeName Implementation does not expose authorizable ID in the node name.path
  • Dispatcher filtering request validation
  • The Adobe Granite HTML library manager is configured appropriately
  • Default password must be changed
  • Deserialization firewall Attach API readiness is in an acceptable state
  • Deserialization firewall is Functional
  • Deserialization firewall is Loaded
  • Sling default GET servlet is protected from DOS attacks
  • The Sling Java Script Handler is configured appropriately
  • The Sling JSP Script Handler is configured appropriately
  • The Sling referrer filter is configured in order to prevent CSRF Attacks
  • Correct SSL configuration
  • No Obviously insecure user profile polices found
Important - 6 check points
  • CRXDE Support bundle is disabled
  • Sling DavEx bundle and servlet are disabled
  • Sample content is not installed
  • Both the WCM Request Filter and the WCM Debug Filter are disabled
  • The web server is configured to prevent clickjacking
  • Sling WebDAV bundle and servlet are configured appropriately
Information
  • Replication is not using the admin user
2. Performance Tests are based on

Critical
  • Error rate is less than 2%
  • Total CPU utilization is less than 80%
  • Disk I/O wait time s less than 50%
Important
  • 95 % response time er page is not longer than 3s
  • Peak response time is not longer than 18s
  • Page views per minute is greater than or equal to 200
  • Disk bandwidth utilization is less than 90%
  • Network bandwidth utilization is less than 90%
Information
  • Overall requests per minute is less than 6000
3. Code Quality checks
The ACM build does code inspection based on SonarQuebe, which includes around 110 rules like standard Sonar Java rules,FindBugs rules, Cognifide AEM Rules, Adobe-created Rules.

Read More:
Why you should think of using Adobe Cloud Manager for AEM Projects? 

Why you should think of using Adobe Cloud Manager for AEM Projects?

Brief Overview:
As we all know, Adobe Cloud Manager(ACM) is part of the Adobe Managed Cloud Services. Using Adobe Cloud Manager(ACM) organizations can manage their AEM application in cloud themselves.

-It includes a continuous integration and continuous delivery.
-Code Inspection, performance testing and security validation.
-Automatic, scheduled or manual deployment.

ACM documentation can be found here.

Can we move existing projects in to ACM?
Yes. We can move any existing AEM projects into ACM with recommended option of upgrading AEM version to the latest.

How safe if Adobe cloud service?
Below given the security measures in Adobe Cloud Manager in detail.

Code push to Cloud Manager is encrypted in transit. Cloud Manager build binaries are also encrypted in transit and when stored.
Each customer gets their own Git Repository and code is secure and not shared with any other Organizations.
All the code push happens securely into the Git Repository over HTTPS protocol.
Any service with third party cloud providers are always secured.
ACM(Adobe Cloud Manager) provides Role Based Permissions, which ensure the user action on application is defined within limits, which means developer will not be able to delete the application from cloud, only the authorized product owner or person will have critical permissions.

Quality checks
There are 3 types of check provided by ACM CI/CD process.
  • Code Quality
  • Performance Testing
  • Security Testing
All critical issues reported by system must be fixed.

Technical details of ACM build environment
  • ACM uses below build environment for managing CI/CD process
  • Linux based container
  • Oracle Java version 8
  • Maven version 3.3.9
  • Adobe maven repository(repo.adobe.com) included default

Additional system packages include,
Imagemagick, Graphicsmagick, bzip2, unzip etc.

Types of build pipe line configuration

3 Ways we can configure the CI/CD pipeline process on stage.
  1. Manual
  2. On Git Changes
  3. Recurring schedule
For the production deployment, system provides options as below
  1. GoLive approval,
  2. CSE oversight
  3. Scheduled
Code quality in ACM pipeline

The ACM build does code inspection based on SonarQuebe, which includes around 110 rules like standard Sonar Java rules,FindBugs rules, Cognifide AEM Rules, Adobe-created Rules

Read More: 
Quality, Security, Performance Checks in Adobe Cloud Manager

Friday, 15 June 2018

AEM 6.4 Experience Fragment Basics

Experience Fragment Basics in AEM 6.4

AEM 6.4 provides headless(Content as a  service) CMS capabilities through  Content Fragments and Experience Fragments.

What is an experience fragment?

The headless capability to create experiences can be used to deliver content to third party system/touchpoint through various methods. AEM provides experience  fragments which has content and layout, and third party applications then deliver to the end user. Experience Fragments helps reuse of content.

An 'Experience Fragment' is a collection of components with its own content and layout.
  • Each Experience Fragment is based on a template which gives a structure.
  • Each experience fragment has one/many components with its own layout.
  • Each experience itself makes sense.
  • Created with intention of reuse, re ordered, resized.
  • Experience Fragments works on Caas model, with each fragment can be created with multiple variations.


Scenarios when an AEM Experience Fragment to be used?

There are times when we need to replicate same type of page section in other pages. 'Experience Fragments' can help us saving time in this case. Also cases like AEM is used as headless CMS, where AEM to be just used as content storage, not for delivery. In this case AEM Experience Fragment will be available for a third party rendering system for consuming.

Cases when we need multiple version of content, Experience Fragments are a good option.

Additional notes:

Experience Fragments allow to manage sections of experiences that can easily be reused and distributed. They are template based and allow live copy relationship. At present AEM 6.3 supports Experience fragments to html5 web templates, Pinterest and Facebook templates. Custom templates can be created if required.

Monday, 4 June 2018

Create Content Service End point in AEM 6.4

Content Services & its use

Content Services enable the creation of Page-based HTTP end-points. This end points helps to render the content to a normalized JSON format.

How to configure & access the content services in AEM 6.4?
We need to configure content service end points when ever we need to export a Content Fragment data to external applications(Like Single Page Application or mobile app etc). Let us see how it can be done. The end point pages are not to be accessed as HTML pages, they just export the content in JSON Format.

We have created multi variation Content Fragments following our previous blog Create Content Fragments : Step By Step Tutorial.

Say we have master, mobile , tab variations as shown below.
[Click om images to see it big]


[Mobile & Tab Content Fragment]


Go to Sites> We-retail, click on 'Create' > 'Page'
Enter details as below and click on create. A new page will be created. (/content/we-retail/content-service-for-sample-fragment.html)




Open the page and author the content fragment in this page(Steps are explained in my previous post).




As you see, I have authored master, variation1(Mobile), Variation 2 (Tab) in the same page.

Now go to the page url and append '.model.json' to invoke JSON exporter. (In my case: content-service-for-sample-fragment.model.json). You can see the JSON with all variations included.



[JSON portion of Content Fragment for Mobile]



[JSON format for tablet]



From this JSON, we can iterate over the content fragments section and by checking for the variation, we can render items across various channels.

Remember I have authored the Content Fragment utilizing an existing we-retail template. So the JSON will have all related items like header , footer etc. In real projects, create a stand alone template and then create a page from this.

Related posts:
Create Content Fragments : Step By Step Tutorial
Content Fragment out put as JSON 

 

Saturday, 2 June 2018

Maintenance Releases Deployment Best Practices in AEM

Adobe releases maintenance fixes in duration of some months based on the issues raised by licensed vendors or internal clients etc. Previously it was known as hot fixes, but now it has changed to 'Cumulative Fix pack' & related 'Service Packs'.

Precautions & Best practices: Ensure you always follow below step;

  1. Test in Lower environments first and then move to prod for any maintenance pack deployments.
  2. Ensure you have done a proper back-up of content, DAM and code.
  3. Validate the new package before install


Curl Commands Vs Package Manager?
CURL is a command line version of package manager. Package manager provides the UI to deploy packages.

We recommend using CURL commands if the package size is big(They execute faster through CURL)

Analyzing the Activity Log on package installation:

We can see a BOLD highlighted letters while installing a package through package manager. Below are the notations.

A : Added new content/code to specified path.
D : Deleted content/code.
U : Updated
- : No action taken (remains as it is )
E : Error on path.

Sometimes admin face issues with new packages like unsatisfied package imports or Overlay issues.

How to validate a new package for issues before install?

On package right side, click on More> Validate and select the check boxes and click on 'validate'. The validation and and any issues which exits can be verified through 'Activity Log'. Contact Adobe if any issues are observed.

Once above precautions are followed(Including a lower environment successful deployment), deploy the maintenance pack in prod, then restart  AEM. Clear any cache, test and validate the package version then verify the project related checkpoints at PROD. This steps helps an admin to install a cumulative pack smoothly.

Read Latest AEM 6.4 Topics
Create Content Fragments : Step By Step Tutorial 
Content Fragment Output as JSON in AEM 6.4
 

Thursday, 31 May 2018

AEM 6.4 Content Fragment output as JSON

AEM Content Fragments can be accessed through JSON file URL's.

Create Content Fragments : Step By Step Tutorial

Why we need JSON Formats?
Content Fragments are not just for web pages. A Content Fragment is made available to external applications through JSON format delivery methods. These applications could be,
  • Single Page Applications
  • Native Mobile Applications
  • other channels and touch-points external to AEM
[Click on image to see it big]





AEM 6.4 core components having the capability to export its data to JSON format. This structured content can then be used to deliver to cross channels other than AEM pages. 

Difference between Content Fragment & Experience Fragment
Major difference between Content Fragment & Experience Fragment is that Content Fragment is pure content, without design and layout, but Experience Fragments are fully laid out content - a fragment/portion of a web page.

There are 2 types of content fragments

Simple fragments : Which does not have any predefined structure(only text, and images). Simple Fragment template is the supporting element for this.

Fragments that contain structured content: This is based on a content fragment model. This model will give defined structure.

How do we generate JSON format of a Content Fragment?

AEM 6.4 version also supports JSON Exporter with Content Fragment Core Components. Using this AEM JSON exporter, we can deliver the contents of an AEM page in JSON data model format. This can then be consumed by any third party applications other than AEM.

JSON Exporter is supported by suffixing a url with '.model.json'

Access JSON Format of a Content Fragment

Say we have created 'My Simple Fragment(my-simple-fragment)' Content Fragment,

We can see the complete content using url,
http://localhost:4502/content/dam/my-simple-fragment/_jcr_content/model.json


As you see the output

    {
        "jcr:primaryType": "nt:unstructured",
        "jcr:title": "Simple Fragment",
        "version": 2,
        "jcr:description": "A simple fragment, containing one single element and no predefined variations",
        "precreateElements": true
    }

   
Accessing the JSON output of a Content Fragment authored on a page.


Step1: Access the page JSON

Now I have authored my previously created 'My Simple Fragment(my-simple-fragment)' in We-retail site.(/content/we-retail/language-masters/en/men.html)

Its JSON output can be access through url,
http://localhost:4502/content/we-retail/language-masters/en/men.model.json

Step2: Access the Content Fragment JSON
We can see the content fragment in this page as shown.





To get the authored 'Content Fragment JSON', access the '.model.json' url of the content fragment as below,

http://localhost:4502/content/we-retail/language-masters/en/men/jcr:content/root/responsivegrid/contentfragment_1655772226.model.json

As you see the JSON will have all elements including variations created/authored.





Create Content Fragments : Step By Step Tutorial

Wednesday, 30 May 2018

How to create a Content Fragment in AEM 6.4? Step by step tutorial

Content Fragment helps to author content without creating a Page. The advantage with Content Fragment is that same content can be shared across various channels without worrying about the display part.

What type of data, a Content Fragment can hold?

Content Fragment has well defined content structure, which can hold text segments and references to assets likes images, videos etc.

Steps to create Content Fragments

To start with , go to Assets > Files > Click on Create , Content Fragment

[click on images to see it big]
Content Fragment


Select the template as shown(Default Simple Fragment Template). We can either have our new templates created based on the content requirement or use the default one. Click on Next





In 'Properties' section fill up the basic details of this fragment.




Advanced section will have an auto populated name. We can edit it in case we need our custom property/url here.




Click on 'Create' will show you the success message as shown below. On clicking 'Done' will show the new Content Fragment.



There are many options for a Content Fragment once created. The header bar will have options like download, checkout, edit, manage tags, adding collections copy, move, publish, un-publish delete etc.



Edit options for a content fragment is quiet flexible, through which we can update the textual content, create variations, add / edit metadata etc.



Through 'Create variation' we can create different version of content based on our requirement. These variations are used across different channels.



Now the variation created  will have below action items.



Clicking the 'folder' icon provides us the option to associate content with this content fragment.



On clicking 'metadata' section helps to update the metadata associate with the fragment.




Once all updates are done, save the content fragment to ensure all changes are submitted to crx. The new content fragment created can be found at path '/content/dam'.

YouTube demo videos for Content Fragments:

Download a Content Fragment

The created Content Fragment can be downloaded as shown below. The downloaded fragment can have all related information selected while creation. Unzipping the fragment displays the folder contents.




Unzipped file will have a metadata file with all information.



Deleting a Content Fragment

In the Assets console navigate to the location of the content fragment, Select the fragment and click on delete from tool bar menu.



In the upcoming posts I will be explaining authoring and utilization of Content Fragments.

Read about Content Services in AEM 6.4 and demo