• View Communities
    • Citrix Developer Network
      The place for unfiltered straight talk on Citrix products. Blogs, code downloads, best practices, APIs, and more can all be found here.
    • Citrix Ready Community Verified
      Does it work with Citrix? Application compatibility questions are a thing of the past with the new Citrix Community Verified site.
    • Blogs
      Learn the latest from the Citrix employees who are building application delivery infrastructure technologies.
    • Blogosphere
      The Citrix Blogosphere is a window into the thousands of conversations taking place about Citrix and Application Delivery.
  •  Sign In
The Citrix Blog
Blogs for tag 'cdn'

Permalink | Twitter Post to Twitter | Comments (0) | Views (2583) |

posted by Barry Flanagan




In Part 1, Steve Umbehocker reviewed the installation of the StorageLink component of Citrix Essentials for Hyper-V. In this next installment, Steve reviews the initial configuration of StorageLink after it has been installed.









The Enterprise Edition includes the full version of StorageLink, Dynamic Provisioning Services for Server Operating Systems, and complete WorkFlow Orchestration.

The Platinum Edition of Citrix Essentials for Hyper-V adds in Lab Manager to provide a complete cost effective virtual lab solution, and Stage Manager to automate the process of migrating newly tested and verified configurations from the virtual lab directly into production. You can download a evaluation copy of the Platinum Edition of Citrix Essentials for Hyper-V at http://www.citrix.com/ehv.

Express Edition Download
http://www.citrix.com/ehvexpress

StorageLink Deep Dive Webinar - http://community.citrix.com/blogs/citrite/barryf/2009/04/13/StorageLink+-+Essentials+for+Hyper-V+Deep+Dive+Webinar

StorageLink Demo Videos
http://www.citrix.com/ehv

StorageLink Overview - http://community.citrix.com/blogs/citrite/barryf/2009/02/23/StorageLink+in+Essentials+for+Hyper-V

Provisoning Services Overview - http://community.citrix.com/blogs/citrite/barryf/2009/03/20/Provisioning+for+Hyper-V+with+Citrix+Essentials

Lab Manager Overview - http://community.citrix.com/blogs/citrite/barryf/2009/03/19/Essentials+for+Hyper-V+with+Lab+Management

StorageLink Install Install Guide - http://support.citrix.com/article/CTX120789
StorageLink User Guide - http://support.citrix.com/article/CTX120791



Follow me on Twitter.

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (3105) |

posted by Barry Flanagan




StorageLink is one of the components of the new Citrix Essentials for Hyper-V product.

Citrix StorageLink™ technology lets your virtual server infrastructures fully leverage all the resources and functionality of existing storage systems. StorageLink supports all third party storage architectures and delivers deep integration with leading storage platforms allowing you to switch seamlessly between XenServer and Microsoft Hyper-V™ platforms. Citrix StorageLink provides organization with:

  • Reduced cost and complexity by leveraging existing investments in storage systems.
  • One click access to native storage services.
  • Simplified, wizard-driven storage setup and maintenance.



Steve Umbehocker of the StorageLink Development team recently recorded a series of videos that guide you step by step through installing and configuring StorageLink. The first video, Installing StorageLink, is below.







The Enterprise Edition includes the full version of StorageLink, Dynamic Provisioning Services for Server Operating Systems, and complete WorkFlow Orchestration.

The Platinum Edition of Citrix Essentials for Hyper-V adds in Lab Manager to provide a complete cost effective virtual lab solution, and Stage Manager to automate the process of migrating newly tested and verified configurations from the virtual lab directly into production. You can download a evaluation copy of the Platinum Edition of Citrix Essentials for Hyper-V at http://www.citrix.com/ehv.

Express Edition Download
http://www.citrix.com/ehvexpress

StorageLink Deep Dive Webinar - http://community.citrix.com/blogs/citrite/barryf/2009/04/13/StorageLink+-+Essentials+for+Hyper-V+Deep+Dive+Webinar

StorageLink Demo Videos
http://www.citrix.com/ehv

StorageLink Overview - http://community.citrix.com/blogs/citrite/barryf/2009/02/23/StorageLink+in+Essentials+for+Hyper-V

Provisoning Services Overview - http://community.citrix.com/blogs/citrite/barryf/2009/03/20/Provisioning+for+Hyper-V+with+Citrix+Essentials

Lab Manager Overview - http://community.citrix.com/blogs/citrite/barryf/2009/03/19/Essentials+for+Hyper-V+with+Lab+Management

StorageLink Install Install Guide - http://support.citrix.com/article/CTX120789
StorageLink User Guide - http://support.citrix.com/article/CTX120791



Follow me on Twitter.

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (2) | Views (5061) |

posted by Harry Labana

Today Citrix and Microsoft announced an expanded Desktop Virtualization partnership. I'll let the announcement speak for itself and we'll start to release more specifics on the solution over time, but I did want to share my perspective. I think this is good for our customers because Citrix is enabling choice by allowing them to leverage existing or planned investments and extends the reach and usability of those investments. Let me attempt to clarify what I mean.

The reality is, that many customers use or need a combination App-V, Systems Center, Citrix Application Virtualization both online and offline. I always felt that this caused some artificial confusion about what to choose. For example if I need to stream 64 bit apps with Citrix technology, and I need to stream applications which have services via App-V technology then I can now do both side by side in an integrated fashion. Your existing investments (e.g. the sunk cost of packaging, sequencing, testing and validating the applications) are protected and you can plot your course as you see fit together with Citrix and Microsoft.

I know this question will come up so I will also answer it directly based on the data in front of me. Does this mean Citrix is stopping Application Virtualization development? Well, now that I have the advantage of having access to status reports I don't have to speculate anymore. I know for a fact that there are a number of enhancements that our development teams are working on, so these enhancements continue in preparation for the next XenApp release. Moving beyond just the next release of XenApp, we plan to continue to invest to enable delivery of Windows applications as a service.

I believe customers want uncomplicated, user-friendly products that simplify their lives. I know from experience that managing Desktop agent sprawl is a pain. Hence, later in 2009 App-V will be able to be plugged directly into the Citrix Receiver which will make things easier for our customers via the Receiver management framework. This will also enable more intelligent options, where via policy or connectivity one can determine the best place to determine application execution for a user, streamed or hosted. Certainly an area I am going to spend a lot of time thinking about. Additionally, Citrix Dazzle enables a new 'Pull' based interface that consumers are familiar with. Note, I don't just say it's a PNAgent replacement, I think it's a lot more if you grasp the real value. This enables a whole new delivery model, and innovative ways for IT to reach and empower it's customers that too often accuse IT of being slow and rigid. How much time is spent setting up user environments, getting inventory, reconciling and so on? By enabling user based self service, a whole new capability is available. Yes, Citrix will enable App-V to be delivered as a user self service via Dazzle, which I think will be cool, and combined with Merchandising Server, opens up the realm of the possible for delivering applications as a service. Extend these ideas out further into the Cloud and emerging license models, and I think enabling application delivery for the vast majority of applications that are Windows based to complement Desktop Virtualization is a huge deal.

In 2010 XenApp will have a connector to ConfigMgr. This means that you will be able to manage XenApp environments from the ConfigMgr console. We'll blog more on specifics on what features of XenApp management we will expose as we evolve the capability and how,  but for now it's reasonably safe to assume we will do things like publishing apps, advertise XenApp as collections etc.  The more important point right now is to understand that by leveraging XenApp, you will now be able to extend the reach of ConfigMgr to a more diverse set of platforms like Mac and Linux that may not be managed by ConfigMgr. Think of it as Citrix extending the depth of solutions that Microsoft is providing for our mutual customers.

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (2866) |

posted by Harry Labana

I thought it would be fun to share some experiences from week one and some of the cool innovations I saw.
So as you can imagine, one of my first instincts, having been curious for so many years as a customer about why this, why that, reading speculation, I just had to find out! It was like I had just been given my driving license and could go anywhere. I am sure many of you know Brad Pedersen our Chief Architect, Citrix Fellow and father of ICA. It was simply awesome to have him answer so many of my historic questions, 'the inside scoop,' and spend hours brain storming about where we are/could-going/go and ME being able to shape that conversation now. I also realized that we don't hear about a lot of the unsung hero's of Citrix who are the current generation of brilliant minds here. There is some really cool stuff coming with power management, so watch this space, and some future ideas that I hope we gain traction on. There are some advanced management ideas that we are thinking about and upcoming features that will help simplify your lives. HDX/ICA will continue to get better and you will see some new capabilities in very near term releases of the protocol. I'm beginning to play with some of the future prototypes of Dazzle that I think will be really easy to use from a more diverse set of devices.

