Clarity

  • 1.  Can we sent Meeting Invite from Clarity?

    Posted Sep 25, 2014 09:43 AM

    Hi All,

     

    Is it possible to sent meeting invite from Clarity?

     

    Regards,

    Teena Antony



  • 2.  Re: Can we sent Meeting Invite from Clarity?

    Posted Sep 25, 2014 12:40 PM

    My guess is that you would need to send an iCalendar formated email (via Gel).  iCalendar looks something like this:

     

    BEGIN:VEVENT
    DTSTAMP:20140904T120000Z
    UID:uid1@host.com
    ORGANIZER:MAILTO:jsmith@host.com
    DTSTART:20140918T143000Z
    DTEND:20140920T220000Z
    STATUS:CONFIRMED
    CATEGORIES:CONFERENCE
    SUMMARY:Project Review Meeting
    DESCRIPTION:Project Review Meeting\nLocation: Conference Room\nBuilding One
    END:VEVENT
    

     

    You will need to add message headers to the email to identify that the email message is an iCalendar formated email.

     

    The headers look like this:

     

    MimeMessage message = new MimeMessage(session);
    message.addHeaderLine("method=REQUEST");
    message.addHeaderLine("charset=UTF-8");
    message.addHeaderLine("component=VEVENT");
    


    Which most likely you will need a Gel Script usinghttp://docs.oracle.com/javaee/5/api/javax/mail/package-summary.htmljavax.mail package to get access to the message header.


    V/r,

    Gene





  • 3.  Re: Can we sent Meeting Invite from Clarity?

    Posted Sep 25, 2014 01:18 PM

    Can we have this section in the Gel:email tag?



  • 4.  Re: Can we sent Meeting Invite from Clarity?

    Posted Sep 26, 2014 12:24 AM

    I don't believe that gel:email gives you access to the mail headers.  I converted a Java iCalendar example into Gel that might work (I didn't test it but it should give you a starting point to see if it works).

    <gel:script
        xmlns:core="jelly:core"
        xmlns:util="jelly:util"
        xmlns:x="jelly:xml"
        xmlns:gel="jelly:com.niku.union.gel.GELTagLibrary"
        xmlns:soap="jelly:com.niku.union.gel.SOAPTagLibrary"
    >
    
        <!-- Create Properties Object --> 
        <core:new className="java.util.Properties" var="propertiesClass"/>
    
        <!-- Place our smtphost and port in our properties -- might want to get these from the properties.xml file -->
        <core:invoke method="put" on="${propertiesClass}">
            <core:arg type="java.lang.Object" value="mail.smtp.host"/>
            <core:arg type="java.lang.Object" value="smtp.gmail.com"/>
        </core:invoke>
        <core:invoke method="put" on="${propertiesClass}">
            <core:arg type="java.lang.Object" value="mail.smtp.port"/>
            <core:arg type="java.lang.Object" value="587"/>
        </core:invoke>
    
        <!-- Create mail session Object -->
        <core:invokeStatic var="sessionClass" className="javax.mail.Session" method="getInstance">
            <core:arg type="java.util.Properties" value="${propertiesClass}"/>
        </core:invokeStatic>
    
        <!-- Create our MimeMessage Object -->
        <core:new var="mimeMessage" className="javax.mail.internet.MimeMessage">
            <core:arg type="javax.mail.Session" value="${sessionClass}"/>
        </core:new>
    
        <!-- Set our headers for this message to iCal VENENT -->
        <core:expr value="${mimeMessage.addHeaderLine('method=REQUEST')}" />
        <core:expr value="${mimeMessage.addHeaderLine('charset=UTF-8')}" />
        <core:expr value="${mimeMessage.addHeaderLine('component=VEVENT')}" />
    
        <!-- Build a From Address -->
        <core:new var="fromAddress" className="javax.mail.internet.InternetAddress">
            <core:arg type="java.lang.String" value="someOneWhoCares@example.com"/>
        </core:new>
    
        <!-- Build a To Address -->
        <core:getStatic var="recipientType" className="javax.mail.Message.RecipientType" field="TO"/>
        <core:new var="toAddress" className="javax.mail.internet.InternetAddress">
            <core:arg type="java.lang.String" value="someOneWhoWantsToKnow@example.com"/>
        </core:new>
    
        <!-- Set our message From / To / Subject values -->
        <core:invoke method="setFrom" on="${mimeMessage}">
            <core:arg type="javax.mail.internet.InternetAddress" value="${fromAddress}"/>
        </core:invoke>
        <core:invoke method="addRecipient" on="${mimeMessage}">
            <core:arg type="javax.mail.Message.RecipientType" value="${recipientType}"/>
            <core:arg type="javax.mail.internet.InternetAddress" value="${toAddress}"/>
        </core:invoke>
        <core:expr value="${mimeMessage.setSubject('Outlook Meeting Request Using Gel')}" />;
    
        <!-- Build our iCalendar formated message in a string buffer -- this might need to be rework if this isn't the latest format for Outlook -->
        <core:new var="stringBuffer" className="java.lang.StringBuffer" />
        <core:expr value="${stringBuffer.append('BEGIN:VCALENDAR\n')}" />
        <core:expr value="${stringBuffer.append('PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN\n')}" />
        <core:expr value="${stringBuffer.append('VERSION:2.0\n')}" />
        <core:expr value="${stringBuffer.append('METHOD:REQUEST\n')}" />
        <core:expr value="${stringBuffer.append('BEGIN:VEVENT\n')}" />
        <core:expr value="${stringBuffer.append('ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:SomeOneRsvp@example.com\n')}" />
        <core:expr value="${stringBuffer.append('ORGANIZER:MAILTO:MailTo@example.com\n')}" />
        <core:expr value="${stringBuffer.append('DTSTART:20141208T053000Z\n')}" />
        <core:expr value="${stringBuffer.append('DTEND:20141208T060000Z\n')}" />
        <core:expr value="${stringBuffer.append('LOCATION:Conference room\n')}" />
        <core:expr value="${stringBuffer.append('TRANSP:OPAQUE\n')}" />
        <core:expr value="${stringBuffer.append('SEQUENCE:0\n')}" />
        <core:expr value="${stringBuffer.append('UID:040000008200E00074C5B7101A82E00800000000002FF466CE3AC5010000000000000000100\n')}" />
        <core:expr value="${stringBuffer.append(' 000004377FE5C37984842BF9440448399EB02\n')}" />
        <core:expr value="${stringBuffer.append('DTSTAMP:20051206T120102Z\n')}" />
        <core:expr value="${stringBuffer.append('CATEGORIES:Meeting\n')}" />
        <core:expr value="${stringBuffer.append('DESCRIPTION:This the description of the meeting.\n\n')}" />
        <core:expr value="${stringBuffer.append('SUMMARY:Test meeting request\n')}" />
        <core:expr value="${stringBuffer.append('PRIORITY:5\n')}" />
        <core:expr value="${stringBuffer.append('CLASS:PUBLIC\n')}" />
        <core:expr value="${stringBuffer.append('BEGIN:VALARM\n')}" />
        <core:expr value="${stringBuffer.append('TRIGGER:PT1440M\n')}" />
        <core:expr value="${stringBuffer.append('ACTION:DISPLAY\n')}" />
        <core:expr value="${stringBuffer.append('DESCRIPTION:Reminder\n')}" />
        <core:expr value="${stringBuffer.append('END:VALARM\n')}" />
        <core:expr value="${stringBuffer.append('END:VEVENT\n')}" />
        <core:expr value="${stringBuffer.append('END:VCALENDAR')}" />
    
        <!-- Set up our message for our meeting request -->
        <core:new var="byteArrayDataSource" className="javax.mail.util.ByteArrayDataSource">
            <core:arg type="java.lang.String" value="${stringBuffer.toString()}"/>
        </core:new>
        <core:new var="dataHandler" className="javax.activation.DataHandler" />
        <core:new var="messageBodyPart" className="javax.mail.internet.MimeBodyPart" />
        <core:expr value="${messageBodyPart.setHeader('Content-Class', 'urn:content-classes:calendarmessage')}" />
        <core:expr value="${messageBodyPart.setHeader('Content-ID','calendar_message')}" />
        <core:invoke method="setDataHandler" on="${messageBodyPart}">
            <core:arg type="javax.mail.util.ByteArrayDataSource" value="${byteArrayDataSource}"/>
            <core:arg type="java.lang.String" value="text/calendar"/>
        </core:invoke>
    
        <!-- Setup the mine multipart message -->
        <core:new var="mimeMultipart" className="javax.mail.internet.MimeMultipart" /> 
        <core:invoke method="addBodyPart" on="${mimeMultipart}">
            <core:arg type="javax.mail.internet.MimeBodyPart" value="${messageBodyPart}"/>
        </core:invoke>
        <core:invoke method="setContent" on="${mimeMessage}">
            <core:arg type="javax.mail.internet.MimeMultipart" value="${mimeMultipart}"/>
        </core:invoke>
    
        <!-- Send our invite -->
        <core:invokeStatic var="sessionClass" className="javax.mail.Transport" method="send">
            <core:arg type="javax.mail.internet.MimeMessage"  value="${mimeMessage}"/>
        </core:invokeStatic>
        <core:expr value="" />
    
    </gel:script>
    

     

    Again -- Not Tested but it should point you down a path to sending meeting notices.

     

    V/r,

    Gene



  • 5.  Re: Can we sent Meeting Invite from Clarity?

    Posted Sep 26, 2014 08:18 AM

    Thanks a lot. But I will test and let you know.

     

    Regards,

    Teena Antony



  • 6.  Re: Can we sent Meeting Invite from Clarity?

    Posted Sep 26, 2014 08:53 AM

    Hi Gene,

     

    Does that mean that we should have smtp set up in CSA. We are on 'On Demand System' and SMTP is not enabled in our system.

     

    Also, I am getting this error when I am executing the gel script after making some modification.

     

    <core:getStatic> Could not access javax.mail.Message.RecipientType.recipientType. Original exception message: javax.mail.Message.RecipientType

     

    Regards,

    Teena Antony



  • 7.  Re: Can we sent Meeting Invite from Clarity?

    Posted Sep 26, 2014 04:09 PM

    So it was a little more difficult to do this (Gel has problems with nested static classes!). OK, here is how it works.

    Using standard java mail, we create a mime multipart message.  The first part of the message is the email text you wish to set to the attendees.  The second part is the vcalendar file holding the meeting information.

     

    I have the following “After Work Status Meeting “ meeting schedule for 4PM Pacific Standard Time. You would need to replace elements for each meeting sent out and deal with timezone issues but this will give you the idea on how to format a vcs file.

     

    BEGIN:VCALENDAR
    PRODID:-//Microsoft Corporation//Outlook 14.0 MIMEDIR//EN
    VERSION:2.0
    METHOD:PUBLISH
    X-MS-OLK-FORCEINSPECTOROPEN:TRUE
    BEGIN:VTIMEZONE
    TZID:Pacific Standard Time
    BEGIN:STANDARD
    DTSTART:16011104T020000
    RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
    TZOFFSETFROM:-0700
    TZOFFSETTO:-0800
    END:STANDARD
    BEGIN:DAYLIGHT
    DTSTART:16010311T020000
    RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
    TZOFFSETFROM:-0800
    TZOFFSETTO:-0700
    END:DAYLIGHT
    END:VTIMEZONE
    BEGIN:VEVENT
    CLASS:PUBLIC
    CREATED:20140926T192104Z
    DTEND;TZID="Pacific Standard Time":20140926T160000
    DTSTAMP:20140926T192104Z
    DTSTART;TZID="Pacific Standard Time":20140926T150000
    LAST-MODIFIED:20140926T192104Z
    LOCATION:Friendly Watering Hole
    PRIORITY:5
    SEQUENCE:0
    SUMMARY;LANGUAGE=en-us:After Work Status Meeting
    TRANSP:OPAQUE
    UID:040000008200E00074C5B7101A82E00800000000609CB31B84D9CF01000000000000000
                    01000000017C3704930350F43B81ED6789C58B791
    X-MICROSOFT-CDO-BUSYSTATUS:BUSY
    X-MICROSOFT-CDO-IMPORTANCE:1
    X-MICROSOFT-DISALLOW-COUNTER:FALSE
    X-MS-OLK-AUTOFILLLOCATION:FALSE
    X-MS-OLK-CONFTYPE:0
    BEGIN:VALARM
    

     

    Now for a working script. For getting the running clarity email properties, see this post: https://communities.ca.com/thread/101857694 (Great post and got me passed the nested static class issue that you also ran into).

    Our OnDemand development environment doesn’t have email, so I just pointed the script to an external SMTP server (SSL and Authentication requirements).  This script also has mail debugging turn on so it tosses a lot of mail connection information to the console.

     

    <gel:script
        xmlns:core="jelly:core"
        xmlns:util="jelly:util"
        xmlns:x="jelly:xml"
        xmlns:gel="jelly:com.niku.union.gel.GELTagLibrary"
        xmlns:soap="jelly:com.niku.union.gel.SOAPTagLibrary"
    >
    
        <!-- Set up our email server variables   You should abe able to get them off the properties file -->
        <gel:parameter var='mailHost' default='mail.server.com'/>
        <gel:parameter var='mailPort' default='465'/>
        <gel:parameter var='mailUser' default='user'/>
        <gel:parameter var='mailPasswod' default='password/>
        <gel:parameter var='mailFromAddress' default='user@server.com'/>
        <gel:parameter var='mailToAddress' default='user@server.com'/>
    
        <!-- Place our mail settings in our properties object -->
        <core:new className='java.util.Properties' var='propertiesClass'/>
        <core:set value='${propertiesClass.put("mail.transport.protocol", "smtp")}' var="void" />
        <core:set value='${propertiesClass.put("mail.smtp.socketFactory.port","465")}' var="void" />
        <core:set value='${propertiesClass.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory")}' var="void" />
        <core:set value='${propertiesClass.put("mail.smtp.host", mailHost)}' var="void" />
        <core:set value='${propertiesClass.put("mail.smtp.port", mailPort)}' var="void" />
        <core:set value='${propertiesClass.put("mail.smtp.auth", "true")}' var="void" />
        <core:set value='${propertiesClass.put("mail.user", mailUser)}' var="void" />
        <core:set value='${propertiesClass.put("mail.smtp.debug", "true")}' var='void' />
    
        <!-- Create session Object -->
        <core:invokeStatic var='sessionClass' className='javax.mail.Session' method='getInstance'>
            <core:arg type='java.util.Properties' value='${propertiesClass}'/>
        </core:invokeStatic>
    
        <!-- Set up our PasswordAuthentication to use with our mail session -->
        <core:new var='passwordAuthentication' className='javax.mail.PasswordAuthentication'>
            <core:arg type='java.lang.String' value='${mailUser}'/>
            <core:arg type='java.lang.String' value='${mailPasswod}'/>
        </core:new>
        <core:new var='uRLName' className='javax.mail.URLName'>
            <core:arg type='java.lang.String' value='smtp'/>
            <core:arg type='java.lang.String' value='${mailHost}'/>
            <core:arg type='int' value='-1'/>
            <core:arg type='java.lang.String' value=''/>
            <core:arg type='java.lang.String' value='${mailUser}'/>
            <core:arg type='java.lang.String' value='${mailPasswod}'/>
        </core:new>
    
        <core:invoke method='setPasswordAuthentication' on='${sessionClass}'>
            <core:arg type='javax.mail.URLName' value='${uRLName}'/>
            <core:arg type='javax.mail.PasswordAuthentication' value='${passwordAuthentication}'/>
        </core:invoke>
        <core:set value='${sessionClass.setDebug(true)}' var='void' />
    
        <!-- Create our MimeMessage Object -->
        <core:new var='mimeMessage' className='javax.mail.internet.MimeMessage'>
            <core:arg type='javax.mail.Session' value='${sessionClass}'/>
        </core:new>
    
        <!-- Set our headers for this message to VENENT -->
        <core:expr value='${mimeMessage.addHeaderLine("method=REQUEST")}' />
        <core:expr value='${mimeMessage.addHeaderLine("charset=UTF-8")}' />
        <core:expr value='${mimeMessage.addHeaderLine("component=VEVENT")}' />
    
        <!-- Build a From Address -->
        <core:new var='fromAddress' className='javax.mail.internet.InternetAddress'>
            <core:arg type='java.lang.String' value='${mailFromAddress}'/>
        </core:new>
        <core:new var='toAddress' className='javax.mail.internet.InternetAddress'>
            <core:arg type='java.lang.String' value='${mailToAddress}'/>
        </core:new>
    
        <!-- Set our message From / To / Subject values -->
        <core:invokeStatic className='java.lang.Class' method='forName' var='recipientType'>
            <core:arg type='java.lang.String' value='javax.mail.Message$RecipientType' />
        </core:invokeStatic>
        <core:set value='${recipientType.getField("TO")}' var='recipientTypeTO' />
        <core:set value='${recipientTypeTO.TO}' var='recipientTypeTO' />
        <core:set value='${recipientType.getField("CC")}' var='recipientTypeCC' />
        <core:set value='${recipientTypeCC.CC}' var='recipientTypeCC' />
        <core:set value='${recipientType.getField("BCC")}' var='recipientTypeBCC' />
        <core:set value='${recipientTypeBCC.BCC}' var='recipientTypeBCC' />
        <core:set value='${mimeMessage.setFrom(fromAddress)}' var='void' />
        <core:set value='${mimeMessage.setRecipient(recipientTypeTO, toAddress)}' var='void' />
        <core:expr value='${mimeMessage.setSubject("Outlook Meeting Request Using Gel")}' />;
    
        <!-- Build our ugly iCalendar in a string buffer -->
        <core:new var='stringBuffer' className='java.lang.StringBuffer' />
        <core:set var='newLine' value='${context.getVariable("line.separator")}' />
        <core:mute>
            <core:expr value='${stringBuffer.append("BEGIN:VCALENDAR"+newLine)}' />
            <core:expr value='${stringBuffer.append("PRODID:-//Microsoft Corporation//Outlook 14.0 MIMEDIR//EN"+newLine)}' />
            <core:expr value='${stringBuffer.append("VERSION:2.0"+newLine)}' />
            <core:expr value='${stringBuffer.append("METHOD:PUBLISH"+newLine)}' />
            <core:expr value='${stringBuffer.append("X-MS-OLK-FORCEINSPECTOROPEN:TRUE"+newLine)}' />
            <core:expr value='${stringBuffer.append("BEGIN:VTIMEZONE"+newLine)}' />
            <core:expr value='${stringBuffer.append("TZID:Pacific Standard Time"+newLine)}' />
            <core:expr value='${stringBuffer.append("BEGIN:STANDARD"+newLine)}' />
            <core:expr value='${stringBuffer.append("DTSTART:16011104T020000"+newLine)}' />
            <core:expr value='${stringBuffer.append("RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11"+newLine)}' />
            <core:expr value='${stringBuffer.append("TZOFFSETFROM:-0700"+newLine)}' />
            <core:expr value='${stringBuffer.append("TZOFFSETTO:-0800"+newLine)}' />
            <core:expr value='${stringBuffer.append("END:STANDARD"+newLine)}' />
            <core:expr value='${stringBuffer.append("BEGIN:DAYLIGHT"+newLine)}' />
            <core:expr value='${stringBuffer.append("DTSTART:16010311T020000"+newLine)}' />
            <core:expr value='${stringBuffer.append("RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3"+newLine)}' />
            <core:expr value='${stringBuffer.append("TZOFFSETFROM:-0800"+newLine)}' />
            <core:expr value='${stringBuffer.append("TZOFFSETTO:-0700"+newLine)}' />
            <core:expr value='${stringBuffer.append("END:DAYLIGHT"+newLine)}' />
            <core:expr value='${stringBuffer.append("END:VTIMEZONE"+newLine)}' />
            <core:expr value='${stringBuffer.append("BEGIN:VEVENT"+newLine)}' />
            <core:expr value='${stringBuffer.append("CLASS:PUBLIC"+newLine)}' />
            <core:expr value='${stringBuffer.append("CREATED:20140926T192104Z"+newLine)}' />
            <core:expr value='${stringBuffer.append("DTEND;TZID=Pacific Standard Time:20140926T160000"+newLine)}' />
            <core:expr value='${stringBuffer.append("DTSTAMP:20140926T192104Z"+newLine)}' />
            <core:expr value='${stringBuffer.append("DTSTART;TZID=Pacific Standard Time:20140926T150000"+newLine)}' />
            <core:expr value='${stringBuffer.append("LAST-MODIFIED:20140926T192104Z"+newLine)}' />
            <core:expr value='${stringBuffer.append("LOCATION:Friendly Watering Hole"+newLine)}' />
            <core:expr value='${stringBuffer.append("PRIORITY:5"+newLine)}' />
            <core:expr value='${stringBuffer.append("SEQUENCE:0"+newLine)}' />
            <core:expr value='${stringBuffer.append("SUMMARY;LANGUAGE=en-us:After Work Status Meeting"+newLine)}' />
            <core:expr value='${stringBuffer.append("TRANSP:OPAQUE"+newLine)}' />
            <core:expr value='${stringBuffer.append("UID:040000008200E00074C5B7101A82E00800000000609CB31B84D9CF01000000000000000"+newLine)}' />
            <core:expr value='${stringBuffer.append("    01000000017C3704930350F43B81ED6789C58B791"+newLine)}' />
            <core:expr value='${stringBuffer.append("X-MICROSOFT-CDO-BUSYSTATUS:BUSY"+newLine)}' />
            <core:expr value='${stringBuffer.append("X-MICROSOFT-CDO-IMPORTANCE:1"+newLine)}' />
            <core:expr value='${stringBuffer.append("X-MICROSOFT-DISALLOW-COUNTER:FALSE"+newLine)}' />
            <core:expr value='${stringBuffer.append("X-MS-OLK-AUTOFILLLOCATION:FALSE"+newLine)}' />
            <core:expr value='${stringBuffer.append("X-MS-OLK-CONFTYPE:0"+newLine)}' />
            <core:expr value='${stringBuffer.append("BEGIN:VALARM"+newLine)}' />
            <core:expr value='${stringBuffer.append("TRIGGER:-PT15M"+newLine)}' />
            <core:expr value='${stringBuffer.append("ACTION:DISPLAY"+newLine)}' />
            <core:expr value='${stringBuffer.append("DESCRIPTION:Reminder"+newLine)}' />
            <core:expr value='${stringBuffer.append("END:VALARM"+newLine)}' />
            <core:expr value='${stringBuffer.append("END:VEVENT"+newLine)}' />
            <core:expr value='${stringBuffer.append("END:VCALENDAR"+newLine)}' />
        </core:mute>
        <gel:log>${stringBuffer.toString()}</gel:log>
    
        <!-- Build up our MimeMultipart message -->
        <core:new var='mimeMultipart' className='javax.mail.internet.MimeMultipart' /> 
        <core:set value='${mimeMessage.setContent(mimeMultipart)}' var='void' />
    
        <!-- Message about the meeting -->
        <core:new var='messageBodyPartText' className='javax.mail.internet.MimeBodyPart' />
        <core:set value='${messageBodyPartText.setText("Please see attached meeting request")}' var='void' />
        <core:set value='${mimeMultipart.addBodyPart(messageBodyPartText)}' var='void' />
    
        <!-- Attached VCalendar -->
        <core:new var='messageBodyPartVcs' className='javax.mail.internet.MimeBodyPart' />
        <core:set value='${messageBodyPartVcs.setFileName("MeetingRequest.vcs")}' var='void' />
        <core:set value='${messageBodyPartVcs.setContent(stringBuffer.toString(), "text/plain")}' var='void' />
        <core:set value='${mimeMultipart.addBodyPart(messageBodyPartVcs)}' var='void' />
    
        <!-- Send our invite -->
        <core:set var='transport' value='${sessionClass.getTransport(uRLName)}' />
        <core:set var='connect' value='${transport.connect(mailHost, mailPort, mailUser, mailPasswod)}' />
        <gel:log>Connected = ${transport.isConnected()}</gel:log>
        <core:set var='void' value='${transport.send(mimeMessage)}' />
    
    </gel:script>
    

     

    The script runs and we get our email.

     

    ScreenHunter_42 Sep. 26 12.57.png

     

    We open it an see our message along with the vcs file attachment:

     

    ScreenHunter_43 Sep. 26 12.57.png

    We double click on our MeetingRequest.vcs and see the meeting details:

     

    ScreenHunter_43 Sep. 26 12.58.png

     

    We save & close the meeting request and check our calendar:

     

    ScreenHunter_45 Sep. 26 12.58.png

     

    V/r,

    Gene



  • 8.  Re: Can we sent Meeting Invite from Clarity?

    Posted Sep 26, 2014 09:41 AM

    Hi Teena,

     

    What is the requirement need to send out Meeting invite from Clarity ? Generally, meeting invites are created and sent using email clients/  meeting schedulers.

     

    However, you can use the personal action items feature to send out action items with due dates , recurrence and reminder capabilities. If this serves the purpose of a meeting invite then I think personal action items are the best way to go.

     

    P.S. Ensure that the Send Calendar Reminders Job is scheduled to run frequently.

     

    Regards,

    AK



  • 9.  Re: Can we sent Meeting Invite from Clarity?

    Posted Sep 26, 2014 10:47 AM

    Hi AK,

     

    We have a custom Object 'Team Meeting' which will have fields like, meeting date, agenda, minutes of meeting, attendees, creator etc. It will have a checkbox ' send meeting invite'. The moment that is checked a meeting invite should go to the attendees with the agenda and some custom details.

     

    Regards,

    Teena Antony



  • 10.  Re: Can we sent Meeting Invite from Clarity?

    Posted Sep 26, 2014 11:25 AM

    Hi Teena,

     

    I suppose this custom Object 'Team Meeting' is a subobject of Project object. If this requirement is for collaboration purpose, there is a Collaboration tab on projects that contains features like Action Items , Discussions and Documents.

     

    Regards,

    AK



  • 11.  Re: Can we sent Meeting Invite from Clarity?

    Posted Sep 26, 2014 11:28 AM

    No It is not a sub Object. It is a custom Object