cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
818
Views
0
Helpful
3
Replies

addPhone - loadInformation behavior changed between 10.5 and 11.5

stephan.steiner
Spotlight
Spotlight

Hi

My test yielded another functional change that is not documented.

Due to the lack of a copy function, you have to extract a template, configure it, and use addPhone to create a new phone.

In this case, the template returned a loadInformation object with the special attribute = false..

So when I take that object and send it, it is accepted, but extracting the newly created phone yields that now the phone has a special load defined, which is not what I want of course.

here's my addPhone

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.cisco.com/AXL/API/11.5">

  <soapenv:Header/>

  <soapenv:Body>

  <ns:addPhone sequence="1">

  <phone>

  <name>SEP111111110000</name>

  <description>Added phone SGRO</description>

  <product>Cisco 7941</product>

  <class>Phone</class>

  <protocol>SCCP</protocol>

  <protocolSide>User</protocolSide>

  <vendorConfig>

  <disableSpeaker>false</disableSpeaker>

  <disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>

  <forwardingDelay>1</forwardingDelay>

  <pcPort>0</pcPort>

  <garp>1</garp>

  <voiceVlanAccess>0</voiceVlanAccess>

  <autoSelectLineEnable>0</autoSelectLineEnable>

  <spanToPCPort>1</spanToPCPort>

  <loggingDisplay>1</loggingDisplay>

  <recordingTone>0</recordingTone>

  <recordingToneLocalVolume>100</recordingToneLocalVolume>

  <recordingToneRemoteVolume>50</recordingToneRemoteVolume>

  <moreKeyReversionTimer>5</moreKeyReversionTimer>

  <autoCallSelect>1</autoCallSelect>

  <g722CodecSupport>0</g722CodecSupport>

  <headsetWidebandUIControl>0</headsetWidebandUIControl>

  <handsetWidebandUIControl>0</handsetWidebandUIControl>

  <headsetWidebandEnable>0</headsetWidebandEnable>

  <handsetWidebandEnable>0</handsetWidebandEnable>

  <powerPriority>0</powerPriority>

  <displayRefreshRate>0</displayRefreshRate>

  <minimumRingVolume>0</minimumRingVolume>

  <sideToneLevel>0</sideToneLevel>

  <sendGain>0</sendGain>

  <useEnblocDialing>1</useEnblocDialing>

  </vendorConfig>

  <preemption>Default</preemption>

  <lines>

  <line>

  <index>1</index>

  <label>1000</label>

  <display>displöi</display>

  <dirn>

  <pattern>8818</pattern>

  <routePartitionName>p_phones</routePartitionName>

  </dirn>

  <ringSetting>Ring</ringSetting>

  <consecutiveRingSetting>Flash Only</consecutiveRingSetting>

  <ringSettingIdlePickupAlert>Use System Default</ringSettingIdlePickupAlert>

  <ringSettingActivePickupAlert>Use System Default</ringSettingActivePickupAlert>

  <e164Mask>044815XXXX</e164Mask>

  <mwlPolicy>Use System Policy</mwlPolicy>

  <maxNumCalls>2</maxNumCalls>

  <busyTrigger>1</busyTrigger>

  <callInfoDisplay>

  <callerName>true</callerName>

  <callerNumber>false</callerNumber>

  <redirectedNumber>false</redirectedNumber>

  <dialedNumber>true</dialedNumber>

  </callInfoDisplay>

  <recordingFlag>Call Recording Disabled</recordingFlag>

  <audibleMwi>Default</audibleMwi>

  <speedDial/>

  <partitionUsage>General</partitionUsage>

  <associatedEndusers>

  <enduser>

  <userId>UnitTest-User-22072016_115244</userId>

  </enduser>

  </associatedEndusers>

  <missedCallLogging>false</missedCallLogging>

  <recordingMediaSource>Gateway Preferred</recordingMediaSource>

  </line>

  </lines>

  <phoneTemplateName uuid="{1F9180ED-D6F1-417D-96F0-A57C42F20665}">Universal Device Template Button Layout</phoneTemplateName>

  <userLocale>English United States</userLocale>

  <services>

  <service>

  <telecasterServiceName uuid="{9F313284-5636-DEEB-BC42-6CC78F6BB60F}">Extension Mobility</telecasterServiceName>

  <name>Extension Mobility</name>

  <url>http://10.145.201.15:8080/emapp/EMAppServlet?device=#DEVICENAME#&EMCC=#EMCC#</url>

  <urlButtonIndex>0</urlButtonIndex>

  </service>

  </services>

  <singleButtonBarge>Default</singleButtonBarge>

  <joinAcrossLines>On</joinAcrossLines>

  <callInfoPrivacyStatus>Default</callInfoPrivacyStatus>

  <ignorePresentationIndicators>false</ignorePresentationIndicators>

  <dndOption>Ringer Off</dndOption>

  <dndRingSetting>Beep Only</dndRingSetting>

  <dndStatus>true</dndStatus>

  <alwaysUsePrimeLine>Default</alwaysUsePrimeLine>

  <alwaysUsePrimeLineForVoiceMessage>Default</alwaysUsePrimeLineForVoiceMessage>

  <callingSearchSpaceName uuid="{379DCBFB-069A-B6D7-A2EC-6E62BDB9940C}">css_internal</callingSearchSpaceName>

  <devicePoolName uuid="{1B1B9EB6-7803-11D3-BDF0-00108302EAD1}">Default</devicePoolName>

  <commonPhoneConfigName uuid="{AC243D17-98B4-4118-8FEB-5FF2E1B781AC}">Standard Common Phone Profile</commonPhoneConfigName>

  <networkLocation>Use System Default</networkLocation>

  <locationName uuid="{29C5C1C4-8871-4D1E-8394-0B9181E8C54D}">Hub_None</locationName>

  <loadInformation special="false">SCCP41.9-4-2SR1-1S</loadInformation>

  <useTrustedRelayPoint>Default</useTrustedRelayPoint>

  <retryVideoCallAsAudio>true</retryVideoCallAsAudio>

  <securityProfileName uuid="{1CD2CB25-C9F6-4786-A38F-1CF02DE290EE}">Universal Device Template - Model-independent Security Profile</securityProfileName>

  <useDevicePoolCgpnTransformationCss>true</useDevicePoolCgpnTransformationCss>

  <sendGeoLocation>false</sendGeoLocation>

  <ringSettingIdleBlfAudibleAlert>Default</ringSettingIdleBlfAudibleAlert>

  <ringSettingBusyBlfAudibleAlert>Default</ringSettingBusyBlfAudibleAlert>

  <networkLocale>Switzerland</networkLocale>

  <idleTimeout>1</idleTimeout>

  <idleUrl>https://CHDEVCUCM105:443/cucm-uds/xps/selfProvision</idleUrl>

  <enableExtensionMobility>true</enableExtensionMobility>

  <builtInBridgeStatus>Default</builtInBridgeStatus>

  <hlogStatus>On</hlogStatus>

  <ownerUserName uuid="c4781531-2df4-8153-35e8-9b61aefc9fbb">testuser</ownerUserName>

  <packetCaptureMode>None</packetCaptureMode>

  <packetCaptureDuration>0</packetCaptureDuration>

  <hotlineDevice>false</hotlineDevice>

  <allowCtiControlFlag>true</allowCtiControlFlag>

  <presenceGroupName uuid="{AD243D17-98B4-4118-8FEB-5FF2E1B781AC}">Standard Presence group</presenceGroupName>

  <unattendedPort>false</unattendedPort>

  <requireDtmfReception>false</requireDtmfReception>

  <rfc2833Disabled>false</rfc2833Disabled>

  <certificateOperation>No Pending Operation</certificateOperation>

  <deviceMobilityMode>Default</deviceMobilityMode>

  <remoteDevice>false</remoteDevice>

  <isActive>true</isActive>

  <isDualMode>false</isDualMode>

  <phoneSuite>Default</phoneSuite>

  <phoneServiceDisplay>Default</phoneServiceDisplay>

  <isProtected>false</isProtected>

  <mtpRequired>false</mtpRequired>

  <mtpPreferedCodec>711ulaw</mtpPreferedCodec>

  <outboundCallRollover>No Rollover</outboundCallRollover>

  <deviceTrustMode>Not Trusted</deviceTrustMode>

  <requireOffPremiseLocation>false</requireOffPremiseLocation>

  <useDevicePoolCgpnIngressDN>true</useDevicePoolCgpnIngressDN>

  <enableCallRoutingToRdWhenNoneIsActive>false</enableCallRoutingToRdWhenNoneIsActive>

  </phone>

  </ns:addPhone>

  </soapenv:Body>

