Friday, July 29, 2011

SharePoint Integration Upgrade

 

There are customers come to me that they are not able to upgrade their AgilePoint Integration for SharePoint.

On their Add\Remove Program, they have the entry for AgilePoint Integration for SharePoint with v5.0. But when they run the v5.0 Service Pack 1 (v5.0 SP1) or v5.0 Service Pack 2 (v5.0 SP2), the upgrade installer gives below error:

“Please install or upgrade to AgilePoint v5.0 before installing this upgrade.”

image

This is because, the customer first run the SharePoint Integration installer (the MSI file), which will add the entry to the Add\Remove Program. This gives an illusion that it seems SharePoint Integration has been installed correctly. After this, if the customer does not use the SharePointV2IntegrationSetup.exe to deploy the SharePoint solution files (.wsp files), but instead the customer choses to manually deploy the SharePoint solution files (.wsp) using standard SharePoint stsadm tool, then the upgrade installer of v5.0 SP1 or v5.0 SP2 will not be able to detect that the SharePoint Integration has been installed.

To solve this, I recommend the customer to use same approach when SharePoint Integration was first deployed, i.e. use the stsadm tool. The details of using the stsadm tool can be found at the AgilePoint Install Guide, but here is a quick look:

To upgrade the SharePoint machine manually, right-click and extract the installer file to obtain the solution files (.wsp) files at Net20\SharePointv2\. Now upgrade the 4 solution files (Ascentn.SharePoint.SettingsList.wsp, Ascentn.SharePoint.WebParts.wsp, Ascentn.SharePoint.WFIntegration.wsp, Ascentn.SharePoint.ListForm.wsp) individually using the command line example below:

stsadm -o upgradesolution -name

     Ascentn.SharePoint.SettingsList.wsp -filename

     Ascentn.SharePoint.SettingsList.wsp –immediate -allowgacdeployment

After upgrading the solution files, run this command:

stsadm -o copyappbincontent

 

This situation can easily happened when the person first installed the SharePoint Integration left the company and did not left any documentation about what he had done. I strongly recommend you to keep the documentation and records for each upgrade you have performed, so that you can pass on the info to the person who will be doing the next upgrade.

Tuesday, July 26, 2011

API and Event available in AgilePoint Express Edition

 

There are API and Event available in AgilePoint Express Edition.

It is about human task. In the real scenario/real world, when the task is assigned to someone, it does not mean assignee will start to work on the assignment immediately. AgilePoint captures the date assigned and date completed, but it does not keep the timestamp that assignee actually starts to work on the task.

API

In this enhancement, AgilePoint provides a new API ActivateWorkItem(workItemID, bool activate, string clientData) so, application can make web service call of this function to mark user starts working on the work. In some case, it could be captured when user open the form or other ways, for example, a button on the form because user might want to check the form first and then decide to start working immediately. If user regret, application can call same web service call and activate=false, which will deactivate the work item. Behind scene, when work item gets activated, the table WF_MANUAL_WORKITEMS.ACTIVATED_DATE will be set for activation, otherwise it will be reset if it is deactivated. Beside web service API, service API is also available.

EVENT for AgileWork and AgileExtender

ActivateWorkItem call would fire an event of ‘ActivateWorkItem’, currently AgileWork and AgileExtender is able to capture the event and take certain action.

Friday, July 22, 2011

Hiding AgilePoint Setting List Feature in MySite

 

AgilePoint Setting List is used to stored all the configuration info for AgilePoint Integration for SharePoint. The access to this list shall be limited to SharePoint Administrators only.

There is a case where some end users accidentally activate this feature at their personal site, i.e. Mysite. This adds additional AgilePointSettingUrl entry in the SharePoint web.config, which messes up the configuration for SharePoint Integration.

Here is how you can hide AgilePoint Setting List Feature in MySite, so that the users do not accidently activate or deactivate it. You can add an extra attribute Hidden="TRUE" in the feature.xml file of AgilePoint Settings List Feature to hide the feature from your end users.

