What is a portlet preparation? Why do I need it?
Each implementation of the portlet container has its own way of working internally within the portlet application. For example, the Apache Pluto portlet container embedded within Jahia works by inserting a servlet that will be used to dispatch portlets upon deployment or at packaging time. The portlet container then calls the servlet, which in turn will relay the request to the requested portlet.
Portlet preparation is a modification of the WEB-INF/web.xml file adding the proper configuration for each portlet to be mapped through the PortletServlet servlet used internally by Apache Pluto. It is therefore a required step for proper deployment inside Jahia.
You can check if a portlet application has already prepared by opening its WEB-INF/web.xml file. If you see lines similar to the code below, this means the portlet has already been prepared, and you may deploy it without preparing it first.
<servlet><servlet-name>TestPortlet1</servlet-name><servlet-class>org.apache.pluto.container.driver.PortletServlet</servlet-class><init-param><param-name>portlet-name</param-name><param-value>TestPortlet1</param-value></init-param><load-on-startup>1</load-on-startup></servlet>

