This post has been moved to below link
https://followcybersecurity.com/2019/03/13/aem-solution-creating-aem-jcr-valid-unique-name-programatically/
Showing posts with label Adobe CQ5. Show all posts
Showing posts with label Adobe CQ5. Show all posts
Friday, October 26, 2018
Sunday, August 5, 2018
All About AEM Study meterial.
1) Backup strategies,
2) Sling: EventListner (JCR), EventHandler (AEM) & Schedulers
3) Query: JCR Queries, QueryBuilder, Predicated. When to use which option.
4) Sightly
5) David's content Model
6) Architectural diagrams (Conceptual, Physical, Data Flow, Logical etc.). which diagram is used when and which document you’ll prepare based on customer’s request.
7) AEM Security Checklist: https://docs.adobe.com/docs/en/aem/6-0/administer/security/security-checklist.html
8) Out of the box features & components
9) Translation and Internalizing of AEM components
10) Authentication handler, login module, integration with LDAP, SAML, Development of custom identity providers
11) Security – SAML, LDAP, Custom login module, Authentication handler, 2 factor authentication, clickjacking, CSRF, XSS, firewall rules, DOS attack, ACL groups / users etc.
12) MSM: Blueprint, triggers, actions. Developing custom rollout configurations. Best practices for site hierarchy, live copy, blueprint, live action, roll out config, language copy, translation workflow, etc.
13) Baseline for AEM infrastructure (machine capacity, disk space etc.): how many author/publish instances required based on number of users, size of repository and load on server.
14) Integration with: Adobe Campaign, Adobe Target (mbox.js), Adobe Analytic/Site Catalyst, Adobe Media Optimizer, Dynamic Tag Manager, PhoneGap
15) Importing content from external system – Explore various options such as poll importer, eCommerce product importing, POST servlet, Content packages (best for large content per adobe doc), live feed integration, etc.
16) Integration with external system such as eCommerce PIM, Offer creation system, etc.
17) Serving the web pages created by external system from AEM.
18) Dispatcher – dispatcher.any, permission sensitive caching, dispatcher cache invalidation, etc.
19) Dispatcher server selections – IIS / Apache and how in the context of phased migration to AEM.
20) Dispatcher (very important): you should be able to setup dispatcher on IIS, Apache and should be able to configure it properly based on project requirement. You should know every tag/element and purpose. You should also be ware of security checklist that needs to applied for dispatcher.
21) Deployment options for author / publish and impact on parameters such as performance and failover – TarMK (farm), MongoMK (cluster).
22) Clientlibs and how it helps in improving load time (performance).
23) Performance of author machines – Concurrent workflow, Limiting parallel jobs, Disable asset synchronization service, etc.
24) Identifying number of templates given the pages.
25) AEM forms, its deployment model and security
26) Multiple languages for dialog – Language nodes, translator, etc.
27) AEM translation framework.
28) Account management activities – Password reset, etc.
29) Tagging – Best way to model tag structure.
30) AEM replication. How replication works in various deployment models.
31) WCM Components – Geo location support, OOTB components, Column component, extending components, etc.
32) Ecommerce – product data importing , price information, ecommerce API, etc.
33) UGC / Communities – Moderation, forum support, messaging support, adobe social, social logins, etc.
34) Caching, CDN.
Some Useful links:
· OOTB Components: https://docs.adobe.com/docs/en/aem/6-1/author/page-authoring/default-components/components.html
· Best Practice: https://docs.adobe.com/docs/en/aem/6-0/develop/the-basics/dev-guidelines-bestpractices.html
· OSGi Configs: https://docs.adobe.com/docs/en/cq/5-6-1/deploying/osgi_configuration_settings.html
· https://docs.adobe.com/docs/en/aem/6-1/develop/components/i18n/translator.html
· http://docs.adobe.com/docs/en/aem/6-0/administer/sites/languages.html
· https://docs.adobe.com/docs/en/aem/6-0/develop/components/i18n.html
· http://docs.adobe.com/docs/en/cq/5-5/wcm/default_components.html#Column%20Control
· https://docs.adobe.com/docs/en/cq/5-6-1/deploying/performance.html
· Vanity Path: http://antonyh.co.uk/category/adobe-cq5/
· AEM Form: https://docs.adobe.com/docs/en/aem/6-1/author/page-authoring/default-components/components.html
· https://docs.adobe.com/docs/en/aem/6-0/develop/best-practices.html
· https://helpx.adobe.com/aem-forms/6/aem-forms-architecture-deployment.html
· http://docs.adobe.com/docs/en/aem/6-0/administer/sites/multi-site-manager/msm-sync.html#Synchronisation%20Actions
· http://blogs.adobe.com/experiencedelivers/
· CURL Commands: (https://gist.github.com/sergeimuller/2916697)
Thursday, July 6, 2017
AEM Global Objects - How to create Custom object
Content has been moved to another site & here is the complete solution which you are looking for.
AEM Solution: How to create an AEM Custom global object?
https://followcybersecurity.com/2018/11/26/aem-solution-how-to-create-a-custom-global-object/
Thursday, August 25, 2016
AEM Template Level Properties
Below table explains the properties & attributes at the AEM template level.
Name | Type | Description |
. | cq:Template | Current template. A template is of node type cq:Template. |
allowedChildren | String[] | Path of a template that is allowed to be a child of this template. |
allowedParents | String[] | Path of a template that is allowed to be a parent of this template. |
allowedPaths | String[] | Path of a page that is allowed to be based on this template. |
jcr:created | Date | Date of creation of the template. |
jcr:description | String | Description of the template. |
jcr:title | String | Title of the template. |
ranking | Long | Rank of the template. Used to display the template in the User Interface. |
jcr:content | cq:PageContent | Node containing the content of the template. |
thumbnail.png | nt:file | Thumbnail of the template. |
icon.png | nt:file | Icon of the template. |
Friday, August 5, 2016
How to get OSGI Service reference in AEM?
This post has been moved here.
AEM Solution: How to get OSGI Service object in POJO?
https://followcybersecurity.com/2018/11/24/aem-solution-how-to-get-osgi-service-object/
Saturday, July 4, 2015
Users migration from CQ5.6 to AEM 6.0/6.1
Problem :
Business wants to move whole legacy CQ application to new AEM 6.0/ AEM 6.1. There are different types of migration from legacy to new AEM version and it all depends on what is version of legacy application. If it is below than CQ5.6 then there might be lot of effort to make things work. Assets & static data can be moved easily but moving components & bundles might be a big hurdle.
Business wants to move whole legacy CQ application to new AEM 6.0/ AEM 6.1. There are different types of migration from legacy to new AEM version and it all depends on what is version of legacy application. If it is below than CQ5.6 then there might be lot of effort to make things work. Assets & static data can be moved easily but moving components & bundles might be a big hurdle.
However, we are here to talk about how do we move users to new AEM instance without any manual effort. When we proceed migrating users & their groups, first thing comes to our mind is that let's create a package of all the users & their groups and install it in another instance. This seems pretty right approach and convincing as well. To be fair, AEM package manager module is build for such things (Importing/Exporting content & AEM stuff).
But when you try to install a package which contains users & groups info of legacy system, it throws a big exception and leave you with no hope. Let's see exception first..
com.day.jcr.vault.packaging.PackageException: org.apache.jackrabbit.vault.packaging.PackageException: javax.jcr.nodetype.ConstraintViolationException: OakConstraint0025: Authorizable property rep:authorizableId may not be removed.
|----------------------------------------Big LOG------------------------------------------------------
| ----------------------------------------------------------------------------------------
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.jackrabbit.vault.packaging.PackageException: javax.jcr.nodetype.ConstraintViolationException: OakConstraint0025: Authorizable property
Caused by: org.apache.jackrabbit.oak.api.CommitFailedException: OakConstraint0025: Authorizable property rep:authorizableId may not be removed.
|----------------------------------------Big LOG------------------------------------------------------
| ----------------------------------------------------------------------------------------
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:667)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
at java.lang.Thread.run(Unknown Source)
Caused by: org.apache.jackrabbit.vault.packaging.PackageException: javax.jcr.nodetype.ConstraintViolationException: OakConstraint0025: Authorizable property
Caused by: org.apache.jackrabbit.oak.api.CommitFailedException: OakConstraint0025: Authorizable property rep:authorizableId may not be removed.
woooo damn it Packaging. What to do now?. Creating all the users & their groups in another system?. Not a good idea. you can't simply do that. if we can, what about their passwords?.
So what next?
So what next?
Solution:
Well, Many of us as AEM developers are agreed that Package manager is the right tool for moving content (Even taking backup of content). Though it does not work efficiently moving large content and assets. There are multiple open source solutions. For instance, "GRABBIT" is one of the best and fastest tool to transfer content from one system to another.
Anyway, Let's get back to our problem in hand. In this case, Package manager throws big exception and exception does not provide a clue here.
But if you look closely, it seems, package manager is not able to override the admin accounts. Actually, CRX is not allowing admin users to be overridden. In a way, it is right doing so. My personal opinion is that CRX is not allowing admin users to be overridden because admin has all the privileges and AEM stores permissions information in a different way. It maintains "rep:policy" nodes to keep privileges and can't be overridden just like that.
But if you look closely, it seems, package manager is not able to override the admin accounts. Actually, CRX is not allowing admin users to be overridden. In a way, it is right doing so. My personal opinion is that CRX is not allowing admin users to be overridden because admin has all the privileges and AEM stores permissions information in a different way. It maintains "rep:policy" nodes to keep privileges and can't be overridden just like that.
FYI
Package manager does help when you want to move users & groups privileges from one instance to another. which is a different case.
Package manager does help when you want to move users & groups privileges from one instance to another. which is a different case.
In order to solve above problem, we still going to use package manager. So, follow below steps:
- Create a package and put all the users & their groups.
Exclude few users & groups : - admin & administrative anonymous (not necessary but good to keep it exclude )
- If same user & group found in both environment, delete from AEM6 instance before installing 5.6 user package. You should ignore admin & anonymous here too.
Install it. - To verify your accounts, login with any of your group. Also you can verify logged-in user's privileges.
Note :
This solution is tested and proven in one of our application. However, if you still find any issue, leave a comment, will try to help you.
----
Jitendra
Java & AEM Developer
Jitendra
Java & AEM Developer
Subscribe to:
Posts (Atom)
AEM Page Manager API: Creating valid & Unique name programatically.
This post has been moved to below link AEM Solution: Creating AEM JCR valid & Unique name programatically https://followcybersecu...
-
This post has been moved to below link AEM Solution: Creating AEM JCR valid & Unique name programatically https://followcybersecu...
-
This post has been moved here. AEM Solution: How to get OSGI Service object in POJO? https://followcybersecurity.com/2018/11/24/...
-
This post content has been moved to below link Git Windows Solution: Git checkout fails in windows OS https://followcybersecurity.com...