Release Notes for Service Provider Foundation 2012 SP1

System Center

Updated: June 27, 2017

Applies To: System Center 2016 - Service Provider Foundation, System Center Technical Preview

These release notes present information about issues that you might encounter when you are working with the Service Provider Foundation for System Center 2012 Service Pack 1 (SP1) . These issues might require a workaround or they might be important considerations for programming with Service Provider Foundation.

For release notes regarding installation, general usage, and using cmdlets with Service Provider Foundation, see Release Notes for Service Provider Foundation.

Service Provider Foundation may have performance issues when a tenant is assigned to more than one stamp

Description: Performance issues might occur when a tenant is assigned to more than one stamp.

Workaround: We recommend that a tenant be assigned to only one stamp.

Virtual machines cannot be stored in the library

Description: The VMM service cannot be used to store virtual machines in the library. An attempt to do this fails with an error.

Workaround: There is no workaround.

When you update a RunAsAccount, the Domain, UserName, and Password properties must be provided together

Description: Updating a Domain, UserName, or Password individually on a RunAsAccount will fail and can have unforeseen consequences on the RunAsAccount object data.

Workaround: When you update a RunAsAccount with a new UserName or Password, both values must be supplied.

You cannot query roles by name or tenant ID

Description: Roles cannot be queried for by Name or TenantID.

Workaround: Get all existing roles, and then perform your own filtering.

You cannot read resources that are associated with a user role

Description: The ability to list a Virtual Machine, Virtual Machine Template, and Services that have been assigned to a user role is not available.

Workaround: Manually get all Virtual Machines, Virtual Machine Templates, and Services, and then cross-reference the appropriate User Role property.

The HTTP GET operation on the VMNetworks collection does not return all properties

Description: When you get an existing VMNetwork object, the object that is embedded in the VPNGateway property has the AutoSelectCertificate and RunAsAccountID properties set to null.

Workaround: None. This affects only the HTTP GET operation. The HTTP PUT and POST operations still respect the VPNGateway property.

When you delete a RunAsAccount object that is in use, an error is not returned

Description: When you try and delete a RunAsAccount that is currently in use, a success will be returned instead of an error.

Workaround: After you try and delete a RunAsAccount, query for the account object to verify that it no longer exists.

When you store a virtual machine with an invalid VMM library path or an invalid virtual machine state, the wrong error is returned

Description: If a virtual machine is stored and has an invalid VMM library path or an invalid virtual machine state, such as paused or stored, the HTTP web response error will be InternalServerError, but it should be Forbidden.

Workaround: None

Operations on the Virtual Machine Manager (VMM) service may throw a timeout exception

Description: If you perform an action on the Virtual Machine Manager service that takes an excessively long time, a time-out exception may be thrown. For example, if you create a new virtual hard disk from a large .vhd file, the operation may result in a time-out.

Workaround: Increase the time-out value for the service context object. The following example sets the time-out value to five minutes.

SpfVMM.VMM vmmService = new SpfVMM.VMM(new Uri("https://contoso:8090/SC2012/VMM/Microsoft.Management.Odata.svc/"));  
vmmService.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;  
vmmService.Timeout = 5 * 60;  

Programming with JSON does not work

Description: According to the website, the use of $format=json should enable OData for JSON. But when you are using this with Service Provider Foundation, it does not work.

Workaround: Use $format=jsonverbose, or specify the HTTP accept header value application/json;odata=verbose.

Using $skiptoken or continuation with a service does not work

Description: Normally, you can page results by using the $skiptoken token, but for Service Provider Foundation this does not work. You can trigger a $skiptoken parameter by using the following code.

// This is how to trigger the $skiptoken  
SpfVMM.VMM vmmService = new SpfVMM.VMM(new Uri("https://contoso:8090/SC2012/VMM/Microsoft.Management.Odata.svc/"));  
vmmService.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;  
List<SpfVMM.Cloud> cloudsList = new List<SpfVMM.Cloud>();  
System.Data.Services.Client.DataServiceQueryContinuation<SpfVMM.Cloud> skiptoken = null;  
System.Data.Services.Client.QueryOperationResponse<SpfVMM.Cloud> response = vmmService.Clouds.Execute() as System.Data.Services.Client.QueryOperationResponse<SpfVMM.Cloud>;  
// get resources from the first page, then you can access next link URI  
foreach (SpfVMM.Cloud cloud in response)  
// get resources from the next link URI (skiptoken link)  
skiptoken = response.GetContinuation();  
if (skiptoken != null)  
    response = vmmService.Execute<SpfVMM.Cloud>(skiptoken) as System.Data.Services.Client.QueryOperationResponse<SpfVMM.Cloud>;  
    // The response variable is null when it should not be.  

Workaround: Use the $skip and $top parameters. The following example demonstrates how to use the $skip and $top parameters from C#.

var queryVMs = (from vm in vmmService.VirtualMachines  
                orderby vm.Name  
                select vm).Skip(10).Take(3);  

$skip and $top can both be used from a URI:


Resources for the VMM service will aggregate across stamps not in the scope of the tenant

Description: Querying a resource from the VMM service may include results from stamps that are not assigned to the current tenant.

Workaround: Recycle the IIS VMM AppPool, and then run the query again.

Creating virtual machines from a template may leave behind temporary templates

Description:When a virtual machine is created from a template, a temporary virtual machine template is created. This temporary template might not be automatically deleted, and it might remain in the system. This might cause problems if you try to delete resources, such as a virtual network, that the temporary template uses.

Workaround: Manually delete the template.

Querying for a cloud by ID includes two entries instead of a single entry

Description: Duplicate entry results appear when you query for a cloud by identifier, as in this example:

https://contoso:8090/SC2012/VMM/Microsoft.Management.Odata.svc/Clouds()?$filter=ID eq guid'e56fb358-8132-4da9-adff-3193a6c72b1d'

Workaround: Specify the stamp ID in the query.

Filtering a virtual machine by name does not return any result entries

Description: No result entries are returned when a virtual machine is queried for by name, by using a filter, without a StampId, as in this example:$filter=Name%20eq%20'my vm'&$top=1

Workaround: Specify the stamp ID in the query.

Lengthy operations, such as create VM, are asynchronous

Description: In the use of the Service Provider Foundation representational state transfer (REST) API, lengthy operations, such as create VM, stop VM, delete VM, are asynchronous, and calls return as soon as the requested operation is accepted.

In general, HTTP get operations are synchronous. Also synchronous are HTTP set operations on simple object properties, such as the amount of RAM for a virtual machine. All other operations that require underlying components to carry out multiple steps of actions are carried out asynchronously.

Workaround: You can periodically issue gets on the jobs object to find out the status of the operation.

Getting Started
Release Notes for Service Provider Foundation 2012 R2
Programming in Visual Studio with Service Provider Foundation Services