Index: src/com/metamatrix/modeler/internal/ui/wizards/ModelerProjectZipOperation.java
===================================================================
--- src/com/metamatrix/modeler/internal/ui/wizards/ModelerProjectZipOperation.java	(revision 1565)
+++ src/com/metamatrix/modeler/internal/ui/wizards/ModelerProjectZipOperation.java	(working copy)
@@ -12,6 +12,12 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IResource;
@@ -24,6 +30,8 @@
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.operation.ModalContext;
 import org.eclipse.ui.PlatformUI;
+import org.xml.sax.SAXException;
+
 import com.metamatrix.core.util.I18nUtil;
 import com.metamatrix.modeler.ui.UiConstants;
 
@@ -169,7 +177,37 @@
                                         resource.getFullPath().makeRelative(),
                                         e.getMessage()}),
                                     e);
-            }
+            } catch (SAXException e) {
+            	addError(getString(ZIPPING_RESOURCE_PROBLEM, 
+                        new Object[] {
+                            resource.getFullPath().makeRelative(),
+                            e.getMessage()}),
+                        e);			
+            } catch (ParserConfigurationException e) {
+            	addError(getString(ZIPPING_RESOURCE_PROBLEM, 
+                        new Object[] {
+                            resource.getFullPath().makeRelative(),
+                            e.getMessage()}),
+                        e);	
+            } catch (TransformerConfigurationException e) {
+            	addError(getString(ZIPPING_RESOURCE_PROBLEM, 
+                        new Object[] {
+                            resource.getFullPath().makeRelative(),
+                            e.getMessage()}),
+                        e);	
+			} catch (TransformerException e) {
+				addError(getString(ZIPPING_RESOURCE_PROBLEM, 
+                        new Object[] {
+                            resource.getFullPath().makeRelative(),
+                            e.getMessage()}),
+                        e);	
+			} catch (TransformerFactoryConfigurationError e) {
+				addError(getString(ZIPPING_RESOURCE_PROBLEM, 
+                        new Object[] {
+                            resource.getFullPath().makeRelative(),
+                            e.getMessage()}),
+                        e);	
+			}
 
             monitor.worked(1);
             ModalContext.checkCanceled(monitor);
@@ -231,7 +269,8 @@
         exporter =
             new ModelerZipExporter(
                 destinationFilename,
-                useCompression);
+                useCompression,
+                clearSourceConnectionInfo);
 
     }
     /**
Index: src/com/metamatrix/modeler/internal/ui/wizards/ModelerZipExporter.java
===================================================================
--- src/com/metamatrix/modeler/internal/ui/wizards/ModelerZipExporter.java	(revision 1565)
+++ src/com/metamatrix/modeler/internal/ui/wizards/ModelerZipExporter.java	(working copy)
@@ -7,117 +7,213 @@
  */
 package com.metamatrix.modeler.internal.ui.wizards;
 
-
+import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.StringReader;
 import java.util.zip.CRC32;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.CoreException;
