Question: I would like to create workflow using SDL Tridion 2011 SP1, and i am going through the documentation in the live content portal.

I have few questions when I go through the documentation as follows:

1. Can I use **C# (TOM.NET)** for automatted activities/decisions? or should I use only **VBScript (TOM)**? Is there any sample code given in the live content portal for automatted activity/decision?
2. If **C# (TOM.NET)** is not allowed to use in workflows, why are its namespace/class/member references given there in TOM.NET API file?
3. If VBScript only allowed to use in WF, where can I get code/TOM API reference in SDL live content? As of now I dont have access to SDL Tridion server to get the documentation from the installer package.

Answer: 
You can use C# for automated tasks. Create a class and sign it with:

```
[ProgId("[Namespace].[Class Name]")]
[ComVisible(true)]

```

And sign the assembly with RegAsm.exe with the `/codebase` parameter.

Then in the Script of the automated action you can use this object.
It is fine to use the TOM .Net API. However we must consider that we would need to create Session instances since our new TOM .Net for Workflow won't allow you to pass a WorkItem instance from VBScript (Code Tab in Visio for Automatic Activities) and you are forced to pass the TcmUri for that WorkItem. The session creation is mandatory in order to get Tridion objects instantiated since you just have a tcmuri. The recommendation here is to use the C# class registered as a COM class by using the ComVisible and ProgId attributes but use the CoreServices for all the processing in your Com Visible class.

If you use the Core Services for processing you won't need to take care of sessions creations and your core would be much faster and scalable. You might be interested in use a TCP binding or a Net Pipes binding for performance obviously.