The Microsoft Exchange Email Server Plugin has been discontinued by Practice Insight and is no longer supported. However, the source code is openly available for individual use. Please check here.
- 1 .NET
- 2 Microsoft Visual Studio Express 2012
- 3 Configuration Settings
- 4 Set "ClearCategories" to false
- 5 Basic Installation Steps
- 6 Detailed Installation Steps (Optional, use when needed)
- 7 Agent Logs:
- 8 Troubleshooting
- 9 Agent Logs
- 10 Agent Functioning
- 11 Message Deliver
- 12 Exchange Logs/tools
The Microsoft Exchange Email Server Plugin can be configured to automatically save the organization's incoming and outgoing emails to Patricia. This will occur where a valid case reference is found in the subject line, and/or within the first 4 lines of the email content. Once a valid case reference has been located the email is automatically saved to Patricia. For emails being received directly into an inbox within the organization, a color-coded category can be set and automatically applied to all emails that have been saved to Patricia. An example is provided in the screen shot below:
A ‘Do Not Save’ string can be set allowing email authors to selectively disable the save functionality, if for any reason it is not desirable for a given email to be saved to a case. The string is specified in table PAT_DMS_SETTINGS, the relevant key is auto.save.skip.subject.key.
Software on Development Machine
.NET
- Exchange 2010 requires .NET 3.5 to be installed (blog article: how to install .NET 3.5 on WinServer 2008R2).
- Exchange 2013 requires .NET 4.5 to be installed.
Microsoft Visual Studio Express 2012
Download Microsoft Visual Studio Express 2012 from http://www.microsoft.com/en-us/download/details.aspx?id=34673 (select file "wdexpress_full.exe" to download)
The source code can be downloaded here: https://dl.dropboxusercontent.com/u/13110611/nuxeo/pi-nuxeo-exchange.zip
When open the source code with Visual Studio, we need to:
1) Change the .Net framework according to the Exchange server version.
2) Change log4net reference.
3) Copy the two Exchange DLL files from the Exchange server to the development machine: Microsoft.Exchange.Data.Common.dll and Microsoft.Exchange.Data.Transport.dll
4) Change the two exchange data API related references for these two DLLs.
5) Change to "Release" from the dropdown list in toolbar.
and then we can rebuild the solution and get files we need from the release folder.
Software on Exchange Server
When using PowerShell or Exchange Management Shell, please always run it as administrator. Otherwise, there will be permission issues.
Configuration Settings
Name | Description | Default Value |
---|---|---|
CategoryValue | Value that the category header should be set to. | Default value is “Saved” |
CreateEML | Indicates whether an EML file has to be written out. The file will be saved in the same location as the dll. | Default value is false. |
IncludeCaseRefsInHeader | If this property is true, case references will be included in header, and in Outlook user may see multiple tags of case references in addition to the tag "Saved". If it is set to false, then only "Saved" tag will be shown in user's Outlook. | Default value is true. |
SavedDateHeaderName | The header that is stamped to indicate the date it was processed. | Default value is “X-Pi-Saved-Date” |
SavedListHeaderName | The header that is stamped to indicate the case reference list it was saved. | Default value is “X-Pi-Saved-List” |
ServiceAddress | REST service address where the mime data is sent. | No default value. Mandatory field and the value has to be specified. |
SubjectPrefix | Prefix that the subject has to be prefixed with. | Default is null, meaning it is not prefixed with anything. |
WebProxyAddress | Proxy address. Can be used for debugging with fiddler. | Default is null meaning no proxy used. |
Set “ClearCategories” to false
Keywords (also known as Categories) are stripped from the message by default. This can be disabled using the "Set-TransportConfig –ClearCategories $false" cmdlet.
- http://technet.microsoft.com/en-us/library/bb124151.aspx
- http://technet.microsoft.com/en-us/library/cc308574(v=exchg.80).aspx
Execute the following command in Exchange Management Shell:
Set-TransportConfig –ClearCategories $false
Otherwise, the category will not be shown in Outlook.
Basic Installation Steps
- Get the latest source code and re-compile again the correct version of Exchange Servers dlls and .NET framework. Example files can be downloaded from here: ex2010-release-20140606.zip (for Exchange Server 2010) or ex2013-release-20140605.zip (for Exchange Server 2013)
- Create a folder to store the plugin DLL and XML files on the hub server. Eg: C:\TransportAgents (Please just use this one if possible)
- Set config files. Set username/password in MailAgent.cs. Make sure this user has unrestricted access rights to the Patricia documents drive.
- Unpack it to: C:\ex2010-release-20140605\
- Copy all DLL and XML files extracted to to the newly created folder, including:
- log4net.dll
- log4net.xml
- PI.PiNuxeoAgent.dll
- PiNuxeoAgentConfig.xml
- Run a new 'Exchange Management Shell' as Administrator (close all opened 'Exchange Management Shell' windows)
- Change the current directory to C:\ex2010-release-20140605\
- Run command: .\InstallAgentExch2010.ps1
Detailed Installation Steps (Optional, use when needed)
Installation of the Transport Agent involves the following:
Please note that the installation script AgentInstall.ps1 does all the steps from step 3 onwards.
- Create a folder for the dll on the hub server. Eg: C:\TransportAgents.
- Copy all files from the release location to the newly created folder.
- Give NetworkService full permissions to this folder.
In the screen shot below the permissions are given to c:\TransportAgents.
4. Open Exchange management shell as Administrator
5. Restart IIS via IISRESET command.
6. Install the Transport Agent (http://technet.microsoft.com/en-us/library/aa997998(v=exchg.141).aspx)
Install-TransportAgent -Name "PiNuxeoAgent" -TransportAgentFactory "PI.PiNuxeoAgent.MailAgentRoutingFactory" -AssemblyPath "C:\TransportAgents\PI.PiNuxeoAgent.dll"
NOTE: If the shell does not recognize the command, load Exchange Snapin first.
For Exchange Server 2010, execute the following command:
Add-PSSNapin -Name Microsoft.Exchange.Management.PowerShell.E2010
For Exchange Server 2013, execute the following command:
Add-PSSNapin Microsoft.Exchange.Management.PowerShell.SnapIn
7. Enable Transport Agent
Enable-transportagent “PiNuxeoAgent"
8. Restart Microsoft Exchange transport service.
9. Send a sample mail to confirm the behaviour. Use Outlook or send it from Exchange Shell as follows:
Send-MailMessage -To "process@auto.ghfip.com.au" -Subject "Test" -Body "Messageeeeeeee" -SmtpServer "server.ghfex.com.au" -From "process@auto.ghfip.com.au"
The script that installs can be found along with the release files (AgentInstall.ps1). This script:
- Takes folder (where the agent dll is), smtp server (through which a sample mail can be sent) and a mail address (which can be used for sending the message) as arguments.
- It gives Networkservice full permissions on the given folder, installs the agent, restarts the transport service and sends a sample message.
- The script can be run as follows
AgentInstall.ps1 -folder “C:\TransportAgents” -mail “process@auto.ghfip.com.au” -server “server.ghfex.com.au”
-folder is the folder where the transport agent dll is.
-mail is the mail address where the test mail is being sent to.
-server is the server that SMTP server for sending the mail
Agent Logs:
Logging is done through Log4Net. See the following notes on logging:
Logging Notes:
- Logs are written to the same folder as the all.
- The files are written to the same directory as the dll.
- The file is saved as _MailAgent.log.
- File is rolled over after every 1 GB.
- Last 10 files are maintained.
- Logs can be configured to multiple levels - Info, Debug, Error. Info is the default level.
Troubleshooting
Some of the issues that may occur are (not necessarily because of the agent, but quite often because of Exchange’s interaction with agent, clashes with other agents, some exchange settings etc)
- Agent is not functioning as expected - This would be a bug with the agent.
- Mail is not getting delivered - Likely cause be another agent or exchange not delivering it correctly.
The first step in resolving this issue is to confirm that the agent is running. To do this:
1. Open Exchange management command shell.
2. Run the command Get-TransportAgent and confirm that PiNuxeo agent is installed and enabled.
Issue of digitally signing
If you got this message:
File C:\ex2010-release-20140605\InstallAgentExch2010.ps1 cannot be loaded. The file C:\ex2010-release-20140605\InstallA gentExch2010.ps1 is not digitally signed. The script will not execute on the system. Please see "get-help about_signing " for more details.. At line:1 char:27 + .\InstallAgentExch2010.ps1 <<<< + CategoryInfo : NotSpecified: (:) [], PSSecurityException + FullyQualifiedErrorId : RuntimeException
Then please run the command in the 'Exchange Management Shell'
Set-ExecutionPolicy Unrestricted
After the plugin is installed successfully, turn it off:
Set-ExecutionPolicy Restricted
Issue of access denied
If you got this message:
Could not load file or assembly 'file:///C:\TransportAgents\PI.PiNuxeoAgent.dll' or one of its dependencies. Access is denied. + CategoryInfo : InvalidArgument: (:) [Install-TransportAgent], FileLoadException + FullyQualifiedErrorId : 3A3ADC09,Microsoft.Exchange.Management.AgentTasks.InstallTransportAgent Transport agent "PiNuxeoAgent" isn't found. Parameter name: Identity + CategoryInfo : InvalidArgument: (:) [Enable-TransportAgent], ArgumentException + FullyQualifiedErrorId : 78732C6B,Microsoft.Exchange.Management.AgentTasks.EnableTransportAgent
This may be caused by two reasons:
1) Check if the files in C:\TransportAgents are green, if so, we need to open "Properties" dialog, and then select "Advanced..." and then uncheck "Encrypt contents to secure data". Do the same for all green files.
2) We need to restart the IIS using iisreset command. For more information please see the references.
References:
Agent Logs
If the agent is running, turn on the debug flag in the pinuxeoagentconfig.xml file and restart transport service
<root>
<level value="All"/>
<appender-ref ref="RollingFileAppender"/>
</root>
Set the level flag to all as above. This turns on all levels of logging.
Agent logs can be found at the same location as the dll. If the debug level is on, it adds detailed trace info to the file which can be used in troubleshooting.
Agent Functioning
In case of error or an exception, details along with where the exception occurred can be found in the log file.
Message Deliver
Each message has the following entries at the start and end and a few in between. If the two entries are present, the message is correctly picked up and processed with the agent and any issue with the message delivery has occurred after the agent processed.
ProcessMessage(): Start <Message subject>
ProcessMessage(): End<Message subject>
Exchange Logs/tools
If there was an issue with message delivery and the agent logs indicated successful processing by the agent, certain exchange tools and utilities can be used to further diagnose the issue. Some of them are listed here, but an exchange administration is needed to run and analyze these issues. This is beyond the scope of this document.
- Queue Viewer
- Message tracking logs
- Pipeline tracing logs.
http://technet.microsoft.com/en-us/library/bb125018(v=exchg.150).aspx