Saturday, 8 June 2013

Talend: Integrate MS exchange server with Talend - create tasks in exchange server using EWS



Problem - There is a need to integrate Microsoft exchange server with Talend. One such requirement is to create a new task in exchange server using Talend.

Solution -  As of date i could not find any builtin talend component to do this integration of exchange server with talend. What we can do is to use java code and exchange web service and EWSJavaapi to help us here.

Required jar files for this integration - commons-httpclient-3.0.1.jar, commons-codec-1.2.jar, commons-logging-1.1.3.jar, EWSJavaAPI_1.2.jar, jcifs-1.3.17.jar.

EWSJavaAPI_1.2.jar - exposes some java classes and methods which allows us to integrate talend (using java code) and exchange server.

tLibrary is used to load above required jar files in the job.

import of classes in tJava component is below

import java.net.URI;
import java.net.URISyntaxException;
import microsoft.exchange.webservices.data.ExchangeCredentials;
import microsoft.exchange.webservices.data.ExchangeService;
import microsoft.exchange.webservices.data.EmailMessage;
import microsoft.exchange.webservices.data.InternetMessageHeader;
import microsoft.exchange.webservices.data.InternetMessageHeaderCollection;
import microsoft.exchange.webservices.data.MessageBody;
import microsoft.exchange.webservices.data.ExchangeVersion;
import microsoft.exchange.webservices.data.FindItemsResults;
import microsoft.exchange.webservices.data.WebCredentials;
import microsoft.exchange.webservices.data.WellKnownFolderName;
import microsoft.exchange.webservices.data.Contact;
import microsoft.exchange.webservices.data.Task;
import microsoft.exchange.webservices.data.TasksFolder;
import microsoft.exchange.webservices.data.TaskStatus;
import microsoft.exchange.webservices.data.BodyType;



code used in tJava component (in job above) is below

ExchangeService service = new ExchangeService(
    ExchangeVersion.Exchange2007_SP1);
    ExchangeCredentials credentials = new WebCredentials("UserName","UserPassword");
    service.setCredentials(credentials);
    try {
        service.setUrl(new URI("https://exchange.domain.com/ews/Exchange.asmx"));
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }

Task newtask;
newtask = new Task(service);
MessageBody msgBody;
msgBody = new MessageBody();
msgBody.setText("Agenda comes here - we can add text here");
msgBody.setBodyType(BodyType.Text);
newtask.setBody(msgBody);
newtask.setDueDate(TalendDate.addDate(TalendDate.getCurrentDate(), 1, "dd"));
newtask.setSubject("task subject comes here");
...
...
newtask.save();

Talend: Integrate MS exchange server with Talend - create contacts in exchange server using EWS



Problem - There is a need to integrate Microsoft exchange server with Talend. One such requirement is to create a new contact in exchange server using Talend.

Solution -  As of date i could not find any builtin talend component to do this integration of exchange server with talend. What we can do is to use java code and exchange web service and EWSJavaapi to help us here.

Required jar files for this integration - commons-httpclient-3.0.1.jar, commons-codec-1.2.jar, commons-logging-1.1.3.jar, EWSJavaAPI_1.2.jar, jcifs-1.3.17.jar.

EWSJavaAPI_1.2.jar - exposes some java classes and methods which allows us to integrate talend (using java code) and exchange server.






tLibrary is used to load above required jar files in the job.

import of classes in tJava component is below
import java.net.URI;
import java.net.URISyntaxException;
import microsoft.exchange.webservices.data.ExchangeCredentials;
import microsoft.exchange.webservices.data.ExchangeService;
import microsoft.exchange.webservices.data.EmailMessage;
import microsoft.exchange.webservices.data.InternetMessageHeader;
import microsoft.exchange.webservices.data.InternetMessageHeaderCollection;
import microsoft.exchange.webservices.data.MessageBody;
import microsoft.exchange.webservices.data.ExchangeVersion;
import microsoft.exchange.webservices.data.FindItemsResults;
import microsoft.exchange.webservices.data.WebCredentials;
import microsoft.exchange.webservices.data.WellKnownFolderName;
import microsoft.exchange.webservices.data.Contact;

code used in tJava component (in job above) is below

ExchangeService service = new ExchangeService(
    ExchangeVersion.Exchange2007_SP1);
    ExchangeCredentials credentials = new WebCredentials("UserName","UserPassword");
    service.setCredentials(credentials);
    try {
        service.setUrl(new URI("https://exchange.domain.com/ews/Exchange.asmx"));
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }

System.out.println(new Date() + "-INFO - Creating new contact");       
Contact contact = new Contact(service);

contact.setDisplayName("Contact Display Name comes here");
contact.setBusinessHomePage("www.homepageofcontact.com");
...
...
contact.save(WellKnownFolderName.Contacts);

Monday, 20 May 2013

talend generate sample data using tRowGenerator



How to generate sample data in Talend using tRowGenerator

Solution -
Talend provides tRowGenerator component to help us in generating sample data in our job.

Step-1 - drag and drop tRowGenerator component in your job.
Step-2 - double click on tRowGenerator - to go to its schema definition.
Step -3 - As per your requirement enter column names, data types and you have option to either use y our own custom logic to get data in these columns or use some supplied functions - in the screenshot below i have used some supplied functions like random string and numeric sequence generator.
Number of rows for RowGenerator tells talend how many rows we want to generate.

talend tRowGenerator Schema
You can add tLogrow or other component to utilize this generated data further in your jobs.