I discovered the best conference room names are in our UK offices, best example was 'Vain.'  Without the internal Citrix Wiki I would be lost, everything has a code name! It's like learning a new language. I have never been so spoiled for choice on which free soda or juice to drink. Wow, I saw people wearing shorts at work a shock to the system after Wall Street. I got a chance to spend time with Mark Templeton our CEO and many of the executive team. Prior, my interactions were watching them on stage, or brief encounters at Customer Council events. I am pleased to report they are not aliens, and are listening. I asked Mark if it was ok to disagree with him, and he promised to hit me if I didn't!

I had a great conversation with Martin Duursma who runs Citrix Labs and chairs our CTO office, where we really got into interesting future areas that are currently under research, including Cloud and Client Virtualization including Mobile devices. Some of previous work from Citrix Labs has worked it's way to product, think iPhone client. This device support is now becoming even broader, check out Keith Turnbull's blog on our upcoming Blackberry client.

I also developed a new found respect for the size of our product and how much it actually does to support a vast customer base. There is so much deep embedded knowledge in so many areas that is very hard to replicate. I don't think people on the outside really appreciate what it takes to deliver this stuff. Coupled with the fact that these teams get this space, I think we are very well positioned for the future.

So all of this is just week one, where I have spent most of my time with the XenApp team talking about futures. The great thing about being a Citrix CTO is that I get involved in providing guidance for the firm's technology direction across our product suite, so I am only beginning to scratch the surface. As I work with the rest of our portfolio teams, I can already see that we have so many pieces of the puzzle that will enable us to build innovative solutions for our customers.

I'll share more real time updates via Twitter

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (1) | Views (3656) |

posted by Harry Labana



Hello World! This must be one of the strangest feelings I have had in my career, as for the first time I am now on the other side of the fence. My name is Harry Labana, it's a beautiful Sunday morning and after a crazy first week I am getting a chance to reflect on my first week at Citrix as the new CTO of the XenApp product group. So to begin, here's a little background to my story. I grew up in the UK of Indian decent and after working for a few years in the UK after University, I spent the last 13 years traveling the canyons of Wall Street with various firms, the last 9 of which have been as a Vice President with Goldman Sachs leading and working on numerous infrastructure, software development and management initiatives.

In particular, I have focused very heavily in the Windows world, and have been through the gamut of real world challenges this brings. From software distribution/packaging, OS upgrades, provisioning, software development, server/application/client virtualization, migrations/integrations, fair share of disasters, hardware, remote access, hosted applications and of course virtual desktops- I think I got most of it - I have been beaten into understanding the realities of execution responsibility at global scale. Fortunately, over the last few years I've also had the opportunity to work with many of the leading established vendors and emerging startups in the Application and Desktop virtualization industry and this has allowed me to learn from smart people with so many perspectives. By virtue of working in financial services, I've also been able to refine these perspectives by talking with investors, analysts and bankers in this space which has equipped me to be a VERY vocal Citrix Customer Council member for a number of years. So I guess Citrix had enough and decided to allow me to help chart their future direction, which is an immensely exciting opportunity, for which I am grateful and where I hope to make a difference by bringing a seasoned customer perspective.

As I reflect on what's happened in our industry over the years, a key observation is how I have seen Citrix technologies evolve from the early adoption days in the 90's as a band aid solution, to many customers now using Citrix as a strategic delivery platform and even greater numbers now considering the technology for the very first time. It is these early customer thought leaders that have done some really amazing things with the technology and enabled us to become a 1.6 billion dollar company by creating so much value for their clients. It seems to me that we are now also at the early stages of the next innovation cycle and early adopters are catching on. I recall sitting at a Synergy session in Houston last year where the topic was a discussion on Desktop Virtualization. I remember what felt like a cynical question about who's actually doing this and a call for a raise of hands. There was silence in the room and I got a nudge from one of my former team mates, and I raised my hand. I won't get into details, but the point is that I think customer thought leaders have and will continue to innovate and find use cases and solutions that we have not even conceived of yet because they are looking to build competitive advantage for their firms because they are driven by an opportunistic mentality that looks beyond teething constraints. Over time this innovation diffuses to the masses, and that's ok in many cases and lost opportunity for others. Working with customers and the broader community, I am convinced that we will continue to evolve our products to enable broader adoption of our technology stack so customers can solve real world problems.   

As I alluded to, I think it's very easy to play cynic, and I could have easily written an article about stuff many vendors can't do or theorize what will happen or what will not happen. I have learned that to build real world solutions requires skill, experience, judgment and the courage to reach out to customers and users who want to be part of the solution. I hope that many of you will be comfortable reaching out to me harry.labana@citrix.com and telling me what you really think as we build upon our current success and evolve our story. I promise I will incorporate your views into my thinking even if I don't agree.

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (1) | Views (6116) |

posted by Barry Flanagan






There is a new Express Edition of Citrix Essentials for Hyper-V, and it is FREE! Now you can quickly and easily combine the power of Hyper-V- System Center Virtual Machine Manager and Essentials for Hyper-V Express Edition.

http://citrix.com/ehvexpress

Citrix Systems, Inc. is unveiling a new free Express Edition to its Citrix Essentials for Microsoft Hyper-V lineup. The new Express Edition is immediately available for download and includes the game-changing Citrix StorageLink technology. With StorageLink, Windows administrators can dramatically simplify their storage management processes with quick and easy storage configuration and provisioning for their Windows Server 2008 Hyper-V and System Center virtual infrastructures. Citrix Essentials helps administrators take full advantage of powerful storage-based features like deduplication, thin provisioning, cloning, snapshots and replication - features that otherwise hide behind layers of proprietary, specialized virtualization storage file systems.

The new free Express Edition of Citrix Essentials for Hyper-V is designed specifically for Windows IT professional in the early phases of Hyper-V adoption. It will allow them to take advantage of the benefits of shared storage with Hyper-V and simplify storage management in virtual server environments.
The StorageLink technology featured in all editions of Citrix Essentials for Hyper-V provides Windows IT Professionals with the tools necessary to easily manage Hyper-V storage in iSCSI and Fibre Channel (FC) SAN environments, enabling them to leverage advanced storage technologies from leading storage vendors that deliver powerful features for performance, storage efficiency, and business continuity. Industry estimates have shown that by applying storage-saving technologies like deduplication and thin provisioning , Hyper-V customers can often shrink their storage footprint by upwards of 50 percent depending on the nature of their workloads. In cases where virtual machines (VMs) are highly duplicated, like virtual desktop images, many have seen a nearly 90 percent reduction in storage consumption.

The Express Edition of Citrix Essentials for Hyper-V supports up to two Hyper-V servers and one storage array. Organizations that download the free Express Edition of Citrix Essentials for Hyper-V can easily upgrade to the Enterprise or Platinum Editions. Listed at $1500 and $3000 per server, respectively, the Enterprise and Platinum Editions add dynamic server provisioning, automated lab management, automated stage management, and workflow orchestration.







Of course, Express Edition provides just a small sampling of what is possible to achieve with Citrix Essentials for Hyper-V. The Enterprise Edition includes the full version of StorageLink, Dynamic Provisioning Services for Server Operating Systems, and complete WorkFlow Orchestration.

The Platinum Edition of Citrix Essentials for Hyper-V adds in Lab Manager to provide a complete cost effective virtual lab solution, and Stage Manager to automate the process of migrating newly tested and verified configurations from the virtual lab directly into production. You can download a evaluation copy of the Platinum Edition of Citrix Essentials for Hyper-V at http://www.citrix.com/ehv.

Express Edition Download
http://www.citrix.com/ehvexpress

StorageLink Deep Dive Webinar - http://community.citrix.com/blogs/citrite/barryf/2009/04/13/StorageLink+-+Essentials+for+Hyper-V+Deep+Dive+Webinar

StorageLink Demo Videos
http://www.citrix.com/ehv

StorageLink Overview - http://community.citrix.com/blogs/citrite/barryf/2009/02/23/StorageLink+in+Essentials+for+Hyper-V

Provisoning Services Overview - http://community.citrix.com/blogs/citrite/barryf/2009/03/20/Provisioning+for+Hyper-V+with+Citrix+Essentials

