Gemini Community Support Site

This Gemini community support site can be used to find solutions to product issues. You can log in using Open Id, Google Profile and even Facebook. Feel free to ask a question or browse FAQs and documentation. Product tour videos are also available along with how-to videos demonstrating key Gemini capabilities.




Scheduler MailboxProcessor Setup Issues

web-app

Hi,

We appear to be having difficulties configuring the MailboxProcessor plugin.
We use Exchange server for our emails and apparently this poses a problem because we don't have a POP server. (Forgive me if I don't use the terminology correctly)
Our external emails come through our ISP to the Exchange server.
Can it be true that at no point do our emails go through any POP protocol?
If so, how do we setup the MailboxProcessor to work?

Please explain as simply as possible because I have to first understand it and then try and pass it on to the person doing the install.

Its taken over 3 weeks to get Scheduler installed just so we can use the MailboxProcessor and then when it came time to configure the MP this issue comes up! Surely it can't be this hard? I am starting to lose my patience!

RDunlop
· 1
RDunlop
Replies (14)
helpful
0
not helpful

You just need to ask your exhange server admin to enable POP.


Saar Cohen
· 5000
Saar Cohen
helpful
0
not helpful

Could someone who has installed this perhaps give me an estimate of how much time it should take to install the Scheduler, turn on POP and enable and configure this code please?

 

 


RDunlop
· 1
RDunlop
helpful
0
not helpful

1 day is more than enough.


Saar Cohen
· 5000
Saar Cohen
helpful
0
not helpful

Thanks for the reply.

Well, we still can't seem to get the Mailbox Processor working. I'm told that POP is enabled and working and I've now been supplied the config file and error log by the SA so hopefully someone can help!

Here is the relevant bit from the config file:

<MailboxProcessor
            Name="geminipop3"
            POPServer="server.domain.co.nz" (I edited it for privacy)
            POPServerPort="110"
            AuthenticationMethod="AUTO"
            UseSSL="false"
            POPMailbox="helpdesk@domain.co.nz" (edited)
            POPUsername="helpdesk@domain.co.nz" (edited)
            POPPassword="*" (edited)
            DeleteMessages="false"
            SubjectLikeRegExp="Thank you. Your issue has been received and the Customer Support Team should contact you within 24 hours."
            SubjectNOTLikeRegExp=""
            ProjectID="4"
            UserID="29"
            ComponentID="1"
            IssueType="1"
            IssuePriority="1"
            IssueSeverity="1"
            Visiblity="1"
            VisiblityMemberType="2"
            RiskLevel="1"
            DebugFile = "c:\Program Files\CounterSoft\GeminiPOP3log.txt"
            DebugMode = "true"
            />

Here is the error log from after starting the scheduler service (it is running as the Local System account)

Event Type: Failure Audit
Event Source: Security
Event Category: Logon/Logoff
Event ID: 531
Date:  12/11/2008
Time:  3:49:32 p.m.
User:  NT AUTHORITY\SYSTEM
Computer: COMPNAME (edited)
Description:
Logon Failure:
  Reason:  Account currently disabled
  User Name: 
  Domain:  
  Logon Type: 3
  Logon Process: Authz  
  Authentication Package: Kerberos
  Workstation Name: COMPNAME (edited)
  Caller User Name: COMPNAME$ (edited)
  Caller Domain: DOMAIN  (edited)
  Caller Logon ID: (0x0,0x3E7)
  Caller Process ID: 908
  Transited Services: -
  Source Network Address: -
  Source Port: -

COMPNAME application log:

Event Type: Error
Event Source: Mailbox Processor
Event Category: None
Event ID: 0
Date:  12/11/2008
Time:  4:00:15 p.m.
User:  N/A
Computer: COMPNAME (edited)
Description:
MailBee.NET - Socket connection was aborted by remote host. -    at b5.a(df A0)
   at b5.ah()
   at d6.a(String A
0, Int32 A1, Boolean A2, EndPoint A3)
   at d6.y()
   at bu.a5()
   at cf.a(Boolean A
0, String A1, Int32 A2, Boolean A_3)
   at MailBee.Pop3Mail.Pop3.Connect(String serverName, Int32 port, Boolean pipelining)
   at CounterSoft.Gemini.Scheduler.MailboxProcessor.MailboxProcess.CheckEmails()
   at CounterSoft.Gemini.Scheduler.MailboxProcessor.MailboxProcess.Process()

Can anyone help please?

Thanks in advance!


RDunlop
· 1
RDunlop
helpful
0
not helpful

You seem to have a few issues:

  1. The SubjetLikeRegExp should be clear. It is not used to send an email back. It is to check if the subject complies to the regular expression, if it does then the email will be logged in Gemini
  2. Socket connection was aborted by remote host, this is usually due to not having permissions to connect to the SMTP server or that the port is wrong.
  3. Login failure - account disabled. I am not sure if this is for the scheduler service, but worth checking.


Saar Cohen
· 5000
Saar Cohen
helpful
0
not helpful

