docs: function func(data) {
  				var item = forceSingleItem(data.items);
  				
  				var errorMessage = i18nUtil.formatMessage(messages["missingCredentials"], item.Type, item.Url); //$NON-NLS-0$
  				
  				var commonRetryOptions = {
  					getCancelName: function(){
  						return messages.Cancel;
  					},
  					getSubmitName: function(){
  						return messages.Ok;
  					}
  				};
  				
  				messageService.close();
  				
  				if(!data.parameters && item.parametersRequested){
  					messageService.setProgressResult({
  						Message: errorMessage,
  						Severity: "Warning" //$NON-NLS-0$
  					});
  					
  					var options = objects.mixin({}, commonRetryOptions, {
  						hasOptionalParameters: !!item.optionalParameters, 
  						optionalParams: item.optionalParameters
  					});
  					
  					data.parameters = getCommandParameters(item.parametersRequested, options, item.Params);
  					data.oldParams = item.Params;
  					commandService.collectParameters(data);
  					return;
  				}
  
  				var params = handleParamsInCommand(func, data, messages["checkApplicationState"]);
  				if(!params){
  					return;
  				}
  				
  				var launchConfToPass = objects.clone(item);
  				launchConfToPass.Params = params;
  
  				projectClient.getProjectDeployService(item.ServiceId, item.Type).then(function(service){
  					if(sharedLaunchConfigurationDispatcher){
  						item.status = {State: "PROGRESS", ShortMessage: messages["checkingStateShortMessage"]}; //$NON-NLS-1$ //$NON-NLS-0$
  						sharedLaunchConfigurationDispatcher.dispatchEvent({type: "changeState", newValue: item });
  					}
  					if(service && service.getState){
  						service.getState(launchConfToPass).then(function(result){
  							item.status = result;
  							if(sharedLaunchConfigurationDispatcher){
  								sharedLaunchConfigurationDispatcher.dispatchEvent({type: "changeState", newValue: item });
  							}
  							//try to refresh other launchConfigurations from this service,
  							//because maybe adding properties to one changed the status of others
  							if(item.project && item.project.children){
  								item.project.children.forEach(function(otherLaunch){
  									if(item.ServiceId && item.Name && item.parametersRequested){
  										if(otherLaunch.ServiceId === item.ServiceId && otherLaunch.Name !== item.Name){
  											if(sharedLaunchConfigurationDispatcher){
  												otherLaunch.status = {CheckState: true};
  												sharedLaunchConfigurationDispatcher.dispatchEvent({type: "changeState", newValue: otherLaunch });
  											}
  										}
  									}
  								});
  							}
  
  						}, function(error){
  							if(error.Retry){
  								var options = objects.mixin({}, commonRetryOptions, {
  									hasOptionalParameters: !!error.Retry.optionalParameters, 
  									optionalParams: error.Retry.optionalParameters
  								});
  								
  								messageService.setProgressResult({
  									Message: error.Message || errorMessage,
  									Severity: error.Severity || "Error" //$NON-NLS-0$
  								});
  																
  								data.parameters = getCommandParameters(error.Retry.parameters, options, params);
  								data.oldParams = params;
  								commandService.collectParameters(data);
  							} else {
  								errorHandler(error);
  								item.status = {error: error};
  								if(sharedLaunchConfigurationDispatcher){
  									sharedLaunchConfigurationDispatcher.dispatchEvent({type: "changeState", newValue: item });
  								}
  							}
  						});
  					}
  				});
  
  
  			}