Lab Manager Overview - http://community.citrix.com/blogs/citrite/barryf/2009/03/19/Essentials+for+Hyper-V+with+Lab+Management

StorageLink Install Install Guide - http://support.citrix.com/article/CTX120789
StorageLink User Guide - http://support.citrix.com/article/CTX120791



Follow me on Twitter.

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (2717) |

posted by John Fanelli

I'm sure you are all familiar with the iPhone commercials and the ubiquitous "there is an app for that" phrase that has seemingly become the catch phrase of this decade. Previous catch phrases include --but not limited to -- The 70s-"Heeeey" , The 80s-"Where's the Beef?" The 90s-"Doh!".

All kidding aside, "there's an app for it" reflects the current state of consumerization and customization that is becoming commonplace in today's on-line experience. It is no longer acceptable to have generic applications and content. We all know what we need/want for our apps and we need them now!

Citrix Community Updates

In that same spirit, today I have the pleasure of sharing some of the upgrades we have made to the Citrix community sites. Need a community for discussing Citrix and Microsoft products, "there's a community for that", need a community for the latest and greatest on Citrix and Oracle, "there's a community for that", need a community for finding cool communities "there's a community for that" , need a community where you can geek out (both online and local), "there are 2 communities for that" (gotta spice it up a bit , the first is here and the second is here)... well, I think you get the idea. You should check out the Citrix Community home page and in particular the new partner community module.


 

My team and I are continually looking for ways to connect with the Citrix community of customers, partners, Citrites and anyone interested in the latest in virtualization of applications, desktops and servers. We are continually soliciting feedback and update the site based on direct comments and industry trends.

Now it's your turn....

Let us know what types of communities you need and (you guessed it) "there will be a community for that", we are open to all types of ideas... here's a few to get the ball rolling (and maybe a peek at the future )... How about a Citrix and Windows 7 community? Or a Citrix and Desktop Virtualization community? Or (heaven forbid!) a Citrix and VMware community?

Also, let us know what type of content you are looking for in your communities. Check out the partner communities or even XenServerCentral for our real time multi-media feeds. Let us know how we can make them better for you...

Now I need to get back to my favorite iPhone App (an oldie but a goodie) ....

john

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (6) | Views (3011) |

posted by Gus Pinto

Hi Everyone,

Just two days ago we released the Citrix Receiver 1.0.1 to AppStore, the rockstar feature for this release was the inclusion of Access Gateway Enterprise Support.

Today we were able to identify a bug on the Citrix Receiver app that affect users running NetScaler 9.1, causing the application to suddenly exit.

Gladly right after identifying the bug we were able to quickly fix it, so a new build (v1.0.2) has been produced, tested and will be submitted today to Apple. Expect an update to be available in the next few days.

In the meantime for admins and users attempting to deploy the Receiver with AGEEs, follow the steps provided in the Admin Guide. The Citrix Receiver for iPhone Admin Guide can be downloaded here. Setup steps in the document work perfectly for users running AGEE 8.x and AGEE 9.0.

For help and questions, don't hesitate to visit our support forums or feel free to send me a direct email

best,
Gus

twitter.com/guspinto

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (1) | Views (3456) |

posted by Gus Pinto

Hi Everyone,

I would like to take a moment and introduce you to the Citrix Receiver for iPhone Admin guide. This document will come handy when planning for iPhone deployments in your company. Inside you can find:

  • Product Requirements
  • How to configure iPhone secure access via:
    • Access Gateway Strandard Edtion
    • Access Gateway Enterprise Edtion
    • Citrix Secure Gateway
  • How to provide access information to end users
  • Basic troubleshooting steps
  • Known Issues


Download the Citrix Receiver for iPhone Admin Guide


best,
Gus

twitter.com/guspinto

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (2939) |

posted by Ed York

One of the most common questions I've heard on Workflow Studio is how you can initiate the execution of workflows from an ASP.NET web page.  The web is a great platform for delivering applications to end-users, and more and more applications are being delivered by a web browser each day.  How cool would it be to kick off a workflow within Workflow Studio based on a user-action performed inside a web application?  In this blog I'm going to show you how to do it and I'll give you the tools to customize this further to meet the needs of your application.

Example Usage
Before I go into the details about how the sample web application works, I want to quickly provide an example of why you may want kick off workflow execution from a web page.  As you think about your business, ask yourself what it takes to get a new hire set up with new credentials across all of the systems in your environment.  You need an Active Directory account, application accounts, HR accounts, credentials supplied to your single sign-on solution, etc. 

To accommodate this scenario, you can build a web page that presents a form to an admin to gather details about a new user, what groups they should belong to, and what applications/resources they need to access.  This web page can call a workflow within Workflow Studio passing in the details about the user, and the workflow can automate the provisioning of the Active Directory account and application accounts across various systems.  That's a pretty powerful system and would greatly simplify a lot of the complexities for performing those actions manually.  Building that type of workflow might take some custom development effort, but Workflow Studio 1.1 already provides activities for provisioning user accounts in Active Directory to help get you started.

ASP.NET Web Application Overview
The sample web application that I'm providing here is functionally equivalent to the sample Windows application that I provided in the last blog.  To compare and contrast the differences between automating workflows with a Windows and Web application, I wanted to keep the functionality and UI mainly the same.  The web version of the application is shown below.


I describe my adventures for coding this application in the bottom of this article.  To sum up, this application really has two parts.  You have the ASP.NET application that contains the ASPX page and code-behind page.  You also have a COM object that you need to install inside Component Services. (I have steps for doing all this below). 

When you click the Execute Workflow button inside the web page, the ASPX page gathers what workflow you are executing and what runtime it is deployed on.  It then calls the COM object to actually execute the workflow.  The COM object uses the Workflow Studio Powershell cmdlets for communicating with Workflow Studio.  I was getting security issues when I tried to run those functions within the context of IIS.  By creating a COM object and placing that object within Component Services, I was able to overcome the issues I was having. 

For more information on how this application works, feel free to check out the previous article of this blog series.  I described in great detail how the Windows version of this application functions, so I'll refer you to that article for the extra details.  For more information on why I needed to build the COM object, refer to the Lessons Learned section at the bottom of this article.

Downloads:
Download the ASP.NET web application IIS files
Download the ASP.NET web application source code

Prereqs for using the ASP.NET application:
Before you set up this web application on your Workflow Studio machine, you will need to have the following installed and/or configured beforehand:

  • Workflow Studio 1.1
  • Powershell 1.0
  • IIS installed with ASP.NET enabled
  • IIS configured with the ASP.NET v2.0.50727 web service extension set to Allowed
  • Determine or specify an account within the Workflow Studio Console for executing the workflows.  This is done within the Security section.
  • Pre-deploy the Workflow you want to execute within the Workflow Studio Console.  See Part 1 of this blog series for more information.

Setting up the ASP.NET application:
To set up this sample web application, follow the steps in the sections below.

Application Setup

  • Copy the IIS files from the ZIP above to C:\Citrix (or any accessible location on your Workflow Studio machine)
  • Update the web.config file with the appropriate impersonation account.  This account should have permissions to execute workflows within Workflow Studio and should be the same account that is added to Component Services later in these steps.  

IIS Setup

  • Open IIS and create a virtual directory for the application.  Point the virtual directory to the folder specified above.  Enable script execution on the directory.
  • View the properties of the virtual directory in IIS. In the ASP.NET tab, set the ASP.NET version to 2.0.50727.

Component Services Setup

  • Launch Component Services by navigating to Start->All Programs->Administrative Tools->Component Services
  • Within Component Services, navigate to Computers->My Computer->COM+ Applications.  Right-click COM+ Applications and select New->Application
  • The wizard now starts.  Create an empty application
  • Specify a name such as "WFSCOM" and select Server Application
  • Set the application identity to a Workflow Studio admin account
  • Create a new role called "Access"
  • Add the Workflow Studio admin account to the Access role
  • Complete the wizard
  • After the COM+ application is created, add a new component to the COM+ application.  Navigate to Computers->My Computer->COM+ Applications->WFSCOM->Components.  Right-click Components and select New->Component.
  • The wixard now starts.  Choose to install a new component
  • Browse to the WFSCOM.dll file (C:\Citrix\WFSWebClient\bin\WFSCOM.dll).
  • Complete the wizard