Thanks, I've forwarded that to the relevant people here, will let you know if they have any further issues/questions.

Thanks for all the prompt helpful posts btw, this is a great support forum!


RDunlop
· 1
RDunlop
helpful
0
not helpful

Ok, we've apparently updated the config file and now have a new error message.

Config file:

<MailboxProcessor
            Name="geminipop3"
            POPServer="server.domain.co.nz"
            POPServerPort="110" 
            AuthenticationMethod="AUTO"
            UseSSL="false" 
            POPMailbox="helpdesk@domain.co.nz" 
            POPUsername="helpdesk@domain.co.nz"
            POPPassword="**
            DeleteMessages="false" 
            SubjectLikeRegExp=""
            SubjectNOTLikeRegExp=""
            ProjectID="4"
            UserID="29" 
            ComponentID="1" 
            IssueType="1" 
            IssuePriority="1" 
            IssueSeverity="1" 
            Visiblity="1"
            VisiblityMemberType="2" 
            RiskLevel="1" 
            DebugFile = "c:\Program Files\CounterSoft\GeminiPOP3log.txt"
            DebugMode = "true"
            />

Application log error after updating Gemini scheduler config file:

1
Event Type:    Error
Event Source:    Mailbox Processor
Event Category:    None
Event ID:    0
Date:        13/11/2008
Time:        3:38:34 p.m.
User:        N/A
Computer:    COMPNAME
Description:
System.Web.Services - System.Web.Services.Protocols.SoapException:
Server was unable to process request. ---> NHibernate.ADOException: could not insert: [CounterSoft.Gemini.Commons.IssueComponentEN]
[SQL: INSERT INTO geminiissuecomponents (issueid, componentid) VALUES (?, ?)] ---> System.Data.SqlClient.SqlException:
INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'gemini
issuecomponentscomponentidfk'.

The conflict occurred in database 'Gemini', table 'geminicomponents', column 'componentid'.

The statement has been terminated.

   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream,
BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get
MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method,
DbAsyncResult result)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
   at NHibernate.Impl.BatcherImpl.ExecuteReader(IDbCommand cmd)
   at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object[] fields, Boolean[] notNull, SqlCommandInfo sql, Object obj,
ISessionImplementor session)
   --- End of inner exception stack trace ---
   at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object[] fields, Boolean[] notNull, SqlCommandInfo sql, Object obj,
ISessionImplementor session)
   at NHibernate.Persister.Entity.AbstractEntityPersister.Insert(Object[] fields, Object obj, ISessionImplementor session)
   at NHibernate.Impl.ScheduledIdentityInsertion.Execute()
   at NHibernate.Impl.SessionImpl.Execute(IExecutable executable)
   at NHibernate.Impl.SessionImpl.DoSave(Object theObj, EntityKey key, IEntityPersister persister, Boolean replicate, Boolean useIdentityColumn,
CascadingAction cascadeAction, Object anything)
   at NHibernate.Impl.SessionImpl.DoSave(Object obj, Object id, IEntityPersister persister, Boolean useIdentityColumn,
CascadingAction cascadeAction, Object anything)
   at NHibernate.Impl.SessionImpl.SaveWithGeneratedIdentifier(Object obj, CascadingAction action, Object anything)
   at NHibernate.Impl.SessionImpl.Save(Object obj)
   at CounterSoft.Gemini.DataProvider.x73a34067f4cd229a.xf606eb5e1032d933(BaseEN x6fcb9c1c812a0558, Boolean x8b15d0e18e6888d9, ISession x45b53be31e53d68b)
   at CounterSoft.Gemini.DataProvider.x73a34067f4cd229a.xf606eb5e1032d933(BaseEN x6fcb9c1c812a0558, Boolean x8b15d0e18e6888d9)
   at CounterSoft.Gemini.DataProvider.x73a34067f4cd229a.xf606eb5e1032d933(BaseEN x6fcb9c1c812a0558)
   at CounterSoft.Gemini.DataProvider.xc0186e148e957052.x4fe82a9dba6dfee0(IssueComponentEN xdd087727a25c8933)
   at CounterSoft.Gemini.Business.x95da312ae9372c2e.x638f484991286ca1(IssueComponentEN xdd087727a25c8933)
   at CounterSoft.Gemini.Business.x95da312ae9372c2e.x3b4f005d8d7ca70c(Int32 x663e02d322c995c9, IssueComponentEN[] x8b5f7395e70920d3)
   at CounterSoft.Gemini.Business.x95da312ae9372c2e.x0dd7228622330700(IssueEN x22c77d60925997e9)
   at Gemini.IssuesWS.CreateIssue(IssueEN issue)
   --- End of inner exception stack trace --- -    at System.Web.Services.Protocols.SoapHttpClientProtocol.
ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at IssueServices.CreateIssue(IssueEN issue)
   at CounterSoft.Gemini.Scheduler.MailboxProcessor.MailboxProcess.CheckEmails()

----------------------------------------------------