+import org.teiid.core.util.StringUtil;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
 
 /**
  * Exports resources to a .zip file
  */
 public class ModelerZipExporter {
 
-    private ZipOutputStream outputStream;
-    private boolean useCompression = true;
+	private ZipOutputStream outputStream;
+	private boolean useCompression = true;
+	private boolean clearSourceConnectionInfo = true;
 
-    // constants
+	// constants
 
-    /**
-     * Create an instance of this class.
-     * 
-     * @param filename
-     *            java.lang.String
-     * @param compress
-     *            boolean
-     * @param includeManifestFile
-     *            boolean
-     * @exception java.io.IOException
-     */
-    public ModelerZipExporter(String filename,
-                              boolean compress) throws IOException {
-        outputStream = new ZipOutputStream(new FileOutputStream(filename));
-        useCompression = compress;
-    }
+	/**
+	 * Create an instance of this class.
+	 * 
+	 * @param filename
+	 *            java.lang.String
+	 * @param compress
+	 *            boolean
+	 * @param includeManifestFile
+	 *            boolean
+	 * @param clearSourceConnectionInfo
+	 *            boolean
+	 * @exception java.io.IOException
+	 */
+	public ModelerZipExporter(String filename, boolean compress,
+			boolean clearSourceConnectionInfo) throws IOException {
+		this.outputStream = new ZipOutputStream(new FileOutputStream(filename));
+		this.useCompression = compress;
+		this.clearSourceConnectionInfo = clearSourceConnectionInfo;
+	}
 
+	/**
+	 * Do all required cleanup now that we're finished with the currently-open
+	 * .zip
+	 * 
+	 * @exception java.io.IOException
+	 */
+	public void finished() throws IOException {
+		outputStream.close();
+	}
 
-    /**
-     * Do all required cleanup now that we're finished with the currently-open .zip
-     * 
-     * @exception java.io.IOException
-     */
-    public void finished() throws IOException {
-        outputStream.close();
-    }
+	/**
+	 * Create a new ZipEntry with the passed pathname and contents, and write it
+	 * to the current archive
+	 * 
+	 * @param pathname
+	 *            java.lang.String
+	 * @param contents
+	 *            byte[]
+	 * @exception java.io.IOException
+	 */
+	protected void write(String pathname, byte[] contents) throws IOException {
+		ZipEntry newEntry = new ZipEntry(pathname);
 
-    /**
-     * Create a new ZipEntry with the passed pathname and contents, and write it to the current archive
-     * 
-     * @param pathname
-     *            java.lang.String
-     * @param contents
-     *            byte[]
-     * @exception java.io.IOException
-     */
-    protected void write(String pathname,
-                         byte[] contents) throws IOException {
-        ZipEntry newEntry = new ZipEntry(pathname);
+		// if the contents are being compressed then we get the below for free.
+		if (!useCompression) {
+			newEntry.setMethod(ZipEntry.STORED);
+			newEntry.setSize(contents.length);
+			CRC32 checksumCalculator = new CRC32();
+			checksumCalculator.update(contents);
+			newEntry.setCrc(checksumCalculator.getValue());
+		}
 
-        // if the contents are being compressed then we get the below for free.
-        if (!useCompression) {
-            newEntry.setMethod(ZipEntry.STORED);
-            newEntry.setSize(contents.length);
-            CRC32 checksumCalculator = new CRC32();
-            checksumCalculator.update(contents);
-            newEntry.setCrc(checksumCalculator.getValue());
-        }
+		outputStream.putNextEntry(newEntry);
+		outputStream.write(contents);
+		outputStream.closeEntry();
+	}
 
-        outputStream.putNextEntry(newEntry);
-        outputStream.write(contents);
-        outputStream.closeEntry();
-    }
+	/**
+	 * Write the passed resource to the current archive
+	 * 
+	 * @param resource
+	 *            org.eclipse.core.resources.IFile
+	 * @param destinationPath
+	 *            java.lang.String
+	 * @exception java.io.IOException
+	 * @exception org.eclipse.core.runtime.CoreException
+	 * @throws TransformerFactoryConfigurationError
+	 * @throws TransformerException
+	 * @throws TransformerConfigurationException
+	 */
+	public void write(IFile resource, String destinationPath)
+			throws IOException, CoreException, SAXException,
+			ParserConfigurationException, TransformerConfigurationException,
+			TransformerException, TransformerFactoryConfigurationError {
+		ByteArrayOutputStream output = null;
+		InputStream contentStream = null;
+		Document doc = null;
+		// If the user wants to remove the connection info during export and
+		// this is a model file, look for "tags" with key values that start 
+		// with "connection" and remove the node
+		if (this.clearSourceConnectionInfo
+				&& resource.getFileExtension().equals("xmi")) {
+			contentStream = resource.getContents(false);
+			doc = readXml(contentStream);
+			removeAll(doc, Node.ELEMENT_NODE, "tags", "connection");
+			doc.normalize();
+			contentStream = convertDocToInputStream(doc);
 
-    /**
-     * Write the passed resource to the current archive
-     * 
-     * @param resource
-     *            org.eclipse.core.resources.IFile
-     * @param destinationPath
-     *            java.lang.String
-     * @exception java.io.IOException
-     * @exception org.eclipse.core.runtime.CoreException
-     */
-    public void write(IFile resource,
-                      String destinationPath) throws IOException,
-                                             CoreException {
-        ByteArrayOutputStream output = null;
-        InputStream contentStream = null;
+		}
 
-        try {
-            output = new ByteArrayOutputStream();
-            contentStream = resource.getContents(false);
-            int chunkSize = contentStream.available();
-            byte[] readBuffer = new byte[chunkSize];
-            int n = contentStream.read(readBuffer);
+		try {
+			output = new ByteArrayOutputStream();
+			if (contentStream == null)
+				contentStream = resource.getContents(false);
+			int chunkSize = contentStream.available();
+			byte[] readBuffer = new byte[chunkSize];
+			int n = contentStream.read(readBuffer);
 
-            while (n > 0) {
-                output.write(readBuffer);
-                n = contentStream.read(readBuffer);
-            }
-        } finally {
-            if (output != null)
-                output.close();
-            if (contentStream != null)
-                contentStream.close();
-        }
+			while (n > 0) {
+				output.write(readBuffer);
+				n = contentStream.read(readBuffer);
+			}
+		} finally {
+			if (output != null)
+				output.close();
+			if (contentStream != null)
+				contentStream.close();
+		}
 
-        write(destinationPath, output.toByteArray());
-    }
+		write(destinationPath, output.toByteArray());
+	}
 
-}
+	// This method walks the document and removes all nodes
+	// of the specified type and specified name that satisfy the filter condition.
+	public static void removeAll(Node node, short nodeType, String name, String filter) {
+	    if (node.getNodeType() == nodeType && node.getNodeName().equals(name) 
+	    		&& node.getAttributes().getNamedItem("key").getTextContent().startsWith(filter)) {
+	    	node.getParentNode().removeChild(node);
+	    } else {
+	        // Visit the children
+	        NodeList list = node.getChildNodes();
+	        for (int i=0; i<list.getLength(); i++) {
+	            removeAll(list.item(i), nodeType, name, filter);
+	        }
+	    }
+	}
 