</soapenv:Envelope>

and the getPhone response. As you can see, the loadInformation/@special flag was switched from false to true. And that means the phone will forever be stuck at this particular load.

I think this should not be the case. Of course you can just not send the loadInformation in the first place as a workaround.. but I think addPhone (and updatePhone) should ignore the loadInformation if special = false.

<?xml version='1.0' encoding='UTF-8'?>

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

  <soapenv:Body>

  <ns:getPhoneResponse xmlns:ns="http://www.cisco.com/AXL/API/11.5">

  <return>

  <phone ctiid="162" uuid="{D2BEC434-7E6B-ABEB-A5E1-97870C35DE48}">

  <name>SEP111111110000</name>

  <description>Added phone SGRO</description>

  <product>Cisco 7941</product>

  <model>Cisco 7941</model>

  <class>Phone</class>

  <protocol>SCCP</protocol>

  <protocolSide>User</protocolSide>

  <callingSearchSpaceName uuid="{379DCBFB-069A-B6D7-A2EC-6E62BDB9940C}">css_internal</callingSearchSpaceName>

  <devicePoolName uuid="{1B1B9EB6-7803-11D3-BDF0-00108302EAD1}">Default</devicePoolName>

  <commonDeviceConfigName/>

  <commonPhoneConfigName uuid="{AC243D17-98B4-4118-8FEB-5FF2E1B781AC}">Standard Common Phone Profile</commonPhoneConfigName>

  <networkLocation>Use System Default</networkLocation>

  <locationName uuid="{29C5C1C4-8871-4D1E-8394-0B9181E8C54D}">Hub_None</locationName>

  <mediaResourceListName/>

  <networkHoldMohAudioSourceId />

  <userHoldMohAudioSourceId />

  <automatedAlternateRoutingCssName/>

  <aarNeighborhoodName/>

  <loadInformation special="true">SCCP41.9-4-2SR1-1S</loadInformation>

  <vendorConfig>

  <disableSpeaker>false</disableSpeaker>

  <disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>

  <forwardingDelay>1</forwardingDelay>

  <pcPort>0</pcPort>

  <garp>1</garp>

  <voiceVlanAccess>0</voiceVlanAccess>

  <autoSelectLineEnable>0</autoSelectLineEnable>

  <spanToPCPort>1</spanToPCPort>

  <loggingDisplay>1</loggingDisplay>

  <recordingTone>0</recordingTone>

  <recordingToneLocalVolume>100</recordingToneLocalVolume>

  <recordingToneRemoteVolume>50</recordingToneRemoteVolume>

  <moreKeyReversionTimer>5</moreKeyReversionTimer>

  <autoCallSelect>1</autoCallSelect>

  <g722CodecSupport>0</g722CodecSupport>

  <headsetWidebandUIControl>0</headsetWidebandUIControl>

  <handsetWidebandUIControl>0</handsetWidebandUIControl>

  <headsetWidebandEnable>0</headsetWidebandEnable>

  <handsetWidebandEnable>0</handsetWidebandEnable>

  <powerPriority>0</powerPriority>

  <displayRefreshRate>0</displayRefreshRate>

  <minimumRingVolume>0</minimumRingVolume>

  <sideToneLevel>0</sideToneLevel>

  <sendGain>0</sendGain>

  <useEnblocDialing>1</useEnblocDialing>

  </vendorConfig>

  <versionStamp>{1469181168-1769A53B-B0FF-427C-B239-97E50CD7C18A}</versionStamp>

  <traceFlag>false</traceFlag>

  <mlppDomainId />

  <mlppIndicationStatus>Default</mlppIndicationStatus>

  <preemption>Default</preemption>

  <useTrustedRelayPoint>Default</useTrustedRelayPoint>

  <retryVideoCallAsAudio>true</retryVideoCallAsAudio>

  <securityProfileName uuid="{1CD2CB25-C9F6-4786-A38F-1CF02DE290EE}">Universal Device Template - Model-independent Security Profile</securityProfileName>

  <sipProfileName/>

  <cgpnTransformationCssName/>

  <useDevicePoolCgpnTransformCss>true</useDevicePoolCgpnTransformCss>

  <geoLocationName/>

  <geoLocationFilterName/>

  <sendGeoLocation>false</sendGeoLocation>

  <lines>

  <line uuid="{5CB33473-ED7A-95F2-5AF3-B18A8E0FE623}">

  <index>1</index>

  <label>1000</label>

  <display>displöi</display>

  <dirn uuid="{11D8AC7C-CEA5-F237-075D-155C385802BB}">

  <pattern>8818</pattern>

  <routePartitionName uuid="{93D21776-CAA5-9871-62F5-389D1EC89190}">p_phones</routePartitionName>

  </dirn>

  <ringSetting>Ring</ringSetting>

  <consecutiveRingSetting>Flash Only</consecutiveRingSetting>

  <ringSettingIdlePickupAlert>Use System Default</ringSettingIdlePickupAlert>

  <ringSettingActivePickupAlert>Use System Default</ringSettingActivePickupAlert>

  <displayAscii/>

  <e164Mask>044815XXXX</e164Mask>

  <dialPlanWizardId />

  <mwlPolicy>Use System Policy</mwlPolicy>

  <maxNumCalls>2</maxNumCalls>

  <busyTrigger>1</busyTrigger>

  <callInfoDisplay>

  <callerName>true</callerName>

  <callerNumber>false</callerNumber>

  <redirectedNumber>false</redirectedNumber>

  <dialedNumber>true</dialedNumber>

  </callInfoDisplay>

  <recordingProfileName/>

  <monitoringCssName/>

  <recordingFlag>Call Recording Disabled</recordingFlag>

  <audibleMwi>Default</audibleMwi>

  <speedDial />

  <partitionUsage>General</partitionUsage>

  <associatedEndusers>

  <enduser>

  <userId>UnitTest-User-22072016_115244</userId>

  </enduser>

  </associatedEndusers>

  <missedCallLogging>false</missedCallLogging>

  <recordingMediaSource>Gateway Preferred</recordingMediaSource>

  </line>

  </lines>

  <numberOfButtons>200</numberOfButtons>

  <phoneTemplateName uuid="{1F9180ED-D6F1-417D-96F0-A57C42F20665}">Universal Device Template Button Layout</phoneTemplateName>

  <speeddials/>

  <busyLampFields/>

  <primaryPhoneName/>

  <ringSettingIdleBlfAudibleAlert>Default</ringSettingIdleBlfAudibleAlert>

  <ringSettingBusyBlfAudibleAlert>Default</ringSettingBusyBlfAudibleAlert>

  <blfDirectedCallParks/>

  <addOnModules/>

  <userLocale>English United States</userLocale>

  <networkLocale>Switzerland</networkLocale>

  <idleTimeout>1</idleTimeout>

  <authenticationUrl/>

  <directoryUrl/>

  <idleUrl>https://CHDEVCUCM105:443/cucm-uds/xps/selfProvision</idleUrl>

  <informationUrl/>

  <messagesUrl/>

  <proxyServerUrl/>

  <servicesUrl/>

  <services>

  <service>

  <telecasterServiceName uuid="{9F313284-5636-DEEB-BC42-6CC78F6BB60F}">Extension Mobility</telecasterServiceName>

  <name>Extension Mobility</name>

  <url>http://10.145.201.15:8080/emapp/EMAppServlet?device=#DEVICENAME#&EMCC=#EMCC#</url>

  <urlButtonIndex>0</urlButtonIndex>

  <urlLabel/>

  <serviceNameAscii/>

  <phoneService>Standard IP Phone Service</phoneService>

  <phoneServiceCategory>XML Service</phoneServiceCategory>

  <vendor/>

  <version/>

  <priority>50</priority>

  </service>

  </services>

  <softkeyTemplateName/>

  <loginUserId />

  <defaultProfileName/>

  <enableExtensionMobility>true</enableExtensionMobility>

  <currentProfileName/>

  <loginTime />

  <loginDuration />

  <currentConfig>

  <userHoldMohAudioSourceId />

  <phoneTemplateName uuid="{1F9180ED-D6F1-417D-96F0-A57C42F20665}">Universal Device Template Button Layout</phoneTemplateName>

  <mlppDomainId />

  <mlppIndicationStatus>Default</mlppIndicationStatus>

  <preemption>Default</preemption>

  <softkeyTemplateName/>

  <ignorePresentationIndicators>false</ignorePresentationIndicators>

  <singleButtonBarge>Default</singleButtonBarge>

  <joinAcrossLines>On</joinAcrossLines>

  <callInfoPrivacyStatus>Default</callInfoPrivacyStatus>

  <dndStatus />

  <dndRingSetting>Beep Only</dndRingSetting>

  <dndOption>Ringer Off</dndOption>

  <alwaysUsePrimeLine>Default</alwaysUsePrimeLine>

  <alwaysUsePrimeLineForVoiceMessage>Default</alwaysUsePrimeLineForVoiceMessage>

  <emccCallingSearchSpaceName xsi:nil="true" uuid="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>

  <deviceName/>

  <model/>

  <product/>

  <deviceProtocol/>

  <class/>

  <addressMode/>

  <allowAutoConfig/>

  <remoteSrstOption/>

  <remoteSrstIp/>

  <remoteSrstPort/>

  <remoteSipSrstIp/>

  <remoteSipSrstPort/>

  <geolocationInfo/>

  <remoteLocationName/>

  </currentConfig>

  <singleButtonBarge>Default</singleButtonBarge>

  <joinAcrossLines>On</joinAcrossLines>

  <builtInBridgeStatus>Default</builtInBridgeStatus>

  <callInfoPrivacyStatus>Default</callInfoPrivacyStatus>

  <hlogStatus>On</hlogStatus>

  <ownerUserName uuid="c4781531-2df4-8153-35e8-9b61aefc9fbb">testuser</ownerUserName>

  <ignorePresentationIndicators>false</ignorePresentationIndicators>

  <packetCaptureMode>None</packetCaptureMode>

  <packetCaptureDuration>0</packetCaptureDuration>

  <subscribeCallingSearchSpaceName/>

  <rerouteCallingSearchSpaceName/>

  <allowCtiControlFlag>true</allowCtiControlFlag>

  <presenceGroupName uuid="{AD243D17-98B4-4118-8FEB-5FF2E1B781AC}">Standard Presence group</presenceGroupName>

  <unattendedPort>false</unattendedPort>

  <requireDtmfReception>false</requireDtmfReception>

  <rfc2833Disabled>false</rfc2833Disabled>

  <certificateOperation>No Pending Operation</certificateOperation>

  <certificateStatus>None</certificateStatus>

  <upgradeFinishTime />

  <deviceMobilityMode>Default</deviceMobilityMode>

  <remoteDevice>false</remoteDevice>

  <dndOption>Ringer Off</dndOption>

  <dndRingSetting>Beep Only</dndRingSetting>

  <dndStatus>true</dndStatus>

  <isActive>true</isActive>

  <isDualMode>false</isDualMode>

  <mobilityUserIdName/>

  <phoneSuite>Default</phoneSuite>

  <phoneServiceDisplay>Default</phoneServiceDisplay>

  <isProtected>false</isProtected>

  <mtpRequired>false</mtpRequired>

  <mtpPreferedCodec>711ulaw</mtpPreferedCodec>

  <dialRulesName/>

  <sshUserId/>

  <digestUser/>

  <outboundCallRollover>No Rollover</outboundCallRollover>

  <hotlineDevice>false</hotlineDevice>

  <secureInformationUrl/>

  <secureDirectoryUrl/>

  <secureMessageUrl/>

  <secureServicesUrl/>

  <secureAuthenticationUrl/>

  <secureIdleUrl/>

  <alwaysUsePrimeLine>Default</alwaysUsePrimeLine>

  <alwaysUsePrimeLineForVoiceMessage>Default</alwaysUsePrimeLineForVoiceMessage>

  <featureControlPolicy/>

  <deviceTrustMode>Not Trusted</deviceTrustMode>

  <confidentialAccess>

  <confidentialAccessMode />

  <confidentialAccessLevel>-1</confidentialAccessLevel>

  </confidentialAccess>

  <requireOffPremiseLocation>false</requireOffPremiseLocation>

  <cgpnIngressDN/>

  <useDevicePoolCgpnIngressDN>true</useDevicePoolCgpnIngressDN>

  <msisdn />

  <enableCallRoutingToRdWhenNoneIsActive>false</enableCallRoutingToRdWhenNoneIsActive>

  <wifiHotspotProfile/>

  <wirelessLanProfileGroup/>

  <elinGroup/>

  </phone>

  </return>

  </ns:getPhoneResponse>

  </soapenv:Body>

