Skip to main content

Hi there,


I have designed, developed and deployed K2 Service Object (SrO), Smart Object (SmO) and a K2 Process (Prc) on my machine using K2 for Visual Studio. It is working absolutely fine as required.


Now I want to copy it from source machine and install all of this (SrO, SmO and Prc) onto a K2 Server on the network. Is there a way of doing this without touching K2 for Visual Studio on destination server? Can it be done by using the .dll files that are created for SmO and Prc?


PS: I am using same Names for SrO, SmO and Prc across the source and destination K2 Servers.


Ways already tried:


1) I created SrO on destination Server using ServiceBroker and SmO using SmartObjects-Services-Tester. Then I copied the Prc from source to destination server and tried to deploy. It gave me the following error


Error 1 Deploy SmartObjects: Task error: SmartObject Server Exception: Dependancy could not be created: System.Exception: Dependancy could not be created. Parent does not exist in this environment. Check Data property of exception.
   at SourceCode.Hosting.Services.DependancyService.VerifyObjects(List`1 parents)
   at SourceCode.Hosting.Services.DependancyService.CreateDepenancyBatch(Dictionary`2 depenancyBatch). SmartObject: bAchieveFormData]
Parent ID = '55a46811-82f3-4d5c-abc2-7ffd54d8c0ca'
Parent Name = 'GetForm'
Parent Class Name = ''
Parent Version = ''
Parent Extra Data = 'DynamicWebService.ServiceBroker'


Thanks


Abdul


This is a common issue when moving your SmartObjects between environments (K2 Servers) with K2 blackpearl/blackpoint.


Basically the SmartObjects are tied to a GUID of the Service Instance on the server where you first developed the SmartObject.  When you go to the new environment and recreate the Service Instance a new GUID is automatically created and of course is unique.  So when you move your SmartObject to the new environment and try to publish the SmartObject it looks for the GUID of the original Service Instance which in your case is '55a46811-82f3-4d5c-abc2-7ffd54d8c0ca' and can’t find it.


The workaround that I use to match up the Service Instance GUIDs between the different environments is the Service Instance Synchronizer tool from blackmarket which you can download at http://www.k2underground.com/groups/service_instance_synchronizer_utility/default.aspx .  There is even a video which shows how to use it.  After synchronizing the GUIDs just redeploy your SmartObject and it should now work.


 



 


Thanks Timkn


GUIDs have now been synchronized and SmO is working as required. Besides, the other query in my last post was, "how to deploy/install SmO and Prc on destination K2 server without Visual Studio?" as it is on the live network and hence strictly isolated from development tools e.g. Visual Studio. (As we deploy a web service i.e. copy .dll and .asmx, there should be a similar way of deploying SmO and Prc like copying .dll and .sodx/kprx somewhere)


Any idea about that?


Abdul


Yes, K2 blackpearl/blackpoint does provide that capability using the Msbuild utility for deploying both K2 processes as well as SmartObjects to your production K2 server.  Basically, first ensure that your production environment library is configured correctly in development.  Then in K2 Studio/Visual Studio you create a deployment package for your project which would include your SmartObjects.  You then copy the deployment package folders to the new enviornment and use the msbuild command line which would look similar to the following.  :


C:WindowsMicrosoft.NETFramework64v2.0.50727msbuild.exe "C:UsersAdministratorDocumentsK2StudioTestingobjDebugDeploymentTesting.msbuild"    /p:Environment=production


Also Take a look in the documentation under: 


K2 Studio > Deployment Package > Introduction


Application software creates environments that are isolated from the outside world. In a working environment, two similar environments may run side by side isolated from each other for security, development or performance reasons.



In many instances a development environment and a production environment will exist side by side, even on different physical networks within the same company or organization. The K2 Deployment Package provides a vehicle to redeploy K2 Packages between K2 blackpearl instances without affecting the instance or requiring the use of the instances resources.



Making use of this feature enables the developer to move their K2 Projects between environments to different servers simply and cleanly since the deployment feature packages all the process resources into a neat, compact redeploy able package.


See the menu below for more information


Create Deployment Package


- How to create a deployment package


Working With the Deployment Package


- Deployed Executable


- Individually Deployed Processes


- Working with the executables


Thanks a lot Timkn


Your post helped me a lot in solving this problem. Now I have deployed the SmO as well as Process to the destination server. The steps I followed were:


1) Build deployment package from K2 for Visual Studio in source server. 2) Copy package folder to destination server. 3) Install (If not already installed) MSDeploy on destination server. 4) Change the web.config settings in the pasted package folder according to destination environment. 5) Run the msdeploy.cmd file in the package folder with required attributes to deploy the package.


thanks again


Hi Timkn


I want to deploy my smart object that should use the Environment Field settings that are already set on destination server. I want to use these settings with my smart object. Now how do I deploy my smart object to achieve it (without specifying a property group from msbuild.cmd file) please?


Thanks


Should be as simple as modifying the .msbuild file under the Deployment folder of your deployment package.


There's the XML section in Environment section that you are switching between, it should list all the available variables - if not, just add them and remove ones you don't need.


Reply