/// <summary>
        /// Process the updated logical network.
        /// </summary>
        /// <remarks>
        /// Ignore logical network that does not belong to us.
        /// </remarks>
        protected override void DoODLVSEMCmdlet()
        {
            var hnvLogicalNetworkManagement = new HNVLogicalNetworkManagement(this.conn.GetVtnHostName());

            // Make sure we are managing this logical network.
            if (hnvLogicalNetworkManagement.IsHNVLogicalNetwork(this.LogicalNetwork) == true) {
                var txnMng = new TransactionManager();
                txnMng.StartTransaction();
                var ope = TransactionManager.Operation.None;
                bool writeResult = false;

                try {
                    switch (this.OperationType) {
                        case NetworkEntityPublishType.Create:
                            {
                                // Create is not supported through VMM.
                                writeResult = true;
                            }
                            break;

                        case NetworkEntityPublishType.Update:
                            {
                                hnvLogicalNetworkManagement.UpdateLogicalNetwork(txnMng, this.LogicalNetwork);
                                writeResult = hnvLogicalNetworkManagement.IsLogicalNetworkValid(this.LogicalNetwork);
                            }
                            break;

                        case NetworkEntityPublishType.Delete:
                            {
                                // Delete is not supported through VMM.
                                writeResult = true;
                            }
                            break;
                    }

                    ope = TransactionManager.Operation.Commit;
                } catch (Exception ex) {
                    ope = TransactionManager.Operation.Rollback;
                    throw VSEMODLExceptionUtil.ConvertExceptionToVSEMException(ex);
                } finally {
                    txnMng.EndTransaction(ope);
                }

                string output = "\"Logical Network\":" + new JavaScriptSerializer().Serialize(this.LogicalNetwork);
                ODLVSEMETW.EventWriteEndCmdlet(this.CmdletName, output);

                // Indicate errors.
                if (!writeResult) {
                    this.WriteObject(this.LogicalNetwork);
                }
            }
        }
        /// <summary>
        /// This function is responsible to retrieve the VSEMFabricNetworkDefinition information
        /// for the connection.
        /// </summary>
        protected override void DoODLVSEMCmdlet()
        {
            var JavaScriptSerializer = new JavaScriptSerializer();
            JavaScriptSerializer.MaxJsonLength = int.MaxValue;
            StringBuilder json = new StringBuilder(" \"ID\":" + JavaScriptSerializer.Serialize(this.ID));
            ODLVSEMETW.EventWriteDoCmdlet(this.CmdletName,
                "Retrieving logical network definition.",
                json.ToString());
            List<LogicalNetwork> vmNw = null;
            TransactionManager txnMng = new TransactionManager();
            txnMng.StartTransaction();
            var operation = TransactionManager.Operation.None;
            try {
                if (this.ID != Guid.Empty) {
                    vmNw = new List<LogicalNetwork>();
                    vmNw.Add(this.conn.GetVSEMLogicalNetworkById(txnMng, this.ID));
                    ODLVSEMETW.EventWriteReturnLibrary(string.Format(CultureInfo.CurrentCulture,
                        "Logical network definition is retrieved by ID: {0}.",
                        this.ID.ToString("B")),
                        string.Empty);

                    if (vmNw[0] == null) {
                        ODLVSEMETW.EventWriteProcessCmdletWarning(this.CmdletName,
                        string.Format(CultureInfo.CurrentCulture,
                        "ID '{0}' not found.",
                        this.ID.ToString("B")));
                        this.WriteWarning(string.Format(CultureInfo.CurrentCulture,
                            "ID '{0}' not found.",
                            this.ID.ToString("B")));
                    } else {
                        var hnvmgmt = new HNVLogicalNetworkManagement(this.conn.GetVtnHostName());

                        // Validate HNV LogicalNetwork. Need not check return value.
                        hnvmgmt.IsLogicalNetworkValid(vmNw[0]);
                        this.WriteObject(vmNw, true);
                    }
                } else {
                    vmNw = this.conn.GetVSEMLogicalNetwork(txnMng);
                    ODLVSEMETW.EventWriteReturnLibrary(
                        "Logical networks are retrieved.", string.Empty);
                    if (vmNw == null) {
                        ODLVSEMETW.EventWriteProcessCmdletWarning(this.CmdletName,
                            "Logical network not found.");
                        this.WriteWarning("Logical network not found.");
                    } else {
                        var hnvmgmt = new HNVLogicalNetworkManagement(this.conn.GetVtnHostName());
                        for (int i = 0; i < vmNw.Count; i++) {
                            // Validate HNV LogicalNetworks. Need not check return value.
                            hnvmgmt.IsLogicalNetworkValid(vmNw[i]);
                        }
                        this.WriteObject(vmNw, true);
                    }
                }
            } catch (Exception ex) {
                Exception exception = VSEMODLExceptionUtil.ConvertExceptionToVSEMException(ex);
                ODLVSEMETW.EventWriteFailedCmdlet(this.CmdletName, exception.GetType() + " : " + ex.Message);
                operation = TransactionManager.Operation.Rollback;
                throw exception;
            } finally {
                txnMng.EndTransaction(operation);

                string output = "\"LogicalNetwork\":" + JavaScriptSerializer.Serialize(vmNw);
                ODLVSEMETW.EventWriteEndCmdlet(this.CmdletName, output);
            }
        }