The default location of the feature.xml is:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES\AgilePointSettingsListFeature\feature.xml

 

Here is the sample content of the feature.xml. Add the Hidden="TRUE" at the Feature node.

<?xml version="1.0" encoding="utf-8" ?>

<Feature  Id="A379136F-8742-4f0c-9D5A-9310A4D2B80C"

                                  Title="$Resources:Feature_Title"

                                  Description="$Resources:Feature_Description"

                                  ImageUrl="AgilePoint\AgilePoint_Feature_logo.jpg"

                                  Version="12.0.0.0"

                                  Scope="Site"

                                  ReceiverAssembly="Ascentn.SharePoint.SettingsList, Version=1.0.0.0, Culture=neutral,

PublicKeyToken=f1099b605f3ea558"

                                  ReceiverClass="Ascentn.SharePoint.SettingsList.AgilePointSettingsFeatureReceiver"

                                  xmlns="http://schemas.microsoft.com/sharepoint/"

                  Hidden="TRUE">

                <ElementManifests>

                                <ElementManifest Location="ListTemplates\AgilePointSettingsElements.xml" />

                </ElementManifests>

</Feature>

Hyper-V Errors

The issue:

This happened after converting a vhd from Virtual Server 2005 to Hyper-V.

Projects in Visual Studio.NET 2008 can be built. No error message. The devenv.exe process occupied almost 100% of the CPU and keep running forever.

The attamp to repair Visual Studio 2008 does not help, but instead below error is shown.

“The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2908.”

clip_image001

Here is another error encountered.

“The procedure entry point CorGetSvc could not be located in the dynamic link library mscoree.dll”

clip_image002

The solution:

Go to Add/Remove Program, repair .NET Framework 3.5 SP1.

Configuring Windows Service (WCF) AgilePoint Server

 

There is one tricky step in configuring the Windows Service version of AgilePoint Server.

After installing the AgilePoint Server, you launch the AgilePoint Server Manager below to enter the configuration info.

image

Once you are done with entering all the info and click the ‘Update’ button, it might freeze for a while and finally display below error.

 image

This means something is preventing the Server Manager Configuration tool to enter the WCF binding elements into the web.config of Enterprise Manager. To solve this, launch the Windows Service Client Utility Tool from below default location

C:\Program Files\AgilePoint\AgilePoint Server\SVCUtilityTool\AgilePointWindowsServiceClientUtilityTool.exe

image

For the ‘Service address’ textbox, enter the http URL of AgilePoint Server. This is the tricky part. The port number shall be used in this URL is the http port number of AgilePoint Server that you entered in the AgilePoint Server Manager UI (see picture above), not the port number for Enterprise Manager.

Note that for IIS version of AgilePoint Server, the AgilePoint Server and the Enterprise Manager have to be installed at the same port number. But for Windows Service version of AgilePoint Server, the http ports of AgilePoint Server and Enterprise Manager can be different.

For the ‘Target Config’ textbox, enter the location of web.config of Enterprise Manager. Since you select a site for Enterprise Manager at the AgilePoint Server Manager tool, you can check the location of the virtual directory of the site at IIS Manager.

Click the ‘Generate’ button after this. It might take a while to execute.

If you see this error:

“The config was not generated, please check the Service address”,

image

then just launch the Services console and make sure the credential you use to run the windows service is right (Right click the AgilePoint service in the Services Console > Property > Log On tab). You might need to re-enter the username and password.

image

image

Then start the AgilePoint Server service (Right click the AgilePoint service in the Services Console > Start).

image

Also, check to make sure the path of the Enterprise Manager web.config is correct.

After this, launch the AgilePoint Windows Service Client Utility Tool and try again.

Thursday, July 21, 2011

Referencing AgilePoint Web Service

I was asked this question:

I am trying to reference the Ascentn Web Service per the documentation:

http://myserver:9000/AgilePointServer/Workflow.asmx?WSDL

I first referenced the web service as a "Web Reference", according to the instructions here:

http://crm.davidyack.com/journal/2007/10/21/referencing-web-services-with-visual-studio-2008.html