So something is conflicting with the column 'componentid' in table 'gemini_components'

I also have a pop3 log if that is relevant?

Something else I've noticed is that the test messages which had been sent in the past to the email address "helpdesk@domain.co.nz" have been run by the MailboxProcessor now, but have generated over 2700 issues, which are all duplicates of each other. While they are in the right project, none of them are assigned to the correct user either. Also I noticed when viewing one of these issues, they are breaking the Gemini colour scheme, all the links are in default blue/purple instead of the standard Gemini greens.

Any ideas on why these things have happened and how to fix them please?
Also, any ideas on how to quickly batch delete, as the batch update feature doesn't allow batch deletes, as it will take me years to delete these all one by one!


RDunlop
· 1
RDunlop
helpful
0
not helpful

Make sure that the componentID setting in the config file is a valid id of a component for your project.

As for deleting the issues, you will have to do this via sql, I suggest you create a table with all the issue ids to delete (say issuestodelete) then run the following SQL:

DELETE FROM geminiissuehistory where issueid in (SELECT issueid FROM issuestodelete)

DELETE FROM geminiissuecomponents where issueid in (SELECT issueid FROM issuestodelete)

DELETE FROM geminiissueattachments where issueid in (SELECT issueid FROM issuestodelete)

DELETE FROM geminiissuecomments where issueid in (SELECT issueid FROM issuestodelete)

DELETE FROM geminiissuelinks where issueid in (SELECT issueid FROM issuestodelete)

DELETE FROM geminiissuelinks where otherissueid in (SELECT issueid FROM issuestodelete)

DELETE FROM geminiissueresources where issueid in (SELECT issueid FROM issuestodelete)

DELETE FROM geminiissuevotes where issueid in (SELECT issueid FROM issuestodelete)

DELETE FROM geminiwatchissues where issueid in (SELECT issueid FROM issuestodelete)

DELETE FROM geminiissuealerts where issueid in (SELECT issueid FROM issuestodelete)

DELETE FROM gemini_issues where issueid in (SELECT issueid FROM issuestodelete)


Saar Cohen
· 5000
Saar Cohen
helpful
0
not helpful

Awesome thanks heaps!
I will check the component id and that query definately looks like it will help heaps!


RDunlop
· 1
RDunlop
helpful
0
not helpful

While I'm tidying up the database, regarding the 2k+ issues, any ideas on why they have logged multiple times from one email and why all the links on them are blue/purple instead of green?
I'm keen for this not to happen again so I only have to tidy the database up once if possible!

Just had a quick look and they are still being generated from old emails sent to the email address.
There are over 2800 now, last one generated just 5 minutes ago.
How can I stop this? Our IT person is away and I shudder to think how many issues will be there by the time they get back!

Is it to do with the line:
DeleteMessages="false" 
from the config file?
Will setting this to true fix it?

Edit: I have changed the DeleteMessages to true and it has stopped the multiple logging issue, however it permanently deletes the message, rather than just moving it to Deleted Items, so we have no record of the message being received. This is unsuitable as we have no backup of the message if something went wrong! Is it possible to MoveMessages rather than delete? If they could be moved rather than deleted then it would stop multiple logging but retain a record of the message too.
I tried to do this with a Rule in Outlook, however Outlook can only move all messages straightaway, not once the Scheduler has dealt with them.

Also, I notice the "UserID" field relates to the Reported By field, rather than the Assigned Resource field.
Assigned Resource is being left blank. This is less than ideal as we would like all incoming issues to be assigned to someone so they get notified!
These issues would potentially be our most urgent issues so its crucial someone receives them asap, otherwise the whole MailboxProcessor idea isn't worth using for us!
Why is there no field to set who the issue is being assigned to?


RDunlop
· 1
RDunlop
helpful
0
not helpful

The reason why this is now working is because you have set a proper component id.

If you set delete messages to false it should work as expected now. The promblem was that you have had emails that were not processed fully becuase of the exception so the mailbox kept trying to process them.

At the moment you can not set the assignment of an issue. However, you could customise the code to do this quite easily. The source is downloadable for commerical license holder via the client portal.

As for the issue with the links in the issue, can you send a screen capture of both so we can understand? send it to support at countersoft dot com with a reference to this thread.


Saar Cohen
· 5000
Saar Cohen
helpful
0
not helpful

Thanks very much, we will set it back to false now!

Good to know that we can customise the code, however I can't imagine when our dev team will find the time! Is it perhaps planned for future releases or could I suggest it in your Gemini system as an enhancement?

I have sent the email with the screenshots as requested.

:)


RDunlop
· 1
RDunlop
helpful
0
not helpful

Yes, feel free to add it to our list: http://gemini.countersoft.com

 


Saar Cohen
· 5000
Saar Cohen
helpful
0
not helpful

Thanks for the query, it worked great, except we found we had to add a line:

DELETE FROM gemini_affectedversions where issueid in (SELECT issueid FROM issuestodelete)


RDunlop
· 1
RDunlop