You should now see the WFSCOM.WFSAction COM object listed within the Components section.  In the Interfaces section, there is an inteface called IWFSAction that contains the methods of our COM object.  The ASP.NET code calls the COM object to execute these methods.  Since this object resides inside Component Services, these methods run outside the context of IIS under the Workflow Studio admin account that we specified above. 


Lessons learned from developing this application
Developing an ASP.NET web application that executes workflows actually turned out to be a little more difficult than building the equivalent Windows application.  With a Windows application, the application runs under the context of the logged-on user account. If that logged on user had permissions to execute workflows inside Workflow Studio, that user would be able to use the custom Windows application without issues.  With a Web application, the application runs under the context of IIS.  You can modify the account that runs a web application in a few places.  (1) Editing the properties of the virtual directory or (2) Including a <identity impersonate="true"> tag inside the web.config file of the ASP.NET application. 

Armed with that knowledge I set out to build the ASP.NET application.  The approach I initially took was to take all of the code I had inside the Windows application and paste it into the ASPX page and code-behind page.  The only thing I changed was I replaced all of the Windows controls with Web controls and I changed how I sent messages back to the user.  When debugging this application inside Visual Studio, my application actually ran fine.  However when I deployed it to IIS and ran it, that was a different story.  I kept on getting Access Denied messages whenever I wanted to retrieve the workflow list or execute a workflow.  Something inside those functions was causing me issues...

After much debugging, I deduced that the code that was causing the Access Denied messages was when I was trying to get a reference to the deployed workflow inside my PowerShell SDK code.  For whatever reason, IIS just did not have the permissions to execute the Workflow Studio Powershell cmdlet called get-deployedworkflow.  I put this section of code below so you are aware of which section I was having issues with.

//Get reference to the deployed workflow. We are executing the Powershell command below:
//$workflow = get-deployedworkflow -workflowruntime $runtime -workflowname $strWorkflowName -includeschedule
l_objPipeLine = l_objRunspace.CreatePipeline();
l_objCommand = new Command("get-deployedworkflow");
l_objCommand.Parameters.Add("workflowruntime", l_objRuntime);
l_objCommand.Parameters.Add("workflowname", l_strWorkflowName);
l_objCommand.Parameters.Add("includeschedule");
l_objPipeLine.Commands.Add(l_objCommand);
l_objCommandResults = l_objPipeLine.Invoke();   //Get Access Denied here when running this code in IIS
PSObject l_objWorkflow = l_objCommandResults[0];
l_objPipeLine = null
 
 

After playing with the Virtual Directory account settings and web.config impersonation settings for a while, I still was not able to get past the Access Denied message.  I would have thought that setting the web.config <identity> tag to the Workflow Studio admin account would have done the trick, but I still received that error message.  So I then I went to Plan B and thought of a different approach.  What if I take that particular code outside of IIS and put it into a more controlled environment where I can run it under whatever account I want and not have to worry about IIS getting in the way? 

That solution was Component Services.  I'm not an everyday developer (probably have one development project a year), but I remembered using Component Services many years back with a MFCOM application I wrote.  (MFCOM is the XenApp API).  With that application, I wanted to be sure that my MFCOM code would run under the context of a XenApp admin account and not the logged on user account.  So creating a COM object and placing that object within Component Services allowed me to run it under whatever account I needed.  With Component Services, you also have the choice of running the COM object in-process as a library application or out-of-process as a server application.  When you run it out of process, it is executed within a different memory space than the calling application.  Creating a COM object and executing it as a server application under the context of a Workflow Studio admin account was the missing ingredient for the Web Application that I was building.  Since it runs out-of-process, IIS can't get in the way and mess with those security permissions any more!

Although most of the Workflow Studio cmdlets functioned fine when running within IIS, I decided to move the entire Powershell SDK functions themselves to the COM object that I would run within Component Services.  Although this sounds really complicated, the good news is that I've done all the work for you.  The COM object that I am providing within this article has all the functions you need for executing a workflow.  If you want to create your own ASP.NET application that executes workflows, you just need to add my COM object to Component Services on your Workflow Studio machine, and then call the methods of the COM object inside your ASPX page.  If you are reading this article, I would venture to guess that you might have quite a bit of experience in working with ASP.NET so you should have the tools you need to proceed from here. 

About the source code:
The source code above includes both the ASP.NET web application and the COM object for executing the workflows.  Your development machine will need Visual Studio 2008, Workflow Studio, Powershell 1.0, Powershell SDK, and IIS. 

If you want to step through the code within Visual Studio, you'll need to place the COM object within Component Services on your development machine.  You can follow the manual steps above for doing this or use the regsvcs utility.  To use regsvcs.exe, open the Visual Studio command prompt and type a command such as this:

regsvcs /c "C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\WFSWebClient\WFSCOM\bin\Debug\WFSCOM.dll"
 
 

I tried to code the COM object so that you wouldn't need to make any changes to it if you just wanted to execute workflows on Workflow Studio.  If you do need to make changes to the COM object for any reason, remove the COM object from Component Services.  If you placed the COM object within the global assembly cache (GAC), remove it from the GAC as well.  (The GAC resides in C:\Windows\Assembly.  Just right-click on the WFSCOM assembly to un-install it).  Then open the Visual Studio solution and make changes to the WFSCOM project as you need to.  Re-compile the project.  When you are ready to re-deploy the COM object, add WFSCOM.dll to the global assembly cache (GAC) to get a new type library (.tlb file).  To add it to the GAC, just execute a command such as below.  Then re-add WFSCOM.dll back to Component Services using the regsvcs command above.  If you open Component Services, you should now see the WFSCOM COM+ application listed.

gacutil.exe /i "C:\Documents and Settings\Administrator\My Documents\Visual Studio 2008\Projects\WFSWebClient\WFSCOM\bin\Debug\WFSCOM.dll"
 
 


I hope this blog series on automating Workflow Studio will help you out with your projects.  Happy coding!

Blogs in this series:
Using Powershell to automate workflow execution within Citrix Workflow Studio
Passing parameters into a workflow within Citrix Workflow Studio
Automating workflow execution for Citrix Workflow Studio using a .NET windows application
Automating workflow execution for Citrix Workflow Studio using an ASP.NET web application (this one)

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (8) | Views (2647) |

posted by Rich Crusco

We have added a new page to the Citrix Communities for you to be able to see all of the highlights that are in the Featured Communities.

http://community.citrix.com/display/cdn/Community+Featured

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (2950) |

posted by Ed York

This is the third part of a four-part series on automating workflow execution within Citrix Workflow Studio.  In the first two parts of the series, I discussed how you can create Powershell scripts to execute workflows.  Part 1 provided a high-level overview of creating Powershell scripts for automating workflow execution and Part 2 expanded on those scripts to discuss how to pass parameters into the workflow.  In this blog, I will discuss how you can automate workflow execution with a custom Windows application.  The sample .NET application I built is shown below.  I am providing both the executable and full source code to allow you to expand upon this solution to meet the needs of your environment.



When would I need to use a custom application for executing workflows?
A lot of you might be asking the question - "If we can use the Workflow Studio Console to execute workflows, why would I need a custom application to do that for me?".  The answer really comes down to how you need to execute certain workflows in your environment.  If you need to execute workflows "on-demand" or "on a schedule", the Workflow Studio Console would meet those needs.  Just open the Workflow Studio Console and schedule a job to run immediately or on a pre-determined schedule.  However, if you need "event-driven" automation where a third-party application kicks off the execution of a workflow based on an event happening, that is where you need to be able to hook into Workflow Studio with a custom solution to perform that type of automation. 

The custom application provided in the Downloads section below provides a sample for how you can tie any .NET windows application to Workflow Studio for executing workflows.  Feel free to try out the sample application on your Workflow Studio machine.  The full source code is also provided to allow you to customize and extend the application further based on what you need to do.

Downloads:
Download the application executable here
Download the application source code here
 

Preparing your Workflow Studio environment to use the custom application:
The custom application needs to run on a machine that contains Workflow Studio since it ties into Powershell and calls the Workflow Studio cmdlets for performing various actions on Workflow Studio.  In your Workflow Studio Console, you will need to pre-deploy the workflow that you want to automate (see Part 1 for more information on pre-deploying workflows).  The workflow that you want to automate can include parameters as well.  Parameters for a workflow are defined in the Workflow Studio Designer under the Global Properties section (see Part 2 for more information on defining workflow parameters).

