I would like to share another good technique to automate complex and heterogeneous application integrations. Recently I started
to implement a tool to get data from an own-grown ASP-based Web-application, CA Clartiy, Microsoft Sharepoint,
SAP Netweaver Portal and www.salesforce.com.
The goal of the application is to fill in a Micosoft Sharepoint Form with data queried from the other systems.






As all systems are supporting Microsoft Internet Explorer as a Web-Client, I decided to build a solution in the well known
scripting language AutoIt. The Scripting-Language supports extended Regular Expressions and the syntax is Basic-like.
It is really powerful in automating the Windows GUI.
For my requirements I've used only some of the methods relevant to remote control Web access of the Internet Explorer.

I could also easily make my application fault tolerant to unexpected behaviour of the queried Web-pages as
I'm using the timeout-parameter.

Working with the SAP Netweaver Portal required me to work with nested Frames and iFrames of the page.
To get to wanted data I had to call 4 times _IEFrameGetCollection() until I reached to desired application.


Then I could use _IEFormElementGetObjByName() and _IETableGetCollection() to access the needed information.





I could Salesforce.com query by the following approach: I've used _IEFormElementOptionSelect() to
select the Opportunity-Filter and
_IEFormGetObjByName() to get the Form-Object and _IEFormElementSetValue() to write the opportunity number to the input-field.


I found a good way to fill in completely and automatically a large Microsoft Sharepoint form. Also the script can handle correctly
name look-up fields, date fields including choosing the correct date format DD/MM/YYYY or MM/DD/YYYY or whatever, Checkbox-Fields
and Drop Down Choice fields.






Finally I could work with CA Clarity by searching with a quote-number and querying the Project ID. I've used _IEGetObjById(), _IEFormElementOptionSelect(),
_IEFormGetObjByName(), _IEFormGetObjByName() and _IETableGetCollection().

If you have a need for creating an Automation with AutoIt then let me know.