But, when I compile the proxy, I get all sorts of "duplicate definition" errors. For example:

"The namespace Workflow.Workflow already contains a definition for category".

I then referenced the web service as a "Service Reference", the Visual Studio 2008 default. However, I still get similar errors when compiling the proxy.

Suggestions?

By default, the option of Web Reference is not displayed in the Solution Explorer. As mentioned in the link, right click “Service Reference”, then choose “Add Service Reference ..”, do not enter the WSDL URL in the “Add Service Reference” windows, but instead, click on the “Advance” button at the bottom of the windows. Then, click on “Add Web Reference” on the next screen. After that, just enter the AgilePoint web service URL, click “Go” then add the web reference.

clip_image002

clip_image004

clip_image006

Wednesday, July 20, 2011

VS.NET 2010 Command Line Bug

This is an build error (Envision installer) with below message:

“ERROR: Unable to update the dependencies of the project.”

No other info about the dependencies is available in the error message.

The behavior is it can be built in IDE, but can’t be built using command line devenv.

Microsoft acknowledged this is a bug and provided an hotfix. Apply below hotfix shall solve the issue.

More details for the VS.NET 2010 bug:

https://connect.microsoft.com/VisualStudio/feedback/details/552799

Hotfix:

http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=30681

Tuesday, July 19, 2011

Custom Process Properties

View > Custom Process Properties

This command displays the Custom Process Properties dialog. This window is also a convenient way to review all of the different values used within the entire process from a single location.

The dialog also allows you to add and/or remove custom values to the drop-down lists displayed (in the Activity Properties toolbar) next to certain AgileShape properties.

Adding custom process property values provides a convenient way to easily define common values that will be used (for certain AgileShape properties) in multiple AgileShapes.

For example, adding two new “WorkPerformer” values (as shown below) will cause both values to appear in the drop down list for the Work To Perform property (as shown below) for all of the Manual and Manual with Timeout AgileShapes in the process template.

clip_image002

clip_image004

clip_image006

clip_image008

AgileWork – Overdue Work Items

AgilePoint provides you the flexible framework that you can write your custom Manual Activity, i.e. AglieWork. In the case that you need to obtain the overdue work items of the assigned participant, here is the sample code that you can use to grab the overdue work items as WFManualWorkItem objects.

private void MyAgileWork_WorkItemOverdue(Object sender, System.EventArgs e)

        {

// TODO

Logger.WriteLine("MyAgileWork_WorkItemOverdue, Activity Instance={0}", base.m_ActivityInstance.DisplayName);

Logger.WriteLine("Check Number of WorkItems…");

Logger.WriteLine("WFManualWorkItemEventArgs args = e as WFManualWorkItemEventArgs");

WFOverdueWorkItemEventArgs args = e as WFOverdueWorkItemEventArgs;

WFManualWorkItem w = args.WorkItem as WFManualWorkItem;

}

Monday, July 18, 2011

Moving File – Keep the Process Running at Target Library

One of the AgilePoint Integration for SharePoint features is that, the process is cancelled once the document is moved to target library.

In some cases, the users may want to keep the process running even the document is moved to another library. The solution for this is to associate the same process template at the target library.

clip_image002

clip_image004

Troubleshooting NLB Issue

Here is the issue:

Environment:

a) Two AgilePoint Servers  in VMWare ESX virtual environment.

b) Cisco NLB device for network load balance

c) Two SharePoints on physical machine in NLB

Symptom:

AgilePoint task list web part on SharePoint works or not work sometime.

- Error message from web part: Unable to connect AgilePoint Server. Verify the Impersonator credentials in AgilePoint Configuration List

- Check AgilePoint SharePoint log file, it HTTP 401, Unauthorized

Steps to solve the issue:

STEP1:

a) Run TestWSConn.exe (AgilePoint test tool for cluster) and connects local AgilePoint Server – worked fine

b) Run TestWSConn.exe on SharePoint machine and connects one of remote AgilePoint Servers directly (no cluster name/IP) – HTTP 401, Unauthorized