This custom application functions as any typical Windows application in that it runs under the context of the logged-on user account.  The logged-on account needs to have permissions in Workflow Studio to execute workflows.  These permissions are defined in the Security section of the Workflow Studio Console.  For simplicity, I typically add the user accounts as a "Workflow-Admin", but you can play with the security roles here to determine what roles are actually needed.



Using the custom application:
To use the custom application, log onto your Workflow Studio machine with an account that has permissions to execute workflows within Workflow Studio.  Place WFSWorkflowExecute.exe on your Workflow Studio machine.  When you launch the application, the initial view is shown below.



Click the Get Runtimes button to get the Workflow Studio runtimes that are installed on the local machine.  The runtimes are listed within the combo-box below and the name of the runtime specifies which account the runtime is running under.  



When a runtime is selected, all of the workflows that are deployed on that runtime are listed as well.  To execute a certain workflow, you need to know which runtime you deployed the workflow on.   This sample application also provides the version of the workflow as you may have deployed two different versions of the same workflow to the same runtime.  Using the version numbers helps you keep them straight.

When you want to execute a workflow, you need to know if that workflow requires any parameters.  The workflow parameters are defined in the Workflow Studio Designer in the Global Properties section of the workflow.  As mentioned above, Part 2 of this blog series goes into detail on how to define and use parameters inside a workflow.



When specifying workflow parameters inside the custom application, the parameter name is case sensitive.  (Notice how I kept the parameter name as "gMessage").  If you mistype the parameter name or use the wrong case, you will get an error message when executing the workflow stating that the parameter name is not recognized.  Just keep this in mind as you type the name of the parameters into the application.



Click the Execute Workflow button to execute the workflow.  If the workflow was successfully executed, you'll get a pop-up message indicating success.



To verify the workflow was executed, you can open the Workflow Studio Console and check out the Jobs section. 



Understanding the source code:
A lot of you out there will want to customize this application in your own environment.  I developed this application with C# using Visual Studio 2008 and the Powershell SDK.  Your development machine will also need Powershell 1.0 and Citrix Workflow Studio.  For advice on setting up your Visual Studio environment, check out this article.  If you follow the steps in that article, you'll just need to add the Powershell SDK and you should be all set.

The Powershell SDK is included as part of the Windows Software Development Kit.  You can get information on the Poweshell SDK here.  I downloaded the full ISO and it took me quite a while to get it.  When you are ready to install, you don't need everything in the setup wizard.  The Powershell SDK link provided above actually tells you what you specifically need to install to just get the Powershell SDK.  To use the Powershell SDK inside your Visual Studio project, the project will need to reference System.Management.Automation.dll.  

Once you get your development machine set up, you can open the solution that I provided above inside Visual Studio.  Essentially all this custom application does is use the Powershell SDK APIs to execute cmdlets on Powershell.  Since Workflow Studio provides Powershell cmdlets to automate various tasks, we can use the Powershell SDK to automate many Workflow Studio functions. 

From my personal experience, using the Powershell SDK takes a little time getting used to.  What I found to be helpful is to first write out the Powershell commands in Notepad and test them within Powershell to make sure they are functioning as expected.  If you are working with Powershell variables, use the echo statement frequently to understand the current value of the variable.  Then when you are ready to use the Powershell SDK in your Visual Studio project, you can convert each of your Powershell statements to the equivalent Powershell SDK code.  In the source code that I provided for this custom application, I put comments into the code to explain what Powershell command I was trying to execute within that code block.  Reviewing those comments should help you to get started with understanding how to use the Powershell SDK.  For example, here is the ExecuteWorkflow() function that is used by the custom application.  Stepping through this code inside Visual Studio and watching the variables is another great way to learn this code.

public string ExecuteWorkflow(Hashtable objFunctionParameters, Hashtable objWorkflowParameters)
{
   try
   {
      //Declare local variables
      string l_strReturn = "Executing workflow";
      string l_strWorkflowName = objFunctionParameters["WorkflowName"].ToString();
      string l_strRuntimeName = objFunctionParameters["RuntimeName"].ToString();
      Hashtable l_objWorkflowParameters = objWorkflowParameters;

      //Create a runspace containing the Workflow Studio snap-ins
      RunspaceConfiguration l_objRSConfiguration = RunspaceConfiguration.Create();
      PSSnapInException l_objSnapInException = null;
      l_objRSConfiguration.AddPSSnapIn("Citrix.WorkflowStudio.Azman", out l_objSnapInException);
      l_objRSConfiguration.AddPSSnapIn("Citrix.WorkflowStudio.Core", out l_objSnapInException);
      l_objRSConfiguration.AddPSSnapIn("Citrix.WorkflowStudio.DataStore", out l_objSnapInException);
      l_objRSConfiguration.AddPSSnapIn("Citrix.WorkflowStudio.Installer", out l_objSnapInException);
      Runspace l_objRunspace = RunspaceFactory.CreateRunspace(l_objRSConfiguration);
      l_objRunspace.Open();

      //Get reference to the Workflow Studio runtime that was passed in.
      //We are executing the Powershell command below:
      //$rt = Get-WorkflowRuntime -ServiceName $ServiceName
      Pipeline l_objPipeLine = l_objRunspace.CreatePipeline();
      Command l_objCommand = new Command("get-workflowruntime");
      l_objCommand.Parameters.Add("ServiceName", l_strRuntimeName);
      l_objPipeLine.Commands.Add(l_objCommand);
      Collection<PSObject> l_objCommandResults = l_objPipeLine.Invoke();
      PSObject l_objRuntime = l_objCommandResults[0];
      l_objPipeLine = null;

      //Get reference to the deployed workflow that was passed in.
      //We are executing the Powershell command below:
      //$workflow = get-deployedworkflow -workflowruntime $rt -workflowname $strWorkflowName -includeschedule
      l_objPipeLine = l_objRunspace.CreatePipeline();
      l_objCommand = new Command("get-deployedworkflow");
      l_objCommand.Parameters.Add("workflowruntime", l_objRuntime);
      l_objCommand.Parameters.Add("workflowname", l_strWorkflowName);
      l_objCommand.Parameters.Add("includeschedule");
      l_objPipeLine.Commands.Add(l_objCommand);
      l_objCommandResults = l_objPipeLine.Invoke();
      PSObject l_objWorkflow = l_objCommandResults[0];
      l_objPipeLine = null;

      //Schedule the workflow to run immediately.
      //We are executing the Powershell command below:
      //schedule-workflow -workflowruntime $rt -workflowstrongname $workflow.WorkflowStrongName -workflowparameters $wfparameters -runimmediately
      l_objPipeLine = l_objRunspace.CreatePipeline();
      l_objCommand = new Command("schedule-workflow");
      l_objCommand.Parameters.Add("workflowruntime", l_objRuntime);
      l_objCommand.Parameters.Add("workflowstrongname", l_objWorkflow.Properties["WorkflowStrongName"].Value.ToString());
      l_objCommand.Parameters.Add("workflowparameters", l_objWorkflowParameters);
      l_objCommand.Parameters.Add("runimmediately");
      l_objPipeLine.Commands.Add(l_objCommand);
      l_objCommandResults = l_objPipeLine.Invoke();
      l_objPipeLine = null;

      //Close the runspace
      l_objRunspace.Close();

      //Return success
      l_strReturn = "Job completed!";
      return l_strReturn;
   }
   catch (Exception objException)
   {
      //Initialize error message
      string l_strError = "";
      l_strError = "An error has occurred. The error is \"" + objException.Message.ToString() + "\". ";
      return l_strError;
   }
}

Blogs in this series:
Using Powershell to automate workflow execution within Citrix Workflow Studio
Passing parameters into a workflow within Citrix Workflow Studio
Automating workflow execution for Citrix Workflow Studio using a .NET windows application (this one)
Automating workflow execution for Citrix Workflow Studio using an ASP.NET web application






Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (2426) |

posted by Ed York

This is the second part of a four-part series on automating the execution of workflows within Citrix Workflow Studio.  In the first blog of the series, I discussed the basics for using Powershell to automate the execution of workflows.  In this blog, we will expand on that topic to discuss how we can pass parameters into the workflow, making our workflows much more dynamic and flexible for supporting different types of situations.

Understanding Global Properties
The key to passing parameters into a workflow is to use the global properties of the workflow.  You access the global properties within the Citrix Workflow Studio Designer by navigating to Workflow->Manage Global Properties from the file menu (shown below).