+	/**
+	 * Read XML as DOM.
+	 */
+	public Document readXml(InputStream is) throws SAXException, IOException,
+			ParserConfigurationException {
+		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+
+		dbf.setValidating(false);
+		dbf.setIgnoringComments(false);
+		dbf.setIgnoringElementContentWhitespace(true);
+		dbf.setNamespaceAware(true);
+
+		DocumentBuilder db = null;
+		db = dbf.newDocumentBuilder();
+		db.setEntityResolver(new NullResolver());
+
+		return db.parse(is);
+	}
+
+	public InputStream convertDocToInputStream(Document doc)
+			throws TransformerConfigurationException, TransformerException,
+			TransformerFactoryConfigurationError {
+
+		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+		Source xmlSource = new DOMSource(doc);
+		Result outputTarget = new StreamResult(outputStream);
+		TransformerFactory.newInstance().newTransformer().transform(xmlSource,
+				outputTarget);
+		InputStream is = new ByteArrayInputStream(outputStream.toByteArray());
+		return is;
+	}
+
+	class NullResolver implements EntityResolver {
+		public InputSource resolveEntity(String publicId, String systemId)
+				throws SAXException, IOException {
+			return new InputSource(new StringReader(
+					StringUtil.Constants.EMPTY_STRING));
+		}
+	}
+}
Index: src/com/metamatrix/modeler/internal/ui/wizards/ExportModelerProjectSetWizard.java
===================================================================
--- src/com/metamatrix/modeler/internal/ui/wizards/ExportModelerProjectSetWizard.java	(revision 1565)
+++ src/com/metamatrix/modeler/internal/ui/wizards/ExportModelerProjectSetWizard.java	(working copy)
@@ -14,6 +14,7 @@
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+
 import org.eclipse.core.resources.IContainer;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
@@ -50,8 +51,9 @@
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.model.WorkbenchLabelProvider;
 import org.teiid.core.util.FileUtils;
-import com.metamatrix.core.util.I18nUtil;
+
 import com.metamatrix.core.util.CoreStringUtil;
+import com.metamatrix.core.util.I18nUtil;
 import com.metamatrix.modeler.core.ModelerCore;
 import com.metamatrix.modeler.core.workspace.ModelProject;
 import com.metamatrix.modeler.core.workspace.ModelWorkspaceException;