c) Run setspn.exe, TestWSConn.exe worked from remote machine

STEP2

a) Run TestWSConn.exe on SharePoint machine A and connects AgilePoint Server using cluster name/IP -- worked fine

b) Run TestWSConn.exe on SharePoint machine B and connects AgilePoint Server using cluster name/IP --  HTTP 401, Unauthorized

c) Reset IIS of AgilePoint Servers. It worked on SharePoint B, but not on SharePoint A.

d) Switch non-sticky mode to sticky mode on Cisco NLB device. Both A and B worked fine.

Challenge from customer in this case:

Usually, the team we worked with does not have permission to configure the machine, device and Windows. So they are reluctantly to bother administrator of network, domain, virtual environment. They would try to prove the issue is caused by AgilePoint product. Here is the challenge:

a) They show you the cluster name/IP works on IE by browsing AgilePoint Server web service --- means  web service works fine

Answer: browsing web service wsdl does not go through authentication, so it does not prove the authentication is fine.

b) They show EnterpriseManager works fine --- means configuration is OK

Answer: EntepriseManager is form authentication and connect to local AgilePoint Server. It does not prove authentication from remote machine is OK

c) They tell you the administrator has set principle name by running setspn.exe

Answer: deploy a generic test.asmx to two web appl one with LocalSystem and other one with AgilePoint Server AppPool (service account)

If one with LocalSystem works, but does not work AgilePoint Server AppPool. That proves principle name is not set correctly.

*Notice, LocalSystem does not need principle name

*test.asmx is a simple file with simple and generic web service of Hello()

d) They say the testing environment work fine in VMWare virtual environment --- meaning  virtual environment does not have problem

Answer: In this case, the SharePoint and AgilePoint are on one single machine. It is local connection.  Run TestWSConn.exe from workstation machine and connects to testing AgilePoint Server, not working. That proves VMWare environment has same problem.

Strategy for troubleshooting,

In general, NLB troubleshooting is hard because it could be hidden root cause or multiple cause. In this case, it was VMWare network driver, setspn and Cisco NLB configuration. Setting expectation at beginning is very important:

a) Troubleshooting may take long time. In this case, it took a week from beginning to end, total hour is 7 hours. Because the team needs to get help from other team. That takes days some time.

b) We are not expert of database DBA, not hardware engineer, not domain/network administrator and Cisco NLB expert. What we can do is to narrow down the problem and provide useful information and direction to customer.

Any proof in generic way would be easier to convince customer that is not AgilePoint issue. For example, deploy a generic and simple web service to prove principle name is not configured correctly. Customer would understand immediately and they are willing to get other team’s help.

Friday, July 15, 2011

How to disable User Account Control (UAC)

I have a client that run into this issue. In Windows 7, my client is not able to connect to AgilePoint Server from Envision. But there is no problem to connect to AgilePoint Server from a Windows XP machine using Envision. In this case, disabling UAC in the Windows 7 machine solves the issue.

Here is how to disable the UAC.

Run cmd “msconfig” and you will see following window. Select ‘Change UAC Setting’, then click on the Launch button.

clip_image001

In order to disable UAC, make sure the slider control is at the bottom as shown below.

clip_image002

Also check Event Viewer Permission and make sure current logged on user is administrator has has full control on Event Viewer.

clip_image004

Adding more fields to List Form Integration

When designing a List Form AgilePoint process, it is common that you will add on more fields along the way building the process model. Here is how you add more fields after the List Form process template is created.

Go to File > SharePoint … > Retrieve Meta Data Schema.

clip_image002

Then select the fields available. You can also specified if you want the field to be editable, read only or hidden on your list form UI.

clip_image004

Thursday, July 14, 2011

Remote Exchange Server Configuration

A client of mine tried to configure a remote Exchange Server in AgilePoint Server Configuration windows (see picture below), but it always failed to connect when clicking on the Test button.

image

In this case, for SMTP server you have to put the IP address or FQDN, not the OWA http url.