The Manage Global Properties dialog allows you to specify the global properties of the workflow.  Essentially, all you need to do here is to define the names of the global properties and their property type (String, Boolean, Integer, etc.).  I personally like to pre-fix my global properties with the letter "g" to make them easily identifiable when assigning them to activities.  You can also optionally define a default value for a global property if you want to.


Then within your workflow, you bind the global properties to the activities within the workflow.  When you edit a bindable property for an activity, you'll get an editor such as is shown below.  On the left-hand side, select Global Properties within the drop-down.  The global properties should all be listed and easily identifiable by the letter "g" in front of the name (if you named them this way).  Just select a global property and add it to the text editor to use it. 

When global properties are defined for a workflow, you define the values of the global properties when scheduling a job within the Workflow Studio Console




Creating a Powershell Script that passes parameters into the workflow
If you want to automate the execution of the workflow with Powershell, the Powershell script can also set the values of the global properties to pass into the workflow being executed. 

To pass parameters into the workflow, the Powershell script will have a structure similar to below.  This sample script shows how to pass two parameters into the workflow.  What we are doing here is creating a hash table that represents the name/value pairs of the global properties.  This hash table is then provided as a parameter into the schedule-workflow cmdlet.  Please note that the schedule-workflow cmdlet should be all on one line (it was split on two lines here for better readability).

#Set variables for the workflow
$strWorkflowName = "Workflow1"
$strParam1Name = "Name1"
$strParam1Value = "Value1"
$strParam2Name = "Name2"
$strParam2Value = "Value2"

#Add the Workflow Studio snap-ins to the current Powershell session
Get-PSSnapin -registered | Add-PSSnapin

#Get reference to the Workflow Studio runtime
$rt = Get-WorkflowRuntime

#Get reference to the deployed workflow
$workflow = get-deployedworkflow -workflowruntime $rt -workflowname $strWorkflowName -includeschedule

#Create hash table of parameter values to pass into workflow
$params = @{$strParam1Name = $strParam1Value; $strParam2Name = $strParam2Value}

#Schedule the workflow to run immediately
schedule-workflow -workflowruntime $rt -workflowstrongname $workflow.WorkflowStrongName
-workflowparameters $params -runimmediately


Example:
To illustrate how the passing of parameters works, let's use the SQL Server Activity Library within our workflow. This is an activity library that you can download and leverage yourself for communicating with a SQL Server database.  The beginning point of our workflow is shown below. 


In this workflow, we are using the SQLExecute activity for executing an UPDATE command on a SQL Server database.  The initial SQL UPDATE command is shown below.  Since we are hardcoding the Employee ID and Phone Number into the SQL statement here, the initial usability of this workflow is pretty limited.  It would be much better if we could make this SQL statement adaptable for different employee IDs and phone numbers.


To make this SQL statement more dynamic, we need to create global properties to represent the Employee ID and Phone Number.  Notice the prefix "g" we are using to denote the global properties.  This will make them easy to find when applying them to an activity.


Once the global properties are defined, we can use them within the SQLExecute activity.  In the screen shot below, the SQL Command is updated to reference the global Employee ID and Phone Number properties created above.


Our workflow is pretty dynamic now.  We can pass the Employee ID and Phone Number as parameters into the workflow.  When the workflow is executed, it will use the passed in values as part of this SQL statement.

The Powershell Script to automate the execution of this workflow is shown below.  Please note that the schedule-workflow cmdlet should be all on one line (it was split on two lines here for better readability).

#Set variables for the workflow
$strWorkflowName = "Workflow1"
$strParam1Name = "gEmployeeID"
$strParam1Value = "101"
$strParam2Name = "gPhoneNumber"
$strParam2Value = "555-123-4567"

#Add the Workflow Studio snap-ins to the current Powershell session
Get-PSSnapin -registered | Add-PSSnapin

#Get reference to the Workflow Studio runtime
$rt = Get-WorkflowRuntime

#Get reference to the deployed workflow
$workflow = get-deployedworkflow -workflowruntime $rt -workflowname $strWorkflowName -includeschedule

#Create hash table of parameter values to pass into workflow
$params = @{$strParam1Name = $strParam1Value; $strParam2Name = $strParam2Value}

#Schedule the workflow to run immediately
schedule-workflow -workflowruntime $rt -workflowstrongname $workflow.WorkflowStrongName
-workflowparameters $params -runimmediately


Final thoughts:
If you want to try out these Powershell scripts yourself, you'll need to follow the setup instructions as outlined in the first blog of this series. 
In the final two blogs of this series, we are going to take these Powershell scripts to the next level by converting them to an actual C# program. As you'll soon see, you'll use the information contained in these first few blogs to understand how the C# programs actually work.  Stay tuned!

Blogs in this series:
Using Powershell to automate workflow execution within Citrix Workflow Studio
Passing parameters into a workflow within Citrix Workflow Studio (this one)
Automating workflow execution for Citrix Workflow Studio using a .NET windows application
Automating workflow execution for Citrix Workflow Studio using an ASP.NET web application

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (2984) |

posted by Chris Fleck

I presented this week at the iPhone Developer Summit iPhone Developer Summit an alternative option of app development for the iPhone or any mobile device. The basic premise is to use the Tools or Development platforms you allready know to modify or build applications that can optimized for viewing on the iPhone yet actually run on XenApp servers within the datacenter.
The concept was very well received by non-developer IT Pro's and developers that are experts in other platforms, now trying to get their head around Objective C and other iPhone specific considerations. For the existing iPhone Developers the concept was foriegn and they remained skeptical. Thats OK, there is lots of room for more native iPhone apps and reason's to go mobile. As soon as users get the taste of leaving their laptop home there will allways be all those other app's or docs they will want access to. For help on getting started go to our Page on CDN

Demonstrations of Apps using these concepts available on CitrixCloud.net

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (1) | Views (3902) |

posted by Ed York

When you begin learning Workflow Studio, you quickly learn that the Workflow Studio Designer can execute workflows for initial testing purposes and the Workflow Studio Console can execute workflows as a scheduled job.  A lot of people have been asking about how you can automate the execution of a workflow from an external system, such as Powershell, a Windows application, and an ASP.NET web application.  The real power of Workflow Studio is being able to execute a workflow when you want it to run, either manually, on a schedule, or on-demand when needed by external systems. 

This is the first blog of a new series I'm starting on how you can automate the execution of workflows from external systems, beginning with Powershell.  One thing I didn't realize when I started using Workflow Studio was how much this product was connected to Powershell.  Essentially, any action you can perform within the Workflow Studio Console has an equivalent Powershell cmdlet for it.  Using these cmdlets allows us to automate the various tasks within the Workflow Studio Console, such as executing the workflows themselves.

Workflow Setup:
If you want to execute a workflow with Powershell, the workflow needs to be in the Ready state within the Workflow Studio Console.  One thing that I prefer to do to keep the Powershell script fairly short is to pre-deploy the workflow to the Jobs section in the Workflow Studio Console.  When you pre-deploy a workflow, you are just making it available to execute as a Job without actually executing it yet.  By doing this simple step ahead of time, we can actually cut our Powershell script in half.  Please note that this is just a one time step - once you deploy it to the Jobs section you really don't have to open the Workflow Studio Console again (unless you want to make changes to your workflow itself).  The two screen shots below demonstrate how to pre-deploy the workflow to the Jobs section.


 

Registration of Xceed DLLs:
The Workflow Studio cmdlets leverage a few Xceed DLLs on the system.  These Xceed DLLs are part of the Workflow Studio installation and need to be present within the global assembly cache (GAC) in order for several of the Workflow Studio cmdlets to run properly.  Workflow Studio 1.1 does not actually place these DLLs into the GAC so you need to do that manually for this release.  I was told in future releases that this step will already be done for us.

There are three Xceed DLLs you need to place into the GAC:  Xceed.Compression.dll, Xceed.FileSystem.dll, and Xceed.ZIP.dll

Drag these DLLs from the C:\Program Files\Citrix\Workflow Studio folder to the C:\Windows\Assembly folder.  This process adds them to the GAC.  The end result is shown below.



Powershell Setup:
An interesting thing to note about Powershell is that scripting is turned off by default.  You can't execute a Powershell script until you enable scripting at a desired level.  I'm not exactly sure why Microsoft chose to do that since Powershell is supposed to be a scripting language, but it is fairly easy to enable scripting.