</soapenv:Envelope>

3 Replies 3

dstaudt
Cisco Employee
Cisco Employee

My quick read would be that the 'special' attribute is meaningful only for 'read' operations, in that AXL will present the load name to you, and indicate if it is the current default or not via 'special'.  Conversely, the 'special' attribute would not be meaningful (ignored) on write operations.

By specifying a load, you indicate that that should be the load used...importantly: for all time.  E.g. if you specify a load name XYZ which just happens to be the same as the default load at the time, and the default is changed sometime in the future (e.g. due to an upgrade), the implication is you want the phone load to remain XYZ regardless of the new default.

If you want the phone to just always use the default, then send an empty <loadInformation> element, or omit it.

Definitely odd if this behaviour changed from 10.5 to 11.5, but it sounds like it changed to be more correct/logical..?  If you disagree (i.e. if your code has to be version aware in order to work) we can attempt to raise a defect.

I always think of the copy replacement.. there you want to take an element you get from a getXX operation, change name and whatever else you need, and send it back as an addXX operation. You want to stay as close to the original as possible.. so don't touch values you don't need to touch (I'd buy you guys a round of beers (good craft beer, not industrial p***) if you deliver that copy in the future.. )

Now, if I send a loadInformation with special = false, IMHO it should come back with that info but special = false.

Otherwise we're mixing two things.. if a getPhone returns the load info even if there's no special load.. it doesn't actually take that info from the device itself, rather it has to look it up  (from device defaults.. or registration info).. I don't mind if the loadInfo comes back (IIRC in previous releases the loadInformation was only used when there was a special load.. otherwise it was empty), but then if I submit that same piece of information, it should be accepted 1:1... so if special=false, CUCM should discard that field.

Generally, I think a round trip with add and get where the get returns a different value is problematic.. and in this case VERY problematic since as you said.. it sets the load to a specific build for all times.

Gotcha, makes perfect sense.  Issue CSCvb63613 has been created to track this issue, identifying that the "special" attribute should be honored for addPhone::loadInformation

Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: