Hi there, I believe, the simplest and quickest way of fixing that top-level-skin problem is replacing the doSkin method of class org.apache.jetspeed.modules.actions.portlets.CustomizeSetAction with the code displayed below. It simply does not allow to set null skin reference for top PSML element, replacing null with default skin, when necessary. I already use this fix in my company's jetspeed-based portal. Regards Olaf Romanski, olaf.romanski@tpg.pl /** * Set the skin in the PSML and the current PortletConfig * using the HTML parameter "skin". If the parmeter is * missing or 'blank', then the skin is set to null. * */ public void doSkin(RunData rundata, Context context) { // we should first retrieve the portlet to customize and its parameters // definition PortletSet set = (PortletSet) ((JetspeedRunData) rundata).getCustomized(); try { String skin = rundata.getParameters().getString("skin"); Profile profile = ((JetspeedRunData) rundata).getCustomizedProfile(); Portlets portlets = profile.getDocument().getPortletsById(set.getID()); // skin is neither null nor zero-length if ((skin != null) && (skin.trim().length() > 0)) { PortletSkin s = PortalToolkit.getSkin(skin); if (s != null) { set.getPortletConfig().setPortletSkin(s); Skin psmlSkin = portlets.getSkin(); if (psmlSkin == null) { portlets.setSkin(new PsmlSkin()); } portlets.getSkin().setName(skin); } else { Log.warn("Unable to update skin for portlet set " + set.getID() + " because skin " + skin + " does not exist."); return; } } else { // skin is either null or zero-length String custPortletSetID = portlets.getId(); String rootPortletSetID = profile.getRootSet().getID(); // set system default skin for root PSML element if (custPortletSetID != null && rootPortletSetID != null && custPortletSetID.equals(rootPortletSetID)) { // get system default skin String defaultSkinName = JetspeedResources.getString("services.PortalToolkit.default.skin"); PortletSkin defaultSkin = PortalToolkit.getSkin(defaultSkinName); if (defaultSkin != null) { set.getPortletConfig().setPortletSkin((PortletSkin) defaultSkin); Skin psmlSkin = portlets.getSkin(); if (psmlSkin == null) { portlets.setSkin(new PsmlSkin()); } portlets.getSkin().setName(defaultSkin.getName()); } else { Log.warn("Unable to set default skin for root portlet set " + set.getID() + " because skin " + skin + " does not exist."); return; } } else { // By setting the skin to null, the parent's skin will be used. set.getPortletConfig().setPortletSkin((PortletSkin) null); portlets.setSkin(null); } } } catch (Exception e) { Log.error(e); } }