Launch Powershell (Start->Programs->Windows Powershell 1.0->Windows Powershell) and type the following command to get the current execution setting:

Get-ExecutionPolicy

If the execution policy is set to Restricted, you need to enable script execution by typing the following command:

Set-ExecutionPolicy RemoteSigned



Powershell Script:
The table below is a sample Powershell script for executing a workflow on your Workflow Studio machine.  I've tested the Workflow Studio cmdlets pretty extensively and this seems to be the simplest script I was able to create to execute a workflow. 

To use this script in your environment, just copy and paste this script into Notepad, and rename the file as a .PS1 file.  Then update the value of the $strWorkflowName variable to be the name of the workflow you want to execute.  In my next blog, I'll explain how you can tweak this script to pass parameters into the workflow.  The script below will work for any workflow that does not require parameters.

#Set variables for the workflow
$strWorkflowName = "Workflow1"
 
#Add the Workflow Studio snap-ins to the current Powershell session 
Get-PSSnapin -registered | Add-PSSnapin
 
#Get reference to the Workflow Studio runtime
$rt = Get-WorkflowRuntime
 
#Get reference to the deployed workflow
$workflow = get-deployedworkflow -workflowruntime $rt -workflowname $strWorkflowName -includeschedule
 
#Schedule the workflow to run immediately
schedule-workflow -workflowruntime $rt -workflowstrongname $workflow.WorkflowStrongName -runimmediately

Executing the Powershell script:
After the PS1 file is created, place it within an accessible place on your Workflow Studio machine.  For example, I've placed my scripts within C:\Citrix\PowershellScripts.  One thing I found out is that you want the path to the script to have no spaces, so keep that in mind as you place your PS1 file into a directory.

Next, open the Run window and type the statement below to execute your Powershell script (my script was called ExecuteWorkflow.ps1)
           powershell.exe -noexit C:\Citrix\PowershellScripts\ExecuteWorkflow.ps1

The -noexit switch above keeps the Powershell window open after the script is executed.  If the script execution was successful, you should see a Job ID as noted below.  This tells you that the workflow was successfully executed.



Troubleshooting the Powershell script:
If you are having issues with your Powershell script, the approach I typically take for troubleshooting is to launch Powershell and execute each line of the script manually until you come across the error.  Powershell can be launched from the Start Menu (Start->Programs->Windows Powershell 1.0->Windows Powershell) or by typing Powershell.exe in the Run window.

If you receive Access Denied errors, there is a good chance that the account you are running Powershell under is not a Workflow Studio admin, or does not have permissions within Workflow Studio to execute various workflow actions.  Check that your logged on user account is either a Workflow Studio admin or has these permissions.  These permissions are set inside the Workflow Studio Console within the Security section.

Most of the commands in the script above use variables.  To see the value of a variable, use the echo statement. For example:

echo $strWorkflowName

If the variable is an object, you can also display the value of its individual properties.  For example:
echo $workflow.WorkflowStrongName

If you want to see the list of all the Workflow Studio cmdlets, use this statement:





Get-Command -PSSnapin citrix*

The output of the above statement is shown below:


If you want more information on how to use a specific Workflow Studio cmdlet, use a statement such as this:

Get-Help schedule-workflow

Blogs in this series:

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (2331) |

posted by Ed York

I just recently posted a SQL Server activity library to the Citrix Developer Network (CDN).  The SQL Server activity library allows you to execute SQL statements (SELECT, INSERT, UPDATE, DELETE, etc.) on a Microsoft SQL Server database as part of a workflow within Citrix Workflow Studio.  The activity library, setup instructions, and full source code can be downloaded here.

I actually needed this type of library for a Workflow Studio project I'm currently on.  I coded the activity library to be general enough for anyone to use within their own environments.  The environment I've been using with this activity consists of Workflow Studio 1.1 and SQL Server 2005.  I haven't tested with other versions of SQL Server, but I am providing the full source code to this library in case you need to tweak anything.

There are two activities within the SQL Server activity library:

  • SQLSelect activity - used to run SELECT queries on a database.  The output of this activity is a collection containing the query results.  Since the output is a "collection" type object, you can loop through this collection within Workflow Studio using the For Each Object activity and dump the collection contents to an XML file via the ExportToXML activity.
  • SQLExecute activity - used to run INSERT, UPDATE, and DELETE queries on a database.  The output of this activity is a string containing the number of records affected by the SQL statement.

There are five properties that need to be set on the SQLSelect/SQLExecute activities:

  • Database Server - SQL Server machine hosting the database
  • Database Name - Name of the database to connect to 
  • SQL Command - SQL statement to execute on the database 
  • SQL Username - SQL Server username for connecting to the database 
  • SQL Password - SQL Server password for connecting to the database 

The SQL Command property will be set differently based on which SQL activity you are using.  The SQLSelect activity will expect a SELECT statement here.  The SQLExecute activity will expect an INSERT, UPDATE, or DELETE statement here (essentially any non-SELECT query).



The SQL Server activity library was developed using the Workflow Studio SDK:
If you need to review the code and make changes, I highly recommend reviewing my previous blog series on using the Workflow Studio SDK.  This blog series will help you get your Visual Studio development environment up and running so you can make changes to the code. 

For the programmers out there, the activities themselves leverage the standard ADO.NET objects for connecting to a SQL Server database and executing a command.  If you are familiar with ADO.NET, then the code should be fairly straightforward to walk through.

Finally:

When you check out the CDN you'll see the full setup and usage instructions so I didn't restate them here.  The SQL queries you execute can be static (using hard-coded values) or dynamic (based on the bindable properties of other activities within the workflow).  This makes this activity pretty flexible to use in any kind of situation or query you may encounter.  Have fun and I hope this helps you out as well!

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (1772) |

posted by Roger Klorese

We hear from many of you every day, in person, by email, by Twitter, in your own blogs -- and even some ways I can't think of -- I bet some testimonials have washed up on the beach in bottles! -- about how virtualizing your business, your lab, or your own services on Citrix XenServer and Citrix Essentials for XenServer have saved you money, made your environment more responsive, and simplified management.

Now we're going to put a little bit of our money where your mouth, or keyboard, is.

Let us know how you and your company have "attained Xen" -- and we'll choose a few of our favorites each month and give them a gift to thank them.  We'll pick anywhere from one to three of them each month and give the winner a gift credit of US$100 or equivalent at Amazon, iTunes, or a major online retailer in their local area. 

Send us anywhere from fifty to 500 words.  Be creative, be specific, and let others know what XenServer has done for you.  (If your creativity runs more to the visual, we'll also be announcing a video contest in the next month or two.)

Mail your entry to findxen@citrix.com. At the end of every month, the XenServer/Essentials marketing team will choose its favorites and we'll notify the winner (or winners) by the middle of the following month.

There's a catch, of course -- we ask for the rights to use your testimonial.  (See the fine print below for details.)  At a minimum, you'll need to tell us your name and email address, so we can contact you if you win. To be considered, you'll also need to specify your company, industry, and company size, as well as your job role.  If you only want us to use your job role, industry and company size, that's fine -- but if you give us permission to use your name and your company's, we'll double the prize to US$200 or equivalent. Whether you win or not, we retain the rights to use your testimonial under the terms you choose, either anonymous or named.

It's a small token of how we value your support. 

And now, the "fine print."

ELIGIBILITY

This Contest is open to individuals who have used Citrix XenServer or Citrix Essentials for XenServer. By submitting a testimonial entry, Contestants acknowledge that their entry may be showcased on the Citrix Web site, and may also be utilized in part or in full in media stories. Entries must be submitted by an individual who is at least 18 years of age.  Void where prohibited.

HOW TO ENTER

Contestants must mail their entry to findxen@citrix.com, and in 50 to 500 words, submit their entry explaining how using Citrix XenServer or Citrix Essentials for XenServer has benefited the Contestant or the company the Contestant works for. E-mail is the only medium to enter this contest and no other means of entrance will be accepted. All entries must be submitted in English. Contest timeframe is limited and can end at anytime, as deemed by Citrix.

SELECTION OF WINNER

Each entry will be judged by a Committee designated by the Citrix XenServer/Essentials Product Marketing team. Judging will be based on the unique perspective and interesting anecdotes Contestant provides in their testimonials about how Citrix XenServer and Citrix Essentials for XenServer have enhanced the Contestant's or Company's IT infrastructure. The decisions of the Committee will be final.

CONDITIONS OF PRIZE AWARD

The top one to three selected Contestants each month will be notified by e-mail that their testimonial has been selected; a gift credit for the desired online retailer will be delivered to their e-mail address.

Failure to comply with any term or condition in these Official Rules, or if prize is returned as non-deliverable, may result in prize forfeiture, in whole or in part, and selection of an alternate potential winner. Prizes will be shipped approximately 2 to 3 weeks after each month's Contest end. Citrix will post the names of the winners  after the prize is awarded, except where prohibited by law. Winners are responsible for any applicable federal, state, or local taxes.

COPYRIGHT AND PUBLICATION

All entries and submissions become the property of Citrix. Citrix will not return any entries. By submitting a Contest entry, a Contestant: (a) assigns to Citrix all copyrights and moral rights in and to the Contest entry arising under stature and common law, and all other rights derivative therefrom, (b) grants to Citrix permission to publish, copy, and disseminate all or part of the Contest entry; and (c) grants to Citrix permission to use the Contestant's name for advertising or promotional purposes all without any royalty, compensation or other consideration to Contestant, except where prohibited by law. Contestant agrees that e-mail shall satisfy any writing requirement which may apply to intellectual property waivers, transfers, and licenses.

GENERAL TERMS AND CONDITIONS

This contest is subject to all applicable federal, state, and local laws. Void where prohibited or restricted. Participation in the Contest constitutes Contestant's full and unconditional agreement to and acceptance of these Official Rules.

Citrix is not responsible for lost, late, stolen, delayed, damaged incomplete, illegible, misdirected, or unreceived e-mails and Contest entries; for failed, partial, or garbled computer transmissions; for technical failures of any kind related to the Web site or the administration of the contest; or for any technical malfunction of any telephone network or lines, computer on-line systems, servers, access providers, computer equipment, or software. Citrix reserves the right to cancel, suspend, or modify the contest, if fraud, technical failures, viruses or bugs, beyond the reasonable control of Citrix, corrupt, impair or destroy the administration, security, fairness or integrity of the contest as determined by Citrix in their sole discretion without liability to any Contestant. Entries are subject to verification and will be declared invalid if they are illegible, forged, falsified, altered or tampered with in any way or if they violate any provision of these Official Rules.

As a condition of entering this contest, Contestant agrees that Citrix and affiliates, officers, directors, employees and agents shall not be liable for injury, loss or damage of any kind resulting from participating in this Contest or from the acceptance or use of any prize awarded. The exclusive warranty for any prize, if any, is from the manufacturer as set forth in the product documentation. All issues and questions concerning the construction, validity, interpretation and enforceability of these Official Rules, or the rights and obligations of Contestant and Citrix in connection with the contest, shall be governed by, and construed in accordance with, the laws of the State of Florida, U.S.A. without giving effect to any choice of law or conflict of law rules or provisions.

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (2752) |

posted by Chris Fleck


There are probably many scenarios that would benefit from the ability to separate XenApp servers from the data source. Unfortunately this has not been a recommended practice due to the latency incurred when moving data from one location to another. Now with the emerging availability of Private and Public Clouds and typically constrained premise space and power this capability could become even more interesting. The time to move data across the WAN securely has been the limiting factor but how about using the Citrix Repeater to accelerate the data and Access Gateway to secure it ? Yes this is possible and we wanted to provide a Proof of Concept, demo and C3 Blueprint that may be beneficial.  

This demonstration was included in the Synergy session on Citrix C3 Cloud Architecture. The client laptop located in Florida is connecting over ICA/HDX to a XenApp server hosted in the EC2 Cloud in Virginia, which is pulling data from a file server located in Santa Clara Ca. As indicated in the demo when the Repeater acceleration is enabled the time to open a 5 Megabit file is about 7 seconds. A usable experience for the document delivery example. However with the acceleration disabled the time to open the same 5 Mb file grows to about 2 minutes and unacceptable experience. A 10X+ improvement from acceleration.

Certainly this configuration has limitations and may or may not apply to your situation but it may open the possibilities to solving many app delivery and data location challenges. This example can be recreated easily following the C3 Blueprint and the AMI ( Amazon Machine Image ) template available as part of the C3 Lab in EC2. This does presume you have an available Branch Repeater and Access Gateway on premise to complete the PoC. Try it out and / or let us know what challenges this type of solution may help solve.

Also check out Craig Ellrod's Cloud Bridge post that utilizes Vyatta for a full Premise to Cloud VPN.

http://community.citrix.com/blogs/citrite/craigel/2009/06/08/Cloud Bridge

Follow me @ http://twitter.com/chrisfleck



 

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (0) | Views (4239) |

posted by Craig Ellrod

Cloud Networking is secure and robust

You can create a complete end-to-end network from one cloud network, running on XenServer, through a VPN to another network in a different cloud. All servers and hosts communicate securely over SSL VPN. Amazon Machine Images are secured by the Amazon infrastructure using security groups.

The proof of concept speaks for itself. Between the Softlayer cloud and the Amazon EC2 cloud is running a site-to-site SSL VPN using Vyatta. All of the images in this architecture are running on XenServer. This proof of concept gives rise to many networking architectures for cloud computing.

The reason for using Vyatta site-to-site SSL VPN between the Softlayer and Amazon EC2 clouds is there needs to be a secure network between the two for the transfer of data. The Vyatta AMI (Amazon Machine Image) can also function as a complete router, firewall and DNS cache. The Vyatta SSL VPN router provides security with scalability. Suppose I wanted to separate the Vyatta SSL VPN from a Vyatta OSPF router, I would just launch another instance of the Vyatta AMI.

As you can see from the network diagram and video, complete routing from the Softlayer cloud to the Amazon cloud network is seamless, without having to buy any proprietary hardware. In fact, it is very low cost compared to traditional network solutions. Virtualized networking is here, it is fast, secure and cheap.

A CloudBurst happens when Citrix Workflow Studio determines that one of the devices in the Softlayer Cloud has reached a high watermark. WFS then instructs the NetScaler VPX to start sending traffic to the Cloud - CloudBurst.

To get your own cloud, go here

Configurations used

Vyatta SSL VPN (V1) - Datacenter Configuration
Vyatta SSL VPN (V2) - Cloud Configuration
XenApp VPN Client - Cloud Configuration

Links for this solution

Vyatta for XenServer - go here
Amazon EC2 - go here
XenServer is Free! - go here
XenApp - go here
Workflow Studio - go here
XenApp VPN Client - go here
Dell Server - go here
IP Addresses - go here

Watch This


Read more news like this.

Its powerful AppExpert!

Expand Blog Post
Permalink | Twitter Post to Twitter | Comments (3) | Views (5240) |

posted by Craig Ellrod

Cloud Networking is fast

You can create a complete end-to-end network from the datacenter to the cloud. All cloud servers communicate securely over SSL VPN.

Between the datacenter and the Amazon EC2 cloud is a site-to-site SSL VPN built with Vyatta. On the XenApp server in the cloud runs the Citrix Accelerator which connects back to the Citrix Branch Repeater/WANScaler at the datacenter, to accelerate data connections. The Citrix Accelerator makes cloud computing fast, Vyatta makes it secure.

The reason for using Vyatta site-to-site SSL VPN between the datacenter and Amazon EC2 cloud is there needs to be a secure network between the two for the transfer of data. The Vyatta AMI (Amazon Machine Image) can also function as a complete router and firewall. The Vyatta SSL VPN router provides security with scalability.

As you can see from the network diagram and video, complete routing from the datacenter to the Amazon cloud network is seamless. Data resides at the datacenter and is accessed, over the SSL VPN, by the Application running in XenApp. The remote user connects to XenApp, runs the application, and the application delivers the data to the remote user, quickly and securely.

To get your own cloud, go here.

Configurations used

Vyatta SSL VPN (V1) - Datacenter Configuration
Vyatta SSL VPN (V2) - Cloud Configuration
Windows VPN Client - Cloud Configuration

Links for this solution

Vyatta - go here
Amazon EC2 - go here
XenServer is Free! - go here
XenApp - go here
XenApp VPN Client - go here
Dell Server - go here
IP Addresses - go here

Watch This


Read more news like this.

Its powerful AppExpert!

Expand Blog Post

<< Prev   1   2   3     4     5     6     7     8     9     10     11   Next >>