<?xml version="1.0"?>
<rss version="2.0"><channel><title>Atlassian Product Versions Latest Topics</title><link>https://beta.jimiwikman.se/forums/forum/113-atlassian-product-versions/</link><description>Atlassian Product Versions Latest Topics</description><language>en</language><item><title>Jira Service Management 10.0</title><link>https://beta.jimiwikman.se/forums/topic/12320-jira-service-management-100/</link><description><![CDATA[

<div class="page-sidebar-padder">
	 
</div>

<div class="page-content">
	<h1 class="page-title">
		Jira Service Management 10.0.x upgrade notes
	</h1>
</div>

<h2 id="JiraServiceManagement10.0.xupgradenotes-upgradenotestruechanges.png32Upgradenotes">
	Upgrade notes
</h2>

<h3 id="JiraServiceManagement10.0.xupgradenotes-RemovalofRESTAPIendpoints">
	Removal of REST API endpoints
</h3>

<p>
	For: <span class="status-macro aui-lozenge conf-macro output-inline" data-hasbody="false" data-macro-name="status">ADMINS</span>
</p>

<p>
	<span style="color: rgb(23,43,77);">We’ve removed the following REST API endpoints in the Jira Service Management 10.0.</span>
</p>

<div class="table-wrap">
	<div class="table-block">
		<table class="wrapped confluenceTable">
			<colgroup>
				<col>
				<col>
			</colgroup>
			<tbody>
				<tr>
					<th class="confluenceTh">
						Change
					</th>
					<th class="confluenceTh">
						Instructions
					</th>
				</tr>
				<tr>
					<td class="confluenceTd">
						<p>
							Removed <code>GET /servicedeskapi/queues/{projectKey}</code>
						</p>
					</td>
					<td class="confluenceTd">
						Use <code>GET /servicedeskapi/admin/queues/{projectKey}</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						<p>
							Removed
						</p>

						<p>
							<code>PUT /servicedeskapi/queues/include-count</code>
						</p>
					</td>
					<td class="confluenceTd">
						Use <code>PUT /servicedeskapi/admin/queues/include-count</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						Removed <code>PUT /servicedeskapi/queues/{projectKey}/include-count</code>
					</td>
					<td class="confluenceTd">
						Use <code>PUT /servicedeskapi/admin/queues/{projectKey}/include-count</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						Removed <code>PUT /servicedeskapi/queues/cache-count</code>
					</td>
					<td class="confluenceTd">
						Use <code>PUT /servicedeskapi/admin/queues/cache-count</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						Removed <code>PUT /servicedeskapi/queues/{projectKey}/cache-count</code>
					</td>
					<td class="confluenceTd">
						Use <code>PUT /servicedeskapi/admin/queues/{projectKey}/cache-count</code>
					</td>
				</tr>
			</tbody>
		</table>
	</div>
</div>

<h3 id="JiraServiceManagement10.0.xupgradenotes-Removalofthehttp-builderlibrary">
	Removal of the http-builder library
</h3>

<p>
	For: <span class="status-macro aui-lozenge conf-macro output-inline" data-hasbody="false" data-macro-name="status">ADMINS</span>
</p>

<p>
	We’ve removed the http-library in Jira Service Management 10.0 because it is not being actively maintained. If you are using this library in Groovy scripts, we recommend that you switch to the native Groovy GET and POST methods.
</p>

<h3 id="JiraServiceManagement10.0.xupgradenotes-Groovy4upgrade">
	Groovy 4 upgrade
</h3>

<p>
	For: <span class="status-macro aui-lozenge conf-macro output-inline" data-hasbody="false" data-macro-name="status">ADMINS</span>
</p>

<p>
	We’ve upgraded from Groovy 2 to Groovy 4 in Jira Service Management 10.0 for better security, functionality, and syntax support. If you’ve been using Groovy scripts in Assets, test your existing scripts in a non-production environment to make sure your scripts work properly.
</p>

<p>
	Here’s some of the important breaking changes:
</p>

<ul>
	<li>
		Changes to the syntax of the <code>switch</code> statement.
	</li>
	<li>
		Changes to the syntax of the <code>intersect()</code> method on arrays.
	</li>
	<li>
		<a class="external-link" href="https://issues.apache.org/jira/browse/GROOVY-10821" rel="external nofollow">Changes to the resolution of properties of isser/getter</a>.
	</li>
	<li>
		<code>picocli</code> package is no longer bundled, use an extra <code>@Grab</code> instead.
	</li>
	<li>
		<code>ImportCustomizer</code> is applied once per module (previously it was applied once per class).
	</li>
	<li>
		<code>groovy-jaxb</code>, <code>groovy-bsf</code>, and <code>StaticTypeCheckingVisitor#collectAllInterfacesByName</code> modules are no longer available.
	</li>
	<li>
		Antlr2 based parse is no longer available (use the new Parrot parser).
	</li>
	<li>
		Changes to the formatting of some CLI help messages.
	</li>
	<li>
		<p>
			If you run into the following issue with <code>JsonSlurper</code>, replace <code>JsonSlurper</code> with <code>Jackson</code> <code>ObjectMapper</code>.
		</p>

		<div class="code-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-plaintextbody-block">
			<pre class="language-none"><code class="language-none">java.lang.RuntimeException: Unable to load FastStringService
	at org.apache.groovy.json.internal.FastStringUtils.getService(FastStringUtils.java:56) ~[?:?]
	at org.apache.groovy.json.internal.FastStringUtils.toCharArray(FastStringUtils.java:66) ~[?:?]
	at org.apache.groovy.json.internal.BaseJsonParser.parse(BaseJsonParser.java:114) ~[?:?]
	at groovy.json.JsonSlurper.parseText(JsonSlurper.java:205) ~[?:?]</code></pre>
		</div>
	</li>
	<li>
		<p>
			<span>The following table lists the changes to the names of classes, packages, and modules.</span>
		</p>
	</li>
	<li>
		<p>
			For the full list of breaking changes, check out:
		</p>

		<ul class="ak-ul">
			<li>
				<p>
					<a class="external-link" href="https://groovy-lang.org/releasenotes/groovy-3.0.html#Groovy3.0releasenotes-Splitpackages" rel="external nofollow">Groovy 3.0 release notes</a>
				</p>
			</li>
			<li>
				<p>
					<a class="external-link" href="https://groovy-lang.org/releasenotes/groovy-4.0.html#Legacy%20consolidation" rel="external nofollow">Groovy 4.0 release notes</a>
				</p>
			</li>
		</ul>
	</li>
</ul>

<p>
	 
</p>

<div class="table-wrap">
	<div class="table-block">
		<table class="wrapped confluenceTable">
			<colgroup>
				<col>
				<col>
				<col>
			</colgroup>
			<tbody>
				<tr>
					<th class="confluenceTh">
						<strong style="text-align: left;">Class/package/module name</strong>
					</th>
					<th class="confluenceTh">
						<strong style="text-align: left;">Groovy 2</strong>
					</th>
					<th class="confluenceTh">
						<strong style="text-align: left;">Groovy 4</strong>
					</th>
				</tr>
				<tr>
					<td class="confluenceTd">
						<span style="color: rgb(23,43,77);">groovy-xml</span>
					</td>
					<td class="confluenceTd">
						<code>groovy.util</code>
					</td>
					<td class="confluenceTd">
						<code>groovy.xml</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						<span style="color: rgb(23,43,77);">groovy</span>
					</td>
					<td class="confluenceTd">
						<code>groovy.xml.QName</code>
					</td>
					<td class="confluenceTd">
						<code>groovy.namespace</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						groovy-ant
					</td>
					<td class="confluenceTd">
						<code>groovy.util</code>
					</td>
					<td class="confluenceTd">
						<code>groovy.ant</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" rowspan="3">
						groovy-console
					</td>
					<td class="confluenceTd">
						<code>groovy.inspect</code>
					</td>
					<td class="confluenceTd">
						<code>groovy.console</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						<p>
							<code>groovy.inpsect.swingui</code>
						</p>

						<p>
							<code>groovy.ui</code>
						</p>
					</td>
					<td class="confluenceTd">
						<code>groovy.console.ui</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						<code>groovy.ui.ConsoleApplet</code>
					</td>
					<td class="confluenceTd">
						Deprecated
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						groovy-groovysh
					</td>
					<td class="confluenceTd">
						<p>
							<code>org.codehaus.groovy.tools.shell</code>
						</p>
					</td>
					<td class="confluenceTd">
						<code>org.apache.groovy.groovysh</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						groovy-jmx
					</td>
					<td class="confluenceTd">
						<p>
							<code>groovy.util.GroovyMBean</code>
						</p>
					</td>
					<td class="confluenceTd">
						<code>groovy.jmx</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						groovy-nio
					</td>
					<td class="confluenceTd">
						<p>
							<code>org.codehaus.groovy.runtime.NioGroovyMethods</code>
						</p>
					</td>
					<td class="confluenceTd">
						<code>org.apache.groovy.nio.extensions.NioExtensions</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						 
					</td>
					<td class="confluenceTd">
						<p>
							<code>org.codehaus.groovy.runtime.WritablePath</code>
						</p>
					</td>
					<td class="confluenceTd">
						<code>org.apache.groovy.nio.runtime</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						groovy-swing
					</td>
					<td class="confluenceTd">
						<p>
							<code>org.codehaus.groovy.binding</code>
						</p>
					</td>
					<td class="confluenceTd">
						<code>org.apache.groovy.swing.binding</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						 
					</td>
					<td class="confluenceTd">
						<p>
							<code>groovy.model</code>
						</p>
					</td>
					<td class="confluenceTd">
						<code>groovy.swing.model</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						 
					</td>
					<td class="confluenceTd">
						<p>
							<code>groovy.inspect.swingui</code>
						</p>
					</td>
					<td class="confluenceTd">
						<code>org.apache.groovy.swing.table</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" rowspan="4">
						groovy-test
					</td>
					<td class="confluenceTd">
						<p>
							<code>org.codehaus.groovy.runtime.ScriptTestAdapter</code>
						</p>
					</td>
					<td class="confluenceTd">
						<code>org.apache.groovy.test</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						<code>groovy.transform.NotYetImplemented</code>
					</td>
					<td class="confluenceTd">
						<code>groovy.test.NotYetImplemented</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						<code>groovy.util</code>
					</td>
					<td class="confluenceTd">
						<code>groovy.test</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						<code>groovy.lang</code>
					</td>
					<td class="confluenceTd">
						<code>groovy.test</code>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd">
						GroovyClassLoader
					</td>
					<td class="confluenceTd">
						Types for <code>sourceCache</code> and <code>classCache</code> have changed from <code>Map</code> to stronger types
					</td>
					<td class="confluenceTd">
						 
					</td>
				</tr>
			</tbody>
		</table>
	</div>
</div>

<h3 id="JiraServiceManagement10.0.xupgradenotes-ExpecteddowntimeduetodatabaseupgradeinJiraSoftware10.0andJiraServiceManagement6.0">
	Expected downtime due to database upgrade in Jira Software 10.0 and Jira Service Management 6.0
</h3>

<p>
	For: <span class="status-macro aui-lozenge conf-macro output-inline" data-hasbody="false" data-macro-name="status">ADMINS</span>
</p>

<p>
	We’re changed the structure of MySQL and Oracle databases in Jira Software 10.0 and Jira Service Management 6.0 to enhance the accuracy of timestamps for operations, down to the millisecond (operations such as creating issues, updating comments, or changing statuses).
</p>

<p>
	If you’re using a MySQL or Oracle database, you’ll notice an additional upgrade downtime as some columns from the <code>jiraissue</code>, <code>jiraaction</code>, and <code>changegroup</code> tables will be migrated during the upgrade. We expect this downtime to be less than 20 minutes if you have fewer than five million issues. Note that the downtime will be proportional to your database performance, size, and the row count in the <code>jiraissue</code>, <code>jiraaction</code>, and <code>changegroup</code> tables.
</p>

<p>
	To get an accurate estimate and plan your upgrade:
</p>

<ol>
	<li>
		<p>
			Find the row counts by running the following commands in your database:
		</p>

		<div class="code-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-plaintextbody-block">
			<pre class="language-none"><code class="language-none">SELECT COUNT(*) FROM jiraissue;
SELECT COUNT(*) FROM jiraaction;
SELECT COUNT(*) FROM changegroup;</code></pre>
		</div>
	</li>
	<li>
		Use the following benchmark data provided for Amazon RDS db.m6g.8xlarge and estimate your downtime:
		<ol>
			<li>
				<code>jiraissue</code><span> table: approximately 26.527 seconds per million rows</span>
			</li>
			<li>
				<code>jiraaction</code> table: approximately 7.592 seconds per million rows
			</li>
			<li>
				changegroup table: approximately 9.468 seconds per million rows
			</li>
		</ol>
	</li>
</ol>

<p>
	For example, if you have 5 million, 8 million, and 80 million rows in the <code>jiraissue</code>, <code>jiraaction</code>, and <code>changegroup</code> tables respectively, you can expect a downtime of about 16.65 minutes.
</p>

<h3 id="JiraServiceManagement10.0.xupgradenotes-RemovalofinternalGraphQLAPIsinAssets">
	<span>Removal of internal GraphQL APIs in Assets</span>
</h3>

<p>
	For: <span class="status-macro aui-lozenge conf-macro output-inline" data-hasbody="false" data-macro-name="status">ADMINS</span>
</p>

<p>
	We have removed the internal Assets GraphQL APIs to enhance security<span style="letter-spacing: 0.0px;">, establish consistent API patterns across Jira Service Management and Assets, and to clean up our code base. </span><span style="letter-spacing: 0.0px;">We’ve migrated </span><span style="letter-spacing: 0.0px;">the APIs that are used to configure Assets icons to new internal REST endpoints.</span>
</p>

<p>
	We’ll be removing the following:
</p>

<ul>
	<li>
		GraphQL endpoint <code>/insight/graphql</code>
	</li>
	<li>
		<p>
			GraphQL queries:
		</p>

		<div class="table-wrap">
			<div class="table-block">
				<table class="wrapped confluenceTable">
					<colgroup>
						<col>
						<col>
					</colgroup>
					<tbody>
						<tr>
							<th class="confluenceTh">
								Query name
							</th>
							<th class="confluenceTh">
								Description
							</th>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>findObjectSchemas</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Find object schemas for provided filter. If no filter is provided, all object schemas will be returned.
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>objectSchema</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Get an object schema by its ID
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>findObjectTypes</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Find object types for provided filter. If no filter is provided, all object types will be returned.
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>findObjectTypeRelations</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Find related object types
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>objectType</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Get an object type by its ID
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>icon</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Get an icon by its ID
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>globalIconTheme</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Get the global icon theme
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>findObjects</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Find objects for provided filter. If no filter is provided, all objects will be returned.
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>findObjectReferences</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Find inbound and outbound references for the given object
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>findStatusTypes</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Find status types for provided the filter. If no filter is provided, all object status types will be returned.
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>findReferenceTypes</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Find reference types for the provided filter
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>object</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Get an object by its ID
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>findObjectTypeAttributes</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Find object type attributes for provided filter. If no filter is provided, all object type attributes will be returned.
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>objectTypeAttribute</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Get an object type attribute by its ID
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>findUniqueObjectAttributeValues</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Find unique object attribute values for a given object type attribute
								</p>
							</td>
						</tr>
					</tbody>
				</table>
			</div>
		</div>
	</li>
	<li>
		<p>
			GraphQL mutations:
		</p>

		<div class="table-wrap">
			<div class="table-block">
				<table class="wrapped confluenceTable">
					<colgroup>
						<col>
						<col>
					</colgroup>
					<tbody>
						<tr>
							<th class="confluenceTh">
								Mutation name
							</th>
							<th class="confluenceTh">
								Description
							</th>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>createObjectSchema</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Create a new object schema
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>updateObjectSchema</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Update an existing object schema's name or description
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>copyObjectSchema</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Copy an existing object schema
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>deleteObjectSchema</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Delete an existing object schema
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>createObjectType</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Create a new object type
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>updateObjectType</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Update an existing object type
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>updateObjectTypePosition</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Change the position of an object type in the object types structure
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>copyObjectType</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Copy an existing object type
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>deleteObjectType</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Delete an existing object type
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>createObject</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Create a new object
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>updateObject</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Update an existing object
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>deleteObject</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Delete an existing object
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>createObjectTypeAttribute</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Create a new object type attribute
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>updateObjectTypeAttribute</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Update an existing object type attribute
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>configureObjectTypeAttribute</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Change configuration of the object type attribute
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>updateObjectTypeAttributePosition</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Change the position of an object type attribute in attribute list
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>deleteObjectTypeAttribute</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Delete an existing object type attribute
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>createIcon</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Create new icon
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>updateIcon</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Update an existing icon
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>deleteIcon</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Delete an existing icon
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>configureGlobalIconTheme</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Configure the global icon theme
								</p>
							</td>
						</tr>
						<tr>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									<code>resetGlobalIconTheme</code>
								</p>
							</td>
							<td class="confluenceTd" style="text-align: left;">
								<p>
									Reset the global icon theme to its default configuration
								</p>
							</td>
						</tr>
					</tbody>
				</table>
			</div>
		</div>
	</li>
</ul>

<p>
	 
</p>

<h3 id="JiraServiceManagement10.0.xupgradenotes-Removalofpreviouslydeprecatedfeatureflags">
	Removal of previously deprecated feature flags
</h3>

<p>
	In this release, we’ve removed the following feature flags:
</p>

<ul>
	<li>
		<code>com.atlassian.jira.agile.darkfeature.burnupchart</code>
	</li>
	<li>
		<code>optimistic.transitions</code>
	</li>
	<li>
		<code>com.atlassian.jira.advanced.audit.log</code>
	</li>
	<li>
		<code>velocity.chart.ui</code>
	</li>
	<li>
		<code>jira.quick.search</code>
	</li>
	<li>
		<code>com.atlassian.jira.custom.csv.escaper</code>
	</li>
	<li>
		<code>atlassian.cdn.static.assets</code>
	</li>
	<li>
		<code><a class="external-link" href="http://jira.users.and.roles.page.in" rel="external nofollow">jira.users.and.roles.page.in</a>.react</code>
	</li>
</ul>

<p>
	All features previously hidden behind those feature flags were enabled by default.
</p>

<h3 id="JiraServiceManagement10.0.xupgradenotes-BreakingchangestotheJavaAPI">
	Breaking changes to the Java API
</h3>

<p>
	In this release, we've removed several deprecated methods and classes. Additionally, we’ve made adjustments to a group of methods which involved modifying the signatures and return types.
</p>

<div class="expand-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<a class="expand-block-expand-button" href="https://confluence.atlassian.com/servicemanagement/jira-service-management-10-0-x-upgrade-notes-1387597543.html#" rel="external nofollow"><svg aria-labelledby="title-9tlglob" class="expand-block-expand-icon" focusable="false" height="20" role="img" viewbox="0 0 20 20" width="20"> </svg></a>
</div>

<div class="expand-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<a class="expand-block-expand-button" href="https://confluence.atlassian.com/servicemanagement/jira-service-management-10-0-x-upgrade-notes-1387597543.html#" rel="external nofollow"><svg aria-labelledby="title-9tlglob" class="expand-block-expand-icon" focusable="false" height="20" role="img" viewbox="0 0 20 20" width="20"> </svg> <span>See the full list of changes</span> </a>

	<div class="expand-block-content-wrapper">
		<div class="expand-block-content">
			<p>
				Here’s what’s been changed:
			</p>

			<div class="table-wrap">
				<div class="table-block">
					<table class="wrapped fixed-width confluenceTable" style="margin-left: 0.0px;">
						<colgroup>
							<col style="width: 743.0px;">
							<col style="width: 705.0px;">
							<col style="width: 885.0px;">
						</colgroup>
						<tbody>
							<tr>
								<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Classes
									</p>
								</th>
								<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Changed symbols
									</p>
								</th>
								<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Instructions
									</p>
								</th>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.customfields.CustomFieldType</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getNonnullCustomFieldProvider()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getNonNullCustomFieldProvider()</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul class="ak-ul">
										<li>
											<p>
												<code>com.atlassian.jira.issue.customfields.vdi.NonNullCustomFieldProvider</code>
											</p>
										</li>
										<li>
											<p>
												<code>com.atlassian.jira.issue.customfields.DefaultNonNullCustomFieldProvider</code>
											</p>
										</li>
									</ul>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getCustomFieldInfo(com.atlassian.jira.issue.Issue)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getCustomFieldInfo(java.util.List issues)</code> instead.<br>
										You now need to implement <code class="code cc-1o5d2cw">#getCustomFieldInfo(java.util.List&lt;com.atlassian.jira.issue.Issue&gt; issues)</code> in every class you were previously implementing <code class="code cc-1o5d2cw">#getCustomFieldInfo(com.atlassian.jira.issue.Issue issue)</code>.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul class="ak-ul">
										<li>
											<p>
												<code>com.atlassian.jira.issue.customfields.NonnullCustomFieldProvider</code>
											</p>
										</li>
										<li>
											<p>
												<code>com.atlassian.jira.issue.customfields.persistence.DefaultNonnullCustomFieldProvider</code>
											</p>
										</li>
										<li>
											<p>
												<code>com.atlassian.jira.issue.customfields.CustomFieldPrefetchedData</code>
											</p>
										</li>
									</ul>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole classes removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.issue.customfields.vdi.CustomFieldPrefetchedData</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul class="ak-ul">
										<li>
											<p>
												<code>com.atlassian.jira.issue.index.indexers.FieldIndexer</code>
											</p>
										</li>
										<li>
											<p>
												<code>com.atlassian.jira.issue.index.indexers.impl.AbstractCustomFieldIndexer</code>
											</p>
										</li>
										<li>
											<p>
												<code>com.atlassian.jira.issue.customfields.impl.TextCFType</code>
											</p>
										</li>
									</ul>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#addIndex(org.apache.lucene.document.Document, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.customfields.CustomFieldPrefetchedData)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#addIndex(org.apache.lucene.document.Document, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.customfields.vdi.CustomFieldPrefetchedData)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.index.indexers.impl.AbstractCustomFieldIndexer</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#addDocumentFieldsNotSearchable(org.apache.lucene.document.Document doc, com.atlassian.jira.issue.Issue issue, com.atlassian.jira.issue.customfields.CustomFieldPrefetchedData prefetchedData) </code>removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#addDocumentFieldsNotSearchable(org.apache.lucene.document.Document, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.customfields.vdi.CustomFieldPrefetchedData)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.index.indexers.impl.AbstractCustomFieldIndexer</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#addDocumentFieldsSearchable(org.apache.lucene.document.Document doc, com.atlassian.jira.issue.Issue issue, com.atlassian.jira.issue.customfields.CustomFieldPrefetchedData prefetchedData) </code>removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#addDocumentFieldsSearchable(org.apache.lucene.document.Document, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.customfields.vdi.CustomFieldPrefetchedData)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.user.search.UserSearchParams</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										All public constructors removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">UserSearchParams.Builder</code> to construct an instance of <code class="code cc-1o5d2cw">UserSearchParams</code> instead of using the constructor.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.user.search.UserSearchParams</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#builder()</code> behavior changed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										The behavior of this method changed, it was left for convenience. It now mirrors the behavior of <code class="code cc-1o5d2cw">UserSearchParams.builder(MAXIMUM_RESULTS)</code>.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.util.collect.CollectionUtil</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#filter(Collection&lt;T&gt;, Predicate&lt;? super T&gt;)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use standard <code class="code cc-1o5d2cw">Stream#filter(Predicate&lt;?&gt;)</code> and appropriate <code class="code cc-1o5d2cw">Stream#collect(...)</code> call.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.security.GlobalPermissionEntry</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getGlobalPermissionType()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getPermissionKey()</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.security.JiraAuthenticationContext</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getI18nBean()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getI18nHelper()</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.security.JiraAuthenticationContext</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getText(java.lang.String)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getText()</code> method on <code class="code cc-1o5d2cw">#getI18nHelper()</code>.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.sharing.ShareManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#hasPermission(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.sharing.SharedEntity)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#isSharedWith(com.atlassian.crowd.embedded.<span>api</span>.User, SharedEntity)</code> to get the same logic. Permission checks should be done in the service layer according to this information.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.user.preferences.JiraUserPreferences</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole class removed from public <span>API</span>.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										You should not construct user preferences directly. Request them through the <code class="code cc-1o5d2cw">UserPreferencesManager</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.util.collect.MapBuilder</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#toFastMap()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">ImmutableMap</code> directly instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.util.collect.MapBuilder</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#toImmutableMap()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#toMap()</code> instead, or consider using <code class="code cc-1o5d2cw">ImmutableMap</code> if the map doesn't need to accept nulls.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.util.index.Contexts</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#nullContext()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.task.context.Contexts#nullContext()</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.util.JiraDurationUtils</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#onClearCache(com.atlassian.jira.event.ClearCacheEvent)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use the <code class="code cc-1o5d2cw">DurationFormatChanged</code> event instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.util.JiraDurationUtils</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#start()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										No replacement.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.web.action.issue.IssueCreationHelperBean</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getProvidedFieldNames(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.Issue)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Avoid using <code class="code cc-1o5d2cw">IssueCreationHelperBean</code> class as it’ll be removed. Before it happens, use <code class="code cc-1o5d2cw">#getProvidedFieldNames(com.atlassian.jira.issue.Issue)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.web.bean.MultiBulkMoveBean</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#setTargetProject(org.ofbiz.core.entity.GenericValue)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#setTargetProject(com.atlassian.jira.project.Project)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.web.util.HelpUtil.HelpPath</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getSimpleUrl()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getUrl()</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.web.util.OutlookDate</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul>
										<li>
											<code>#format()</code>
										</li>
										<li>
											<code>#getDateTimePickerFormatSample(java.util.Date)</code>
										</li>
									</ul>

									<p>
										removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.datetime.DateTimeFormatter#format(java.util.Date)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.web.util.OutlookDate</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul>
										<li>
											<code>#getCompleteDateFormat()</code>
										</li>
										<li>
											<code>#getDatePickerFormat()</code>
										</li>
										<li>
											<code>#getDateTimePickerFormat()</code>
										</li>
									</ul>

									<p>
										removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.datetime.DateTimeFormatter#getFormatHint()</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.web.util.OutlookDate</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getNow() </code>removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">java.util.Date#Date()</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.permission.SchemePermissions</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole class removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.security.PermissionManager</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.permission.Permission</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole class removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.security.PermissionManager</code> or <code class="code cc-1o5d2cw">com.atlassian.jira.security.GlobalPermissionManager</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.attachment.AttachmentZipKit</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole class removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.issue.AttachmentIndexManager</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.util.NotNull</code> (annotation)
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole class removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">javax.annotation.Nonnull</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.security.PermissionManager</code> including its subclasses:
									</p>

									<ul>
										<li>
											<code>com.atlassian.jira.security.PublicAccessPermissionManager</code>
										</li>
										<li>
											<code>com.atlassian.jira.security.ApplicationRequiredPermissionManager</code>
										</li>
										<li>
											<code>com.atlassian.jira.security.DefaultPermissionManager</code>
										</li>
										<li>
											<code>com.atlassian.jira.security.SubvertedPermissionManager</code>
										</li>
									</ul>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul>
										<li>
											<code>getProjects(int, com.atlassian.jira.user.ApplicationUser)</code>
										</li>
										<li>
											<code>getProjects(int permissionId, ApplicationUser user, ProjectCategory projectCategory)</code>
										</li>
									</ul>

									<p>
										removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use supported <code class="code cc-1o5d2cw">getProjects</code> method, for example:
									</p>

									<ul class="ak-ul">
										<li>
											<p>
												<code class="code cc-1o5d2cw">com.atlassian.jira.security.PermissionManager#getProjects(com.atlassian.jira.security.plugin.ProjectPermissionKey, com.atlassian.jira.user.ApplicationUser)</code>
											</p>
										</li>
										<li>
											<p>
												<code class="code cc-1o5d2cw">com.atlassian.jira.security.PermissionManager#getProjects(com.atlassian.jira.security.plugin.ProjectPermissionKey, com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.project.ProjectCategory)</code>
											</p>
										</li>
									</ul>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.help.HelpUrlsParser</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul>
										<li>
											<code>#defaultUrl(String, String)</code>
										</li>
										<li>
											<code>#onDemand(boolean)</code>
										</li>
									</ul>

									<p>
										removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.help.HelpUrlsParserBuilderFactory</code> to construct new <code class="code cc-1o5d2cw">HelpUrlsParse</code> instance.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.imports.project.mapper.ProjectImportIdMapper</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getValuesFromImport()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getRegisteredOldIds()</code> (and <code class="code cc-1o5d2cw">#getKey()</code> if needed) instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.imports.project.mapper.ProjectRoleActorMapper</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getAllProjectRoleActors()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use the properly typed method <code class="code cc-1o5d2cw">#getProjectRoleActors()</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.comments.CommentManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getProjectRole(java.lang.Long)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.security.roles.ProjectRoleManager#getProjectRole(Long)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.fields.layout.field.FieldLayoutStorageException</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole class removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										No replacement
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.fields.rest.json.CommentBeanFactory</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#createRenderedBean(com.atlassian.jira.issue.comments.Comment)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#createRenderedBean(com.atlassian.jira.issue.comments.Comment, com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.util.EmailFormatter)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.index.ReindexAllCompletedEvent</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul>
										<li>
											<code>#shouldUpdateReplicatedIndex()</code>
										</li>
										<li>
											<code>#ReindexAllCompletedEvent(long)</code>
										</li>
										<li>
											<code>#ReindexAllCompletedEvent(long, boolean, boolean)</code>
										</li>
									</ul>

									<p>
										removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#shouldNotifyCluster()</code> instead.
									</p>

									<p>
										Do not construct internal <code class="code cc-1o5d2cw">ReindexAllCompletedEvent</code> class.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.index.ReindexAllStartedEvent</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul>
										<li>
											<code>#shouldUpdateReplicatedIndex()</code>
										</li>
										<li>
											<code>#ReindexAllStartedEvent()</code>
										</li>
										<li>
											<code>#ReindexAllStartedEvent(boolean, boolean)</code>
										</li>
										<li>
											<code>#ReindexAllStartedEvent(boolean, boolean, com.atlassian.jira.issue.index.IssueIndexingParams, com.atlassian.jira.config.ReindexMessage)</code>
										</li>
									</ul>

									<p>
										removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#shouldNotifyCluster()</code> instead.
									</p>

									<p>
										Don't construct internal <code class="code cc-1o5d2cw">ReindexAllStartedEvent</code> class.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.project.version.VersionService</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#delete(JiraServiceContext, ValidationResult)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.bc.project.version.VersionService#deleteVersionAndSwap</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.project.version.VersionService</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#deleteVersion(ApplicationUser, Version, Option&lt;Version&gt;, Option&lt;Version&gt;) </code>removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.project.version.VersionManager#deleteVersionAndSwap</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.license.JiraLicenseService.ValidationResult</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getLicenseVersion()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getLicenseDetails().getLicenseVersion()</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.license.JiraLicenseService.ValidationResult</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getTotalUserCount()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use one of the following:
									</p>

									<ul class="ak-ul">
										<li>
											<p>
												<code class="code cc-1o5d2cw">com.atlassian.jira.application.ApplicationAuthorizationService#getUserCount(ApplicationKey)</code>
											</p>
										</li>
										<li>
											<p>
												<code class="code cc-1o5d2cw">com.atlassian.jira.user.util.UserManager#getTotalUserCount()</code>
											</p>
										</li>
									</ul>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.portal.PortalPageService</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#updatePortalPageUnconditionally(com.atlassian.jira.bc.JiraServiceContext, com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.portal.PortalPage) </code>removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use one of the following:
									</p>

									<ul class="ak-ul">
										<li>
											<p>
												<code class="code cc-1o5d2cw">#updatePortalPageOwner</code>
											</p>
										</li>
										<li>
											<p>
												<code class="code cc-1o5d2cw">#updatePortalPage</code>
											</p>
										</li>
										<li>
											<p>
												<code class="code cc-1o5d2cw">PortalPageManager#update</code>
											</p>
										</li>
									</ul>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.project.version.VersionService</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul>
										<li>
											<code>#validateVersionDetails(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.project.version.Version, java.lang.String, java.lang.String)</code>
										</li>
										<li>
											<code>#validateReleaseDate(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.project.version.Version, java.lang.String)</code>
										</li>
									</ul>

									<p>
										removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#validateUpdate(com.atlassian.jira.user.ApplicationUser,com.atlassian.jira.bc.project.version.VersionService.VersionBuilder)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.user.UserService</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#validateRemoveUserFromApplication(com.atlassian.jira.user.ApplicationUser, com.atlassian.application.api.ApplicationKey)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#validateRemoveUserFromApplication(com.atlassian.jira.user.ApplicationUser,com.atlassian.jira.user.ApplicationUser,com.atlassian.application.<span>api</span>.ApplicationKey)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.customfield.CustomFieldDefinition</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#CustomFieldDefinition()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#builder()</code> to construct the instance.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.issue.comment.CommentService</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul>
										<li>
											<code>#isGroupVisiblityEnabled()</code> renamed to <code>#isGroupVisibilityEnabled()</code>
										</li>
										<li>
											<code>#isProjectVisiblityEnabled()</code> renamed to <code>#isProjectRoleVisibilityEnabled()</code>
										</li>
									</ul>

									<p>
										removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use method with the <code class="code cc-1o5d2cw">visiblity</code> typo corrected to <code class="code cc-1o5d2cw">visibility</code>.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.issue.comment.CommentService</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#isValidCommentData(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.Issue, java.lang.String, java.lang.String, com.atlassian.jira.util.ErrorCollection)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use<br>
										<code class="code cc-1o5d2cw">#isValidCommentVisibility(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.Issue, com.atlassian.jira.bc.issue.visibility.Visibility, com.atlassian.jira.util.ErrorCollection)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.issue.comment.CommentService.CommentParameters</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul>
										<li>
											<code>#getGroupLevel()</code>
										</li>
										<li>
											<code>#getRoleLevelId()</code>
										</li>
									</ul>

									<p>
										removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use the <code class="code cc-1o5d2cw">#getVisibility()</code> method returning Visibility instance. Example of use that returns <code class="code cc-1o5d2cw">io.atlassian.fugue.Option&lt;String&gt;</code> instance with appropriate group level value:<br>
										<code class="code cc-1o5d2cw">#getVisibility().accept(VisibilityVisitors.returningGroupLevelVisitor())</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.issue.util.VisibilityValidator</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul>
										<li>
											<code>#isProjectRoleVisiblityEnabled()</code> renamed to <code>#isProjectRoleVisibilityEnabled()</code>
										</li>
										<li>
											<code>isGroupVisiblityEnabled()</code> renamed to <code>#isGroupVisibilityEnabled()</code>
										</li>
									</ul>

									<p>
										removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use methods with the <code class="code cc-1o5d2cw">visiblity</code> typo corrected to <code class="code cc-1o5d2cw">visibility</code>.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.issue.util.VisibilityValidator</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#isValidVisibilityData(com.atlassian.jira.bc.JiraServiceContext, java.lang.String, com.atlassian.jira.issue.Issue, java.lang.String, java.lang.String)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#isValidVisibilityData(com.atlassian.jira.bc.JiraServiceContext, String, com.atlassian.jira.issue.Issue, com.atlassian.jira.bc.issue.visibility.Visibility)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul>
										<li>
											<code>com.atlassian.jira.bc.issue.worklog.WorklogInputParameters</code>
										</li>
										<li>
											<code>com.atlassian.jira.bc.issue.worklog.WorklogInputParametersImpl</code>
										</li>
									</ul>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul>
										<li>
											<code>#getGroupLevel()</code>
										</li>
										<li>
											<code>#getRoleLevelId()</code>
										</li>
									</ul>

									<p>
										removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use the <code class="code cc-1o5d2cw">#getVisibility()</code> method returning Visibility instance.
									</p>

									<p>
										Example of use that returns <code class="code cc-1o5d2cw">io.atlassian.fugue.Option&lt;String&gt;</code> instance with appropriate group level value:<br>
										<code class="code cc-1o5d2cw">#getVisibility().accept(VisibilityVisitors.returningGroupLevelVisitor())</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bulkedit.BulkOperationManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getBulkOperations()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getProgressAwareBulkOperations()</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bulkedit.BulkOperationManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#addBulkOperation(String, Class)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use #<code class="code cc-1o5d2cw">addProgressAwareBulkOperation(String, Class)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bulkedit.BulkOperationManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getOperation(String)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getProgressAwareOperation(String)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bulkedit.operation.BulkOperation</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole class removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.bulkedit.operation.ProgressAwareBulkOperation</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.config.ConstantsManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#storeIssueTypes(java.util.List&lt;org.ofbiz.core.entity.GenericValue&gt;)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#updateIssueType(String, String, Long, String, String, Long)</code> or <code class="code cc-1o5d2cw">recalculateIssueTypeSequencesAndStore(java.util.List)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.config.properties.LookAndFeelBean</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getVersion()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getSettingsHash()</code> to get the state of Look and feel.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.config.properties.LookAndFeelBean</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#updateVersion(long)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#updateSettingsHash()</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.config.SubTaskManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#insertSubTaskIssueType(java.lang.String, java.lang.Long, java.lang.String, java.lang.String) </code><span>removed.</span>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#insertSubTaskIssueType(String,Long,String,Long)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.config.SubTaskManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#updateSubTaskIssueType(java.lang.String, java.lang.String, java.lang.Long, java.lang.String, java.lang.String)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#updateSubTaskIssueType(String,String,Long,String,Long)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul>
										<li>
											<code>com.atlassian.jira.event.issue.IssueWatcherAddedEvent</code>
										</li>
										<li>
											<code>com.atlassian.jira.event.issue.IssueWatcherDeletedEvent</code>
										</li>
									</ul>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getUser()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getApplicationUser()</code> instead
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.event.mail.EmailQueueFlashedEvent</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole class removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#com.atlassian.jira.event.mail.EmailQueueFlushedEvent</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Deprecated audit <span>API</span> code:
									</p>

									<ul>
										<li>
											<code>com.atlassian.jira.auditing.AssociatedItem</code>
										</li>
										<li>
											<code>com.atlassian.jira.auditing.ChangedValue</code>
										</li>
										<li>
											<code>com.atlassian.jira.auditing.AuditingCategory</code>
										</li>
										<li>
											<code>com.atlassian.jira.auditing.AuditingFilter</code>
										</li>
										<li>
											<code>com.atlassian.jira.auditing.RecordRequest</code>
										</li>
										<li>
											<code>com.atlassian.jira.auditing.AuditRecord</code>
										</li>
									</ul>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole classes removed from public <span>API</span>.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use the following <span>API</span> code instead:
									</p>

									<ul class="ak-ul">
										<li>
											<p>
												<code class="code cc-1o5d2cw">com.atlassian.audit.entity.AuditResource</code>
											</p>
										</li>
										<li>
											<p>
												<code class="code cc-1o5d2cw">com.atlassian.audit.entity.ChangedValue</code>
											</p>
										</li>
										<li>
											<p>
												<code class="code cc-1o5d2cw">com.atlassian.jira.auditing.AuditCategory</code>
											</p>
										</li>
										<li>
											<p>
												<code class="code cc-1o5d2cw">com.atlassian.audit.<span>api</span>.AuditQuery</code>
											</p>
										</li>
										<li>
											<p>
												<code class="code cc-1o5d2cw">com.atlassian.audit.entity.AuditEvent</code>
											</p>
										</li>
										<li>
											<p>
												<code class="code cc-1o5d2cw">com.atlassian.audit.entity.AuditEntity</code>
											</p>
										</li>
									</ul>

									<p>
										For more details, <a class="external-link" href="https://developer.atlassian.com/server/jira/platform/migrating-to-new-jira-audit-log-java-api/#migrating-to-the-new-jira-audit-log-java-api" rel="external nofollow" style="text-decoration: none;">refer to the migration guide</a>.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul>
										<li>
											<code>com.atlassian.jira.bc.whitelist.WhitelistService</code>
										</li>
										<li>
											<code>com.atlassian.jira.bc.whitelist.WhitelistManager</code>
										</li>
									</ul>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole classes removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.plugins.whitelist.WhitelistService</code> and <code class="code cc-1o5d2cw">com.atlassian.plugins.whitelist.OutboundWhitelist</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<ul>
										<li>
											<code>com.atlassian.jira.issue.search.managers.IssueSearcherManager</code>
										</li>
										<li>
											<code>com.atlassian.jira.issue.search.managers.SearchHandlerManager</code>
										</li>
									</ul>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getSearcherGroups(com.atlassian.jira.issue.search.SearchContext)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getSearcherGroups()</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.search.managers.SearchHandlerManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getSearchersByClauseName(com.atlassian.jira.user.ApplicationUser, java.lang.String, com.atlassian.jira.issue.search.SearchContext)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getSearchersByClauseName(com.atlassian.crowd.embedded.<span>api</span>.User,String)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.search.searchers.util.IndexedInputHelper</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getAllIndexValuesForMatchingClauses(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.search.ClauseNames, com.atlassian.query.Query, com.atlassian.jira.issue.search.SearchContext)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getAllIndexValuesForMatchingClauses(com.atlassian.jira.user.ApplicationUser,com.atlassian.jira.issue.search.ClauseNames,com.atlassian.query.Query)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.search.searchers.util.IndexedInputHelper</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getAllNavigatorValuesForMatchingClauses(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.search.ClauseNames, com.atlassian.query.Query, com.atlassian.jira.issue.search.SearchContext)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getAllNavigatorValuesForMatchingClauses(ApplicationUser,com.atlassian.jira.issue.search.ClauseNames,com.atlassian.query.Query)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.util.IssueUpdateBean</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getUser()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getApplicationUser()</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.jql.query.AbstractLocalDateOperatorQueryFactory</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole class removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.jql.util.JqlLocalDateSupport#getLocalDatesFromQueryLiterals(java.util.List)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.jql.util.JqlIssueSupport</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getIssues(java.lang.String)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getIssue(java.lang.String)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.jql.util.JqlIssueSupport</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getIssues(java.lang.String, com.atlassian.jira.user.ApplicationUser)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getIssue(java.lang.String,com.atlassian.jira.user.ApplicationUser)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.license.LicenseDetails</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getLicenseStatusMessage(com.atlassian.jira.user.ApplicationUser, java.lang.String, com.atlassian.jira.user.util.UserManager)</code>
									</p>

									<p>
										<code>#getLicenseStatusMessage(com.atlassian.jira.util.I18nHelper, com.atlassian.jira.web.util.OutlookDate, java.lang.String, com.atlassian.jira.user.util.UserManager) </code><span>removed.</span>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getLicenseStatusMessage(com.atlassian.jira.util.I18nHelper,UserManager)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.license.LicenseDetails</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#isLicenseAlmostExpired()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getMaintenanceExpiryDate</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.mention.MentionService</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#sendCommentMentions(com.atlassian.jira.user.ApplicationUser, java.util.Set&lt;com.atlassian.jira.notification.NotificationRecipient&gt;, com.atlassian.jira.issue.comments.Comment, com.atlassian.jira.issue.comments.Comment)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#sendCommentMentions(Set,ApplicationUser,Comment,Comment)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.mention.MentionService</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#sendIssueCreateMentions(com.atlassian.jira.user.ApplicationUser, java.util.Set&lt;com.atlassian.jira.notification.NotificationRecipient&gt;, com.atlassian.jira.issue.Issue)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#sendIssueCreateMentions(Set,ApplicationUser,Issue)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.mention.MentionService</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#sendIssueEditMentions(com.atlassian.jira.user.ApplicationUser, java.util.Set&lt;com.atlassian.jira.notification.NotificationRecipient&gt;, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.comments.Comment) </code>removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#sendIssueEditMentions(Set,ApplicationUser,Issue,Comment)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.permission.PermissionSchemeManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getEntitiesByType(org.ofbiz.core.entity.GenericValue, com.atlassian.jira.security.plugin.ProjectPermissionKey, java.lang.String) </code>removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getPermissionSchemeEntries(long,com.atlassian.jira.security.plugin.ProjectPermissionKey,String)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.permission.PermissionSchemeManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getGroups(java.lang.Long, com.atlassian.jira.project.Project)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#getGroups(ProjectPermissionKey,Project)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.plugin.keyboardshortcut.KeyboardShortcutManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getActiveShortcuts()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#listActiveShortcutsUniquePerContext</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.plugin.webfragment.conditions.AbstractJiraPermissionCondition</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole class removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">AbstractPermissionCondition</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.plugin.webfragment.conditions.AbstractPermissionCondition</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole class removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">AbstractProjectPermissionCondition</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.project.type.ProjectTypesEnabledCondition</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole class removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										No replacement.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.table.IssueTable</code> provided by <code>jira-api</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole class removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.issue.table.IssueTable</code> provided by <code class="code cc-1o5d2cw">jira-issue-nav-plugin</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.rest.Dates.DateAdapter</code>
									</p>

									<p>
										<code>com.atlassian.jira.rest.Dates.DateTimeAdapter</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole classes removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										For marshalling and unmarshalling, use the Jackson-friendly serializers and deserializers:
									</p>

									<p>
										<code class="code cc-1o5d2cw">@JsonSerialize(using = Dates.DateSerializer.class)</code>
									</p>

									<p>
										<code class="code cc-1o5d2cw">@JsonDeserialize(using = Dates.DateDeserializer.class)</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.rest.v2.issue.project.ProjectRoleBean</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole classes removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.rest.<span>api</span>.project.ProjectRoleBean</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.rest.v2.issue.project.RoleActorBean</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole classes removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.rest.<span>api</span>.project.RoleActorBean</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.rest.v1.model.ValueCollection</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole classes removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										No replacement.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.testkit.client.restclient.Response</code> provided by <code>jira-testkit-client</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										The class has been deprecated.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.testkit.client.restclient.ParsedResponse</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.testkit.client.RestApiClient</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#toResponse()</code> accepts <code>RestCall</code> functional interface.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use new <code class="code cc-1o5d2cw">RestCall</code> interface or lambda in place of <code class="code cc-1o5d2cw">Method</code> interface.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.avatar.AvatarManager</code><br>
										 
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getAvatarBaseDirectory</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#readAvatarData()</code> to access avatar data directly.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.util.AttachmentConfig</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole classes removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">AttachmentConfigManager#getTemporaryAttachmentDirectory()</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.attachment.AttachmentStore</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole classes removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use alternative methods provided by:
									</p>

									<p>
										<code class="code cc-1o5d2cw">AttachmentManager</code>
									</p>

									<p>
										<code class="code cc-1o5d2cw">ThumbnailManager</code>
									</p>

									<p>
										<code class="code cc-1o5d2cw">AttachmentConfigManager</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.util.AttachmentUtils</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole classes removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										To create, read, or delete attachment and thumbnail data directly, use the methods available in <code class="code cc-1o5d2cw">AttachmentManager</code> and <code class="code cc-1o5d2cw">ThumbnailManager</code>.
									</p>

									<p>
										To find the temporary attachment directory, use <code class="code cc-1o5d2cw">AttachmentConfigManager#getTemporaryAttachmentDirectory()</code>.
									</p>

									<p>
										The attachment and thumbnail directories for a particular issue are no longer exposed. Instead, use:
									</p>

									<p>
										<code class="code cc-1o5d2cw">getThumbnailDirectory()</code>
									</p>

									<p>
										<code class="code cc-1o5d2cw">getAttachmentDirectory()</code>.
									</p>

									<p>
										To manage individual attachments or store other data elsewhere, use:
									</p>

									<p>
										<code class="code cc-1o5d2cw">AttachmentManager</code>
									</p>

									<p>
										<code class="code cc-1o5d2cw">ThumbnailManager</code>.
									</p>

									<p>
										<code class="code cc-1o5d2cw">getAttachmentStore()</code> - <code class="code cc-1o5d2cw">AttachmentStore</code> has been removed.
									</p>

									<p>
										Instead of <code class="code cc-1o5d2cw">getTemporaryAttachmentDirectory()</code>, use <code class="code cc-1o5d2cw">AttachmentConfigManager#getTemporaryAttachmentDirectory()</code>.
									</p>

									<p>
										Instead of <code class="code cc-1o5d2cw">getAttachmentFile</code> and <code class="code cc-1o5d2cw">getThumbnailFile</code> methods, use <code class="code cc-1o5d2cw">AttachmentManager</code> and <code class="code cc-1o5d2cw">ThumbnalManager</code>. For example <code class="code cc-1o5d2cw">AttachmentManager#streamAttachmentContent</code>.
									</p>

									<p>
										The following checks can be omitted: <code class="code cc-1o5d2cw">checkValidAttachmentDirectory</code> and <code class="code cc-1o5d2cw">checkValidTemporaryAttachmentDirectory</code>. Jira checks the validity of paths during startup.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>AttachmentManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code class="code cc-1o5d2cw">#attachmentsEnabled()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">AttachmentConfigManager#isAttachmentsEnabled()</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>AttachmentManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code class="code cc-1o5d2cw">#disableAttachments()</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										No replacement.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>AttachmentManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code class="code cc-1o5d2cw">#createAttachmentCopySourceFile</code> and previously deprecated overloads of <code class="code cc-1o5d2cw">#createAttachment</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">#createAttachment(CreateAttachmentParamsBean)</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code class="code cc-1o5d2cw">#CreateAttachmentParamsBean</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use the provided builder<br>
										<code class="code cc-1o5d2cw">com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean.Builder</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>AttachmentManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#deleteAttachmentDirectory(Issue)</code> removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										To delete an issue, use <code class="code cc-1o5d2cw">IssueManager#deleteIssue</code> instead.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.IssueInputParameters</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#addProperty(String propertyKey, JsonNode propertyValue) </code>changed to #addProperty(String propertyKey, String propertyValue).
									</p>

									<p>
										<code>#properties()</code> now returns <code>Map&lt;String, String&gt;</code> instead of <code>Map&lt;String, JsonNode&gt;</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Serialize the value before passing to the method and deserialize after reading it.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.UpdateIssueRequest</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getProperties()</code> now returns <code>Map&lt;String, String&gt;</code> instead of Map&lt;String, JsonNode&gt;
									</p>

									<p>
										<code>#UpdateIssueRequestBuilder#issueProperties</code> now accepts <code>Map&lt;String, String&gt;</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Serialize the value before passing to the method and deserialize after reading it.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.util.IssueUpdateBean</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#getProperties</code> now returns <code>Map&lt;String, String&gt;</code>
									</p>

									<p>
										<code>#addProperties</code> now accepts <code>Map&lt;String, String&gt;</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Serialize the value before passing to the method and deserialize after reading it.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.issue.IssueService.CreateValidationResult</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										constructor now accepts <code>Map&lt;String, String&gt;</code>
									</p>

									<p>
										<code>#getProperties</code> now returns <code>Map&lt;String, String&gt;</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Serialize the value before passing to the method and deserialize after reading it.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.issue.IssueService.UpdateValidationResult</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>constructor</code> now accepts <code>Map&lt;String, String&gt;</code>
									</p>

									<p>
										<code>#getProperties</code> now returns <code>Map&lt;String, String&gt;</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Serialize the value before passing to the method and deserialize after reading it.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.configurable.ObjectConfigurationFactory</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>#loadObjectConfigurationFromElement</code> now accepts <code>com.atlassian.plugin.module.Element</code> instead of <code>org.dom4j.Element</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use the new type in method calls.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.issue.fields.rest.IssueFinderV2</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										#findIssue(String) now returns<code> io.atlassian.fugue.Either</code> instead of <code>com.atlassian.fugue.Either</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Replaced class is equivalent.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.config.util</code><br>
										<code>AttachmentPathManager</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole class removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use the methods available in <code class="code cc-1o5d2cw">AttachmentManager</code> to create/read/delete attachment data directly. For the settings related methods, use the new endpoints provided in <code class="code cc-1o5d2cw">AttachmentConfigManager</code>.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.testkit.client.AttachmentsControl</code>
									</p>

									<p>
										<code>com.atlassian.jira.testkit.plugin.AttachmentsBackdoor)</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Whole classes removed.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use <code class="code cc-1o5d2cw">com.atlassian.jira.functest.framework.backdoor.AttachmentFileControl</code> in <code class="code cc-1o5d2cw">jira-func-tests</code> (which requires the <code class="code cc-1o5d2cw">jira-func-test-plugin</code> to be installed). It provides storage-agnostic alternative methods to allow copying and clearing attachments.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.bc.dataimport.DataImportParams</code>
									</p>

									<p>
										 
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1">
									<p>
										<code>#isUseDefaultPaths</code>
									</p>

									<p>
										<code>Builder#setUseDefaultPaths</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										This option is no longer supported.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.jira.web.action.JiraWebActionSupport</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										The class is now abstract.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Extend the class to provide your implementation.
									</p>
								</td>
							</tr>
						</tbody>
					</table>
				</div>
			</div>
		</div>
	</div>
</div>

<h3 id="JiraServiceManagement10.0.xupgradenotes-dependenciesRemovalofdependencies">
	Removal of dependencies
</h3>

<p>
	In this release, we’ve removed access to a number of dependencies.
</p>

<div class="expand-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<a class="expand-block-expand-button" href="https://confluence.atlassian.com/servicemanagement/jira-service-management-10-0-x-upgrade-notes-1387597543.html#" rel="external nofollow"><svg aria-labelledby="title-9tlglob" class="expand-block-expand-icon" focusable="false" height="20" role="img" viewbox="0 0 20 20" width="20"> </svg></a>
</div>

<div class="expand-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<a class="expand-block-expand-button" href="https://confluence.atlassian.com/servicemanagement/jira-service-management-10-0-x-upgrade-notes-1387597543.html#" rel="external nofollow"><svg aria-labelledby="title-9tlglob" class="expand-block-expand-icon" focusable="false" height="20" role="img" viewbox="0 0 20 20" width="20"> </svg> <span>See the full list of changes</span> </a>

	<div class="expand-block-content-wrapper">
		<div class="expand-block-content">
			<p>
				Here’s what’s been changed:
			</p>

			<div class="table-wrap">
				<div class="table-block">
					<table class="wrapped confluenceTable" style="margin-left: 0.0px;">
						<tbody>
							<tr>
								<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Dependency
									</p>
								</th>
								<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Java packages
									</p>
								</th>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>nekohtml:nekohtml</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.cyberneko.html</code><br>
										<code>org.cyberneko.html.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>commons-validator:commons-validator</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.commons.validator</code><br>
										<code>org.apache.commons.validator.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.scala.plugins:scala-2.11-provider-plugin</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>scala.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.scala.plugins:scala-2.10-provider-plugin</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>scala.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.scala.plugins:jackson-module-scala-2.10-provider-plugin</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.fasterxml.jackson.module.scala2_10</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>io.atlassian.fugue:fugue-scala</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>io.atlassian.fugue.converters</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>commons-daemon:commons-daemon</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.commons.daemon.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.tomcat:tomcat-coyote</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.coyote.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>commons-el:commons-el</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.commons.el.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.tomcat:tomcat-jasper</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.jasper.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.tomcat:tomcat-juli</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.juli</code><br>
										<code>org.apache.juli.logging</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.tomcat:*</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.tomcat</code><br>
										<code>org.apache.catalina</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.tika:tika-core</code><br>
										<code>org.apache.tika:tika-*</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.tika</code><br>
										<code>org.apache.tika.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.xmlgraphics:batik-transcoder</code><br>
										<code>org.apache.xmlgraphics:batik-codec</code><br>
										<code>org.apache.xmlgraphics:batik-js</code><br>
										<code>org.apache.xmlgraphics:batik-svggen</code><br>
										<code>org.apache.xmlgraphics:fop</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.batik</code><br>
										<code>org.apache.batik.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.querydsl:querydsl-core</code><br>
										<code>com.querydsl:querydsl-sql</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.mysema.commons.lang</code><br>
										<code>com.querydsl.core</code><br>
										<code>com.querydsl.core.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>commons-configuration:commons-configuration</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.commons.configuration</code><br>
										<code>org.apache.commons.configuration.beanutils</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.commons:commons-collections4</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.commons.collections4</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.thoughtworks.xstream:xstream</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.thoughtworks.xstream</code><br>
										<code>com.thoughtworks.xstream.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.commons:commons-dbcp2</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.commons.dbcp2</code><br>
										<code>org.apache.commons.dbcp2.cpdsadapter</code><br>
										<code>org.apache.commons.dbcp2.datasources</code><br>
										<code>org.apache.commons.dbcp2.managed</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.sun.syndication:<a class="external-link" href="http://com.springsource.com" rel="external nofollow">com.springsource.com</a>.sun.syndication</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.sun.syndication.feed.*</code><br>
										<code><a class="external-link" href="http://com.sun.syndication.io" rel="external nofollow">com.sun.syndication.io</a>.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>rome:rome</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.sun.syndication.feed.*</code><br>
										<code><a class="external-link" href="http://com.sun.syndication.io" rel="external nofollow">com.sun.syndication.io</a>.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>commons-discovery:commons-discovery</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.commons.discover.jdk</code><br>
										<code>org.apache.commons.discovery.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>commons-jexl:commons-jexl</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.commons.jexl.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>commons-jrcs:commons-jrcs</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.commons.jrcs.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.github.rholder:guava-retrying</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.github.rholder.retry.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.dom4j:dom4j</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.dom4j.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>opensymphony:sitemesh</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.opensymphony.module.*</code><br>
										<code>com.opensymphony.sitemesh.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.jdom:jdom</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.jdom.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>commons-pool:commons-pool</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.commons.pool.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.tuckey:urlrewritefilter</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.tuckey.web.filters.urlrewrite.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.springframework.security:spring-security-core</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.springframework.security.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.p4package:atlassian-p4package</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.perforce.api</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>commons-beanutils:commons-beanutils</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.commons.beanutils</code><br>
										<code>org.apache.commons.beanutils.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.commons:comons-compress</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.apache.commons.compress</code><br>
										<code>org.apache.commons.compress.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.sun:jai_core</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.sun.media.jai.*</code><br>
										<code>javax.media.jai</code><br>
										<code>javax.media.jai.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.sun:jai_codec</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.sun.media.jai.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>wsdl4j:wsdl4j</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.ibm.wsdl</code><br>
										<code>com.ibm.wsdl.*</code><br>
										<code>javax.wsdl</code><br>
										<code>javax.wsdl.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.fugue:fugue</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>com.atlassian.fugue.*</code>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.dom4j:dom4j</code>
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>org.dom4j.*</code>
									</p>
								</td>
							</tr>
						</tbody>
					</table>
				</div>
			</div>
		</div>
	</div>
</div>

<h3 id="JiraServiceManagement10.0.xupgradenotes-Removalofbinaryinstallers">
	Removal of binary installers
</h3>

<p>
	Starting from Jira 10.0, the <code>.bin</code> and <code>.exe</code> installers will no longer be available. You can still install Jira using the <code>.zip</code> and <code>.tar.gz</code> distributions.
</p>

<div class="admonition-block note-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<svg class="admonition-icon" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"> <g fill="none" fill-rule="evenodd"> </g></svg>
</div>

<div class="admonition-block note-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<svg class="admonition-icon" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"> </g> </svg>

	<p>
		Because of this change, Java is no longer bundled with Jira. <a class="conf-macro output-inline" data-hasbody="true" data-macro-name="sp-plaintextbody-link" href="https://confluence.atlassian.com/adminjiraserver0916/installing-java-1402671854.html" rel="external nofollow">Install Java manually</a>
	</p>
</div>

<h3 id="JiraServiceManagement10.0.xupgradenotes-ApplicationLinkscompatibility">
	Application Links compatibility
</h3>

<p>
	Starting from Jira 10.0, Application Links are only backward-compatible with products that have integrated a particular bug fix addressing incorrect Application Links version parsing. To enable Application Links to function properly, make sure to upgrade any other Atlassian products to a <em>minimum</em> supported version:
</p>

<div class="table-wrap">
	<div class="table-block">
		<table class="wrapped confluenceTable" style="margin-left: 0.0px;">
			<tbody>
				<tr>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<strong>Jira Software</strong>
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<strong>Jira Service Management</strong>
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<strong>Confluence</strong>
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<strong>Bitbucket</strong>
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<strong>Bamboo</strong>
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<strong>Crowd</strong>
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<strong>Fisheye and Crucible</strong>
						</p>
					</th>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									9.4.24
								</p>
							</li>
							<li>
								<p>
									9.12.12
								</p>
							</li>
							<li>
								<p>
									9.17.1
								</p>
							</li>
							<li>
								<p>
									10.0.0
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									5.4.24
								</p>
							</li>
							<li>
								<p>
									5.12.12
								</p>
							</li>
							<li>
								<p>
									5.17.1
								</p>
							</li>
							<li>
								<p>
									10.0.0
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									7.19.25
								</p>
							</li>
							<li>
								<p>
									8.5.12
								</p>
							</li>
							<li>
								<p>
									8.9.4
								</p>
							</li>
							<li>
								<p>
									9.0.0
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									8.9.15
								</p>
							</li>
							<li>
								<p>
									8.19.4
								</p>
							</li>
							<li>
								<p>
									9.0.0
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									9.2.15
								</p>
							</li>
							<li>
								<p>
									9.6.3
								</p>
							</li>
							<li>
								<p>
									10.0.0
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									5.11.1
								</p>
							</li>
							<li>
								<p>
									5.2.6
								</p>
							</li>
							<li>
								<p>
									5.3.2
								</p>
							</li>
							<li>
								<p>
									6.0.0
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									4.8.6
								</p>
							</li>
							<li>
								<p>
									4.9.0
								</p>
							</li>
						</ul>
					</td>
				</tr>
			</tbody>
		</table>
	</div>
</div>

<h3 id="JiraServiceManagement10.0.xupgradenotes-Velocitypathtraversalpreventionandallowlisting">
	Velocity path traversal prevention and allowlisting
</h3>

<p>
	We've upgraded Velocity to the Atlassian fork to implement path traversal prevention and allowlisting. The path traversal mechanism will escape any method call which contains parameter with path traversal symbols like <code>../</code>. The method call will appear as a string on the front-end side.
</p>

<p>
	<a class="external-link" href="https://developer.atlassian.com/server/framework/atlassian-sdk/configuring-the-velocity-allowlist/" rel="external nofollow" style="text-decoration: none;" title="https://developer.atlassian.com/server/framework/atlassian-sdk/configuring-the-velocity-allowlist/">Velocity template method invocations are now restricted to an allowlist</a>. Unauthorized invocations will trigger a log warning and will be blocked to mitigate Server-Side Template Injection (SSTI) vulnerabilities. The global method allowlists encompass JDK and Atlassian class methods. Apps have the option to define their own allowlist using the module descriptor which will complement the global allowlist. We recommend that apps only expose immutable Data Transfer Objects (DTOs) and refrain from invoking application services or beans from templates.
</p>

<p>
	Furthermore, all <a class="external-link" href="https://developer.atlassian.com/server/framework/atlassian-sdk/velocity-file-allowlist/" rel="external nofollow" style="text-decoration: none;" title="https://developer.atlassian.com/server/framework/atlassian-sdk/velocity-file-allowlist/">Velocity template files residing on the file system must be both allowlisted and of an allowlisted file type</a>. This serves as a basic defense against attacks that combine file system access with a request to achieve remote code execution.
</p>

<div class="admonition-block info-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<svg class="admonition-icon" height="18" viewbox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"> </svg>
</div>

<div class="admonition-block info-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<svg class="admonition-icon" height="18" viewbox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"> </svg>

	<p>
		For now, the Velocity method allowlist is in debug mode so that app developers can adjust to this mechanism and for us to complete the main allowlist and minimize the risk of issues. The debug mode will be disabled at the earliest in the upcoming LTS.
	</p>
</div>

<h3 id="JiraServiceManagement10.0.xupgradenotes-DisablingtheruntimeJavaServerPagescompilation">
	Disabling the runtime JavaServer Pages compilation
</h3>

<p>
	JavaServer Pages (JSP) runtime compilation will be disabled in Jira Software 10.0. JSP files added to the Tomcat directory that aren't shipped with the product won’t be served. Furthermore, no modifications to the JSP files will be reflected. We recommend using Soy or Velocity templates instead.
</p>

<h3 id="JiraServiceManagement10.0.xupgradenotes-CustomJSPsareblockedunlessloadedbyanaction">
	Custom JSPs are blocked unless loaded by an action
</h3>

<p>
	We’ve blocked direct requests to JSP files. JSP files can now be only loaded when requested by an action.
</p>

<p>
	 
</p>

<h2 id="JiraServiceManagement10.0.xupgradenotes-endofsupporttrueicon_endofsupport.png32Endofsupportannouncements">
	End of support announcements
</h2>

<p>
	<span style="font-weight: 600;letter-spacing: -0.003em;">We’ve removed support for:</span>
</p>

<ul>
	<li>
		<code>.bin</code> and <code>.exe</code> binary installers
	</li>
	<li>
		<span><span class="_11q7y4f7 _5pioz8co _189eyh40 _n3tdv77o _1il9nqa1 _19lc184f _d0altlke acronym-highlight">H2</span></span> database engine
	</li>
	<li>
		Java 8
	</li>
	<li>
		Java 11
	</li>
</ul>

<h4 id="JiraServiceManagement10.0.xupgradenotes-We’veunbundled:">
	We’ve unbundled:
</h4>

<ul class="ak-ul">
	<li>
		<p>
			Java (due to the binary installers removal)
		</p>
	</li>
</ul>

<p>
	<span style="letter-spacing: 0.0px;">For the list of supported platforms, check </span><a href="https://confluence.atlassian.com/adminjiraserver/supported-platforms-938846830.html" rel="external nofollow" style="font-size: 14.0px;font-weight: 400;letter-spacing: 0.0px;">Supported platforms</a><span style="color: rgb(23,43,77);">.</span>
</p>

<p style="text-decoration: none;">
	<span style="color: rgb(23,43,77);">For previous announcements, see <a class="conf-macro output-inline" data-hasbody="false" data-macro-name="sp-nobody-link" href="https://confluence.atlassian.com/adminjiraserver/end-of-support-announcements-938846831.html" rel="external nofollow">End of support announcements</a>.</span>
</p>

<h2 id="JiraServiceManagement10.0.xupgradenotes-appdeveloperstrueicon_appdevelopers.png32Appdevelopers">
	App developers
</h2>

<p>
	For any important changes regarding apps, <span style="color: rgb(0,51,102);"><a class="external-link" href="https://developer.atlassian.com/server/jira/platform/changelog/" rel="external nofollow">check out the Jira changelog</a>.</span>
</p>

<h3 id="JiraServiceManagement10.0.xupgradenotes-FAQforappdevelopers">
	<span style="color: rgb(0,51,102);">FAQ for app developers</span>
</h3>

<p>
	<span style="color: rgb(0,51,102);"><span style="color: rgb(23,43,77);">Based on your feedback from the </span><a class="external-link" href="https://community.developer.atlassian.com/t/preparing-for-jira-software-10-0-and-jira-service-management-6-0-multiple-eaps-coming-your-way/76688?u=andrzejkotas" rel="external nofollow" style="text-decoration: none;">Developer Community announcement of Jira 10.0</a><span style="color: rgb(23,43,77);">, we’ve prepared a list of frequently asked questions.</span></span>
</p>

<div class="expand-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<a class="expand-block-expand-button" href="https://confluence.atlassian.com/servicemanagement/jira-service-management-10-0-x-upgrade-notes-1387597543.html#" rel="external nofollow"><svg aria-labelledby="title-9tlglob" class="expand-block-expand-icon" focusable="false" height="20" role="img" viewbox="0 0 20 20" width="20"> </svg></a>
</div>

<div class="expand-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<a class="expand-block-expand-button" href="https://confluence.atlassian.com/servicemanagement/jira-service-management-10-0-x-upgrade-notes-1387597543.html#" rel="external nofollow"><svg aria-labelledby="title-9tlglob" class="expand-block-expand-icon" focusable="false" height="20" role="img" viewbox="0 0 20 20" width="20"> </svg> <span>See the full list</span> </a>

	<div class="expand-block-content-wrapper">
		<div class="expand-block-content">
			<div class="table-wrap">
				<div class="table-block">
					<table class="fixed-width wrapped confluenceTable" style="margin-left: 0.0px;">
						<tbody>
							<tr>
								<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<strong>Question</strong>
									</p>
								</th>
								<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<strong>Answer</strong>
									</p>
								</th>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Is there a way to customize or override the Jackson ObjectMapper used in plugin <span>REST v2</span>?
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Currently it’s not possible for plugins to customize REST’s ObjectMapper config.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										We encountered some issues regarding our REST endpoints that use the @<code>Autowired</code> annotation on the constructor. That results in warnings like:
									</p>
									<span class="prismjs cc-1es5wws" style="color:var(--ds-text,#172b4d);"><code class="language- language-undefined">MultiException stack 1 of 2 java.lang.NoSuchMethodException: Could not find a suitable constructor in de.resolution.usersync.rest.NotificationRestResource class. </code></span>

									<p>
										This can be mitigated using @<code>Inject</code> instead.
									</p>

									<p>
										However, to our knowledge, both annotations should work the same. Was this an intentional change?
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										This was an intentional change. REST resource classes are instantiated by HK2 in Jersey 2, hence Spring’s <code>@Autowired</code> won't work.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Which Testkit should I use?
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Use the 10.0.3 <code>jira-testkit</code>.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										My method invocations are blocked, even though I have them allowlisted. Why?
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Plugins may define their own allowlist using this module descriptor which will supplement the global allowlist. Plugins can only define allowlist entries for their own classes.
									</p>

									<p>
										More details: <span><span class="loader-wrapper"><a class="external-link" href="https://developer.atlassian.com/server/framework/atlassian-sdk/configuring-the-velocity-allowlist/" rel="external nofollow" style="text-decoration: none;"><span class="css-1cwva94 e1a3lu074"><span class="smart-link-title-wrapper css-0 e1a3lu0710">Configuring the Velocity method allowlist</span></span></a></span></span>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										It looks like REST v2 in the latest EAP supports only @<code>Inject</code> (<code>javax.inject.Inject</code>) for resource constructors and doesn’t support the Spring @<code>Autowired</code> annotation. Is this intentional?
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Yes, this is intentional. We dropped support for the Spring <code>@Autowired</code> annotation and decided to migrate to <code>@Inject</code> (<code>javax.inject.Inject</code>), because <code>@Autowired</code> is Spring-specific and <code>javax.inject.Inject</code> is part of a standard (Java EE / Jakarta EE - JSR-330). Relying on the standard rather than on a specific implementation provides us with more options for the future.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										We’re currently testing Jira 10.0 and the AITs Arquillian didn't work with JDK 17, any idea why?
									</p>

									<p>
										All the tests work with JDK 8 or JDK 9, and when I change to JDK 17, the tests don't start.<br>
										The error:
									</p>
									<span class="prismjs cc-1es5wws" style="color:var(--ds-text,#172b4d);"><code class="language- language-undefined">java.io.StreamCorruptedException: invalid stream header: 0A0A0A0A at java.base/java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:958) at java.base/java.io.ObjectInputStream.&lt;init&gt;(ObjectInputStream.java:392) at org.jboss.arquillian.protocol.servlet.ServletMethodExecutor.execute(ServletMethodExecutor.java:173) at org.jboss.arquillian.protocol.servlet.ServletMethodExecutor$1.run(ServletMethodExecutor.java:221) at java.base/java.util.TimerThread.mainLoop(Timer.java:566) at java.base/java.util.TimerThread.run(Timer.java:516) and</code></span><span class="prismjs cc-1slwsjo" style="color:var(--ds-text,#172b4d);"><code class="language- language-undefined">java.lang.IllegalStateException: Error launching test at org.jboss.arquillian.protocol.servlet.ServletMethodExecutor.invoke(ServletMethodExecutor.java:100) at org.jboss.arquillian.container.test.impl.execution.RemoteTestExecuter.execute(RemoteTestExecuter.java:103) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:86) at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:103) at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:90) at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:133) at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:105) at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:62) at org.jboss.arquillian.container.test.impl.execution.ClientTestExecuter.execute(ClientTestExecuter.java:52) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:86) at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:103) at org.jboss.arquillian.core.impl.EventContextImpl.proceed</code></span>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										Check Jira logs. <code>invalid stream header</code> is usually an indicator that test “plugin” has failed to install.
									</p>

									<p>
										This library is effectively no longer maintained as it's not really used internally at Adaptavist anymore.
									</p>

									<p>
										There is a suggested workaround here: <span><span class="loader-wrapper"><a class="external-link" href="https://bitbucket.org/adaptavistlabs/atlassian-arquillian-containers/issues/19/javaiostreamcorruptedexception-invalid" rel="external nofollow" style="text-decoration: none;"><span class="css-1cwva94 e1a3lu074"><span class="smart-link-title-wrapper css-0 e1a3lu0710">java.io.StreamCorruptedException: invalid stream header: 0A0A0A0A error in some Arqullian tests</span></span><span class="css-k8tn72 e1a3lu075"><span class="cc-1mququ6"><span class="cc-1iyijc2" style="color:var(--ds-text-subtle,#42526e);">bug</span></span></span></a></span></span>
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										What version of <code>atlassian-plugins</code> will this release ship with? We need version 8.0.15+ for our app to run as we utilize new APIs.
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										<code>atlassian-plugins</code> will be version 8.0.15 in the new release.
									</p>
								</td>
							</tr>
							<tr>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										“The global object GH.RapidBoard is deprecated.” — what does it mean?
									</p>

									<p>
										Will the GH be removed? Will there be a way to access it?
									</p>
								</td>
								<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
									<p>
										We’re <em>not</em> planning to remove global variables in this platform release (10.0.0). At the same time, we’re committed to reducing the tech debt and introducing improvements to the Jira front-end tech stack and UI. Global variables tend to be an obstacle in such projects. We communicated the long-term take on global variables in <a class="cc-1rn59kg" href="https://confluence.atlassian.com/jiracore/preparing-for-jira-8-0-975041026.html#PreparingforJira8.0-JSGlobalsdeprecation" rel="external nofollow" style="text-decoration: none;">Preparing for Jira 8.0.1</a> and reinforced that message later too.<br>
										The most recent effort in that area was in <a class="cc-1rn59kg" href="https://confluence.atlassian.com/jiracore/preparing-for-jira-9-7-1206565730.html#PreparingforJira9.7-Introducedbreakingchanges" rel="external nofollow" style="text-decoration: none;">JSW 9.7.1</a>.<br>
										You can read more about the migration from global variables to AMD modules <a class="conf-macro output-inline" data-hasbody="true" data-macro-name="sp-plaintextbody-link" href="https://confluence.atlassian.com/jiracore/migration-from-globals-to-amd-975041048.html" rel="external nofollow">on this page</a>. It was published in 2019 but the gist is intact. These are the key points:
									</p>

									<ul class="ak-ul">
										<li>
											<p>
												All supported functionality should be already available in a form of AMD modules (vs. global variables).
											</p>
										</li>
										<li>
											<p>
												All possible usage of globals is considered as deprecated and developers should have a plan to move to alternative solutions (AMD modules).
											</p>
										</li>
										<li>
											<p>
												Global variables that provide support for supported functionality will be removed only when an alternative solution for that piece of functionality is in place, and with proper notice beforehand. We may remove globals without the alternative solution in place for unsupported functionality, in platform releases, or for security reasons.
											</p>
										</li>
										<li>
											<p>
												We cannot promise that in the future all AMD modules will be a part of the <span>API</span>.
											</p>
										</li>
										<li>
											<p>
												Once we decide to remove a particular subset of globals, we will provide a detailed migration documentation, containing removed globals list and their AMD module names equivalents.
											</p>
										</li>
									</ul>
								</td>
							</tr>
						</tbody>
					</table>
				</div>
			</div>
		</div>
	</div>
</div>

<h2 id="JiraServiceManagement10.0.xupgradenotes-upgradeproceduretrueicon_upgradeprocedure.png32Upgradeprocedure">
	<span style="letter-spacing: -0.008em;">Upgrade procedure</span>
</h2>

<p>
	To help you upgrade to the latest and greatest:
</p>

<ul>
	<li>
		See <a class="sc-gPzReC hHOdST" href="https://confluence.atlassian.com/adminjiraserver/upgrading-jira-applications-938846936.html" rel="external nofollow">Upgrading Jira applications</a> for complete upgrade procedures, including all available upgrade methods and pre-upgrade steps.
	</li>
	<li>
		<span>For a more tailored upgrade, go to <strong>Jira administration</strong> </span>&gt; <strong>Applications </strong>&gt;<strong> Plan your upgrade</strong><span>. We’ll recommend a version to upgrade to, run pre-upgrade checks, and provide you with a custom upgrade guide with step-by-step instructions.</span>
	</li>
</ul>


<br>
<p><a href="https://jimiwikman.se/atlassian-versions/745_jira-service-management-data-center/jira-service-management-100-r3/">View full product version</a></p>]]></description><guid isPermaLink="false">12320</guid><pubDate>Tue, 24 Sep 2024 02:21:19 +0000</pubDate></item><item><title>Jira Software 10.0</title><link>https://beta.jimiwikman.se/forums/topic/12319-jira-software-100/</link><description><![CDATA[

<h3 id="JiraSoftware10.0.xreleasenotes-CheckthecompatibilityofyourMarketplaceapps">
	<span style="letter-spacing: 0.0px;">Check the compatibility of your Marketplace apps</span>
</h3>

<p>
	<span style="letter-spacing: 0.0px;">As a major release, Jira 10.0 introduces backward-incompatible changes to the apps' </span><span style="letter-spacing: 0.0px;">API</span><span style="letter-spacing: 0.0px;">. If you build custom in-house apps, you need to test their compatibility and update them.</span>
</p>

<p>
	If you have installed apps from the Atlassian marketplace or another source, you also need to check their compatibility and update them before performing the upgrade. To check app compatibility, visit <a class="conf-macro output-inline" data-hasbody="false" data-macro-name="sp-nobody-link" href="https://confluence.atlassian.com/upm/checking-app-compatibility-with-application-updates-273875705.html" rel="external nofollow">Checking app compatibility with application updates</a> or the <a class="external-link" href="https://marketplace.atlassian.com/" rel="external nofollow" style="text-decoration: none;" title="https://marketplace.atlassian.com/">Atlassian Marketplace</a> to see if your app hosting is compatible with your product version.
</p>

<p>
	 
</p>

<h2 id="JiraSoftware10.0.xupgradenotes-apiFront-endAPIchanges">
	Front-end API changes
</h2>

<p>
	This release brings an improved and updated <a class="external-link" href="https://developer.atlassian.com/server/jira/platform/jira-frontend-api/#code-sharing" rel="external nofollow" style="text-decoration: none;">Code sharing</a> section of the Jira Data Center front-end <span>API</span>. We’ve introduced the following changes:
</p>

<ul class="ak-ul">
	<li>
		<p>
			Inclusion of Jira-specific <span>API</span> modules, such as requested Jira Events.
		</p>
	</li>
	<li>
		<p>
			Extensions and updates to common libraries.
		</p>
	</li>
	<li>
		<p>
			Introduction to particular versioning of common libraries and alias module type.
		</p>
	</li>
	<li>
		<p>
			Annotations to modules on the <span><span class="_11q7y4f7 _5pioz8co _189eyh40 _n3tdv77o _1il9nqa1 _19lc184f _d0altlke acronym-highlight">UPM</span></span> level and better descriptions in the code.
		</p>
	</li>
</ul>

<p>
	Regular modules for the common libraries are versioned up to the <a class="external-link" href="https://semver.org/" rel="external nofollow" style="text-decoration: none;" title="https://semver.org/">minor version</a> (<code>x.y</code>), for example, under the <code>jira-frontend-api:react-18.3</code> web-resource Jira provides <a class="external-link" href="https://react.dev/" rel="external nofollow" style="text-decoration: none;" title="https://react.dev/">React</a> 18.3.1, as of now. The patch version (aka bug fix) can be changed at any time, for example, the same web-resource can provide React 18.3.2 in the future.
</p>

<p>
	The alias modules are versioned up to the major version (<code>x</code>), for example, under the <code>jira-frontend-api:react-18</code> web-resource Jira provides React 18.3.1, as of now. The minor version can be changed at any time, for example, the same web-resource can provide <a class="external-link" href="https://react.dev/" rel="external nofollow" style="text-decoration: none;" title="https://react.dev/">React</a> 18.4.0 in the future.
</p>

<div class="table-wrap">
	<div class="table-block">
		<table class="wrapped confluenceTable" style="margin-left: 0.0px;">
			<tbody>
				<tr>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Dependency
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Change
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Rationale
						</p>
					</th>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>jira-frontend-api:jquery-2.2.4</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Deprecated. Use <code>jira-frontend-api:jquery (jira/api/jquery</code> AMD) instead.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Jira provides and supports the single jQuery version only. It can also be modified by Atlassian to include certain fixes. This is why the version has been dropped from the web-resource key. It’ll also make the migration to newer versions easier.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>jira-frontend-api:underscore-1.8</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Deprecated. Use <code>jira-frontend-api:underscore-1.13</code> (<code>jira/api/underscore-1.13</code> AMD) instead.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							The recommended underscorejs version is the newest available one as of now (1.13.6).
						</p>
					</td>
				</tr>
			</tbody>
		</table>
	</div>
</div>

<p>
	The full list of available modules:
</p>

<div class="table-wrap">
	<div class="table-block">
		<table class="wrapped confluenceTable" style="margin-left: 0.0px;">
			<tbody>
				<tr>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Dependency
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							AMD module
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Rationale
						</p>
					</th>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="3" rowspan="1" style="text-align: left;">
						<p style="text-align: center;">
							Jira-specific
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>jira-frontend-api:almond</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							n/a
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Provides AMD support by exposing <code>define</code> and <code>require</code> global functions. You don’t typically need to depend on Almond as it’s provided by default. However, it may be required if you build the custom page.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>jira-frontend-api:version</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1">
						<p>
							<code>jira/api/version</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							The module allows to #get the current Jira version, as well as #compare and #isGreaterThanOrEqualTo the current Jira version with a provided one.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>jira-frontend-api:jira-events</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ol class="ak-ol">
							<li>
								<p>
									<code>jira/api/events</code>
								</p>
							</li>
							<li>
								<p>
									<code>jira/api/events/reasons</code>
								</p>
							</li>
							<li>
								<p>
									<code>jira/api/events/types</code>
								</p>
							</li>
						</ol>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ol class="ak-ol">
							<li>
								<p>
									Provides Jira-namespaced event bus.
								</p>
							</li>
							<li>
								<p>
									Provides a dictionary of reasons for events being triggered in Jira, such as <code>panelRefreshed</code>.
								</p>
							</li>
							<li>
								<p>
									Provides a dictionary of event types, such as <code>NEW_CONTENT_ADDED</code>.
								</p>
							</li>
						</ol>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="3" rowspan="1" style="text-align: left;">
						<p style="text-align: center;">
							Common libraries
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>jira-frontend-api:jquery</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1">
						<p>
							<code>jira/api/jquery</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Provides <a class="external-link" href="https://jquery.com/" rel="external nofollow" style="text-decoration: none;" title="https://jquery.com/">jQuery</a> used across Jira.<br>
							Current version: 2.2.4 with patches
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>jira-frontend-api:underscore-1.13</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1">
						<p>
							<code>jira/api/underscore-1.13</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Provides <a class="external-link" href="https://underscorejs.org/" rel="external nofollow" style="text-decoration: none;" title="https://underscorejs.org/">Underscore</a> 1.13.x.<br>
							Current version: 1.13.6.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>jira-frontend-api:backbone-1.6</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1">
						<p>
							<code>jira/api/backbone-1.6</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Provides <a class="external-link" href="https://backbonejs.org/" rel="external nofollow" style="text-decoration: none;" title="https://backbonejs.org/">Backbone.js</a> 1.6.x.<br>
							Current version: 1.6.0.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>jira-frontend-api:react-18.3</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1">
						<p>
							<code>jira/api/react-18.3</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Alias module. Provides <a class="external-link" href="https://react.dev/" rel="external nofollow" style="text-decoration: none;" title="https://react.dev/">React</a> 18.3.x.<br>
							Current version: 18.3.1.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>jira-frontend-api:react-dom-18.3</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1">
						<p>
							<code>jira/api/react-dom-18.3</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Provides <a class="external-link" href="https://react.dev/reference/react-dom" rel="external nofollow" style="text-decoration: none;" title="https://react.dev/reference/react-dom">React-DOM</a> 18.3.x.<br>
							Current version: 18.3.1.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>jira-frontend-api:react-dom-18</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1">
						<p>
							<code>jira/api/react-dom-18</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Alias module. Provides <a class="external-link" href="https://react.dev/reference/react-dom" rel="external nofollow" style="text-decoration: none;" title="https://react.dev/reference/react-dom">React-DOM</a> 18.3.x.<br>
							Current version: 18.3.1.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="3" rowspan="1" style="text-align: left;">
						<p style="text-align: center;">
							Common libraries (deprecated)
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>jira-frontend-api:jquery-2.2.4</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1">
						<p>
							<code>jira/api/jquery-2.2.4</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Deprecated. Use <code>jira-frontend-api:jquery</code> (<code>jira/api/jquery</code> AMD) instead
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>jira-frontend-api:underscore-1.8</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1">
						<p>
							<code>jira/api/underscore-1.8</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Deprecated. Use <code>jira-frontend-api:underscore-1.13</code> (<code>jira/api/underscore-1.13</code> AMD) instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="2" style="text-align: left;">
						<p>
							<code>jira-frontend-api:react-16</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1">
						<p>
							<code>jira/api/react-16.8</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Deprecated. Use <code>jira-frontend-api:react-18.3</code> (<code>jira/api/react-18.3</code> AMD) instead.<br>
							Provides <a class="external-link" href="https://react.dev/" rel="external nofollow" style="text-decoration: none;" title="https://react.dev/">React</a> 16.8.x.<br>
							Current version: 16.8.6.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>jira/api/react-16</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Deprecated. Use <code>jira-frontend-api:react-18</code> (<code>jira/api/react-18</code> AMD) instead.<br>
							Alias module. Provides <a class="external-link" href="https://react.dev/" rel="external nofollow" style="text-decoration: none;" title="https://react.dev/">React</a> 16.x.<br>
							Current version: 16.8.6.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="2" style="text-align: left;">
						<p>
							<code>jira-frontend-api:react-dom-16</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1">
						<p>
							<code>jira/api/react-dom-16.8</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Deprecated. Use j<code>ira-frontend-api:react-dom-18.3</code> (<code>jira/api/react-dom-18.3</code> AMD) instead.<br>
							Provides <a class="external-link" href="https://react.dev/reference/react-dom" rel="external nofollow" style="text-decoration: none;" title="https://react.dev/reference/react-dom">React-DOM</a> 16.8.x.
						</p>

						<p>
							Current version: 16.8.6.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>jira/api/react-dom-16</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Deprecated. Use <code>jira-frontend-api:react-dom-18</code> (<code>jira/api/react-dom-18</code> AMD) instead.<br>
							Alias module. Provides <a class="external-link" href="https://react.dev/reference/react-dom" rel="external nofollow" style="text-decoration: none;" title="https://react.dev/reference/react-dom">React-DOM</a> 16.x.
						</p>

						<p>
							Current version: 16.8.6.
						</p>
					</td>
				</tr>
			</tbody>
		</table>
	</div>
</div>

<h2 id="JiraSoftware10.0.xupgradenotes-restOpenAPIstandardforRESTAPIdocumentation">
	OpenAPI standard for REST API documentation
</h2>

<p>
	REST <span>API</span> documentation for Jira Core and Jira Software is now available in an OpenAPI standard with a refreshed graphical form. This is the first time REST <span>API</span> documentation for Jira Core and Jira Software is no longer split. What’s more, we’ve reviewed and updated the documentation content. <a class="external-link" href="https://developer.atlassian.com/server/jira/platform/rest/v10000/intro/#gettingstarted" rel="external nofollow" style="text-decoration: none;">Get started with REST <span>API</span> documentation for Jira</a>
</p>

<h2 id="JiraSoftware10.0.xupgradenotes-flagsRemovalofpreviouslydeprecatedfeatureflags">
	Removal of previously deprecated feature flags
</h2>

<p>
	In this release, we’ve removed the following feature flags:
</p>

<ul>
	<li>
		<code>com.atlassian.jira.agile.darkfeature.burnupchart</code>
	</li>
	<li>
		<code>optimistic.transitions</code>
	</li>
	<li>
		<code>com.atlassian.jira.advanced.audit.log</code>
	</li>
	<li>
		<code>velocity.chart.ui</code>
	</li>
	<li>
		<code>jira.quick.search</code>
	</li>
	<li>
		<code>com.atlassian.jira.custom.csv.escaper</code>
	</li>
	<li>
		<code>atlassian.cdn.static.assets</code>
	</li>
	<li>
		<code><a class="external-link" href="http://jira.users.and.roles.page.in" rel="external nofollow">jira.users.and.roles.page.in</a>.react</code>
	</li>
</ul>

<p>
	All features previously hidden behind those feature flags were enabled by default.
</p>

<h2 id="JiraSoftware10.0.xupgradenotes-javaBreakingchangestotheJavaAPI">
	Breaking changes to the Java API
</h2>

<p>
	In this release, we've removed several deprecated methods and classes. Additionally, we’ve made adjustments to a group of methods which involved modifying the signatures and return types.
</p>

<p>
	Here’s what’s been changed:
</p>

<div class="table-wrap">
	<div class="table-block">
		<table class="wrapped fixed-width confluenceTable" style="margin-left: 0.0px;width: 2333.0px;">
			<colgroup>
				<col style="width: 743.0px;">
				<col style="width: 705.0px;">
				<col style="width: 885.0px;">
			</colgroup>
			<tbody>
				<tr>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Classes
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Changed symbols
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Instructions
						</p>
					</th>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.customfields.CustomFieldType</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getNonnullCustomFieldProvider()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#getNonNullCustomFieldProvider()</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									<code>com.atlassian.jira.issue.customfields.vdi.NonNullCustomFieldProvider</code>
								</p>
							</li>
							<li>
								<p>
									<code>com.atlassian.jira.issue.customfields.DefaultNonNullCustomFieldProvider</code>
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getCustomFieldInfo(com.atlassian.jira.issue.Issue)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#getCustomFieldInfo(java.util.List issues)</code> instead.<br>
							You now need to implement <code class="code cc-1o5d2cw">#getCustomFieldInfo(java.util.List&lt;com.atlassian.jira.issue.Issue&gt; issues)</code> in every class you were previously implementing <code class="code cc-1o5d2cw">#getCustomFieldInfo(com.atlassian.jira.issue.Issue issue)</code>.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									<code>com.atlassian.jira.issue.customfields.NonnullCustomFieldProvider</code>
								</p>
							</li>
							<li>
								<p>
									<code>com.atlassian.jira.issue.customfields.persistence.DefaultNonnullCustomFieldProvider</code>
								</p>
							</li>
							<li>
								<p>
									<code>com.atlassian.jira.issue.customfields.CustomFieldPrefetchedData</code>
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole classes removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">com.atlassian.jira.issue.customfields.vdi.CustomFieldPrefetchedData</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									<code>com.atlassian.jira.issue.index.indexers.FieldIndexer</code>
								</p>
							</li>
							<li>
								<p>
									<code>com.atlassian.jira.issue.index.indexers.impl.AbstractCustomFieldIndexer</code>
								</p>
							</li>
							<li>
								<p>
									<code>com.atlassian.jira.issue.customfields.impl.TextCFType</code>
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#addIndex(org.apache.lucene.document.Document, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.customfields.CustomFieldPrefetchedData)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#addIndex(org.apache.lucene.document.Document, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.customfields.vdi.CustomFieldPrefetchedData)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.index.indexers.impl.AbstractCustomFieldIndexer</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#addDocumentFieldsNotSearchable(org.apache.lucene.document.Document doc, com.atlassian.jira.issue.Issue issue, com.atlassian.jira.issue.customfields.CustomFieldPrefetchedData prefetchedData) </code>removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#addDocumentFieldsNotSearchable(org.apache.lucene.document.Document, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.customfields.vdi.CustomFieldPrefetchedData)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.index.indexers.impl.AbstractCustomFieldIndexer</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#addDocumentFieldsSearchable(org.apache.lucene.document.Document doc, com.atlassian.jira.issue.Issue issue, com.atlassian.jira.issue.customfields.CustomFieldPrefetchedData prefetchedData) </code>removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#addDocumentFieldsSearchable(org.apache.lucene.document.Document, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.customfields.vdi.CustomFieldPrefetchedData)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.user.search.UserSearchParams</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							All public constructors removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">UserSearchParams.Builder</code> to construct an instance of <code class="code cc-1o5d2cw">UserSearchParams</code> instead of using the constructor.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.user.search.UserSearchParams</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#builder()</code> behavior changed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							The behavior of this method changed, it was left for convenience. It now mirrors the behavior of <code class="code cc-1o5d2cw">UserSearchParams.builder(MAXIMUM_RESULTS)</code>.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.util.collect.CollectionUtil</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#filter(Collection&lt;T&gt;, Predicate&lt;? super T&gt;)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use standard <code class="code cc-1o5d2cw">Stream#filter(Predicate&lt;?&gt;)</code> and appropriate <code class="code cc-1o5d2cw">Stream#collect(...)</code> call.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.security.GlobalPermissionEntry</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getGlobalPermissionType()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#getPermissionKey()</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.security.JiraAuthenticationContext</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getI18nBean()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#getI18nHelper()</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.security.JiraAuthenticationContext</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getText(java.lang.String)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#getText()</code> method on <code class="code cc-1o5d2cw">#getI18nHelper()</code>.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.sharing.ShareManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#hasPermission(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.sharing.SharedEntity)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#isSharedWith(com.atlassian.crowd.embedded.<span>api</span>.User, SharedEntity)</code> to get the same logic. Permission checks should be done in the service layer according to this information.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.user.preferences.JiraUserPreferences</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole class removed from public <span>API</span>.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							You should not construct user preferences directly. Request them through the <code class="code cc-1o5d2cw">UserPreferencesManager</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.util.collect.MapBuilder</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#toFastMap()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">ImmutableMap</code> directly instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.util.collect.MapBuilder</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#toImmutableMap()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#toMap()</code> instead, or consider using <code class="code cc-1o5d2cw">ImmutableMap</code> if the map doesn't need to accept nulls.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.util.index.Contexts</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#nullContext()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">com.atlassian.jira.task.context.Contexts#nullContext()</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.util.JiraDurationUtils</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#onClearCache(com.atlassian.jira.event.ClearCacheEvent)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use the <code class="code cc-1o5d2cw">DurationFormatChanged</code> event instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.util.JiraDurationUtils</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#start()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							No replacement.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.web.action.issue.IssueCreationHelperBean</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getProvidedFieldNames(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.Issue)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Avoid using <code class="code cc-1o5d2cw">IssueCreationHelperBean</code> class as it’ll be removed. Before it happens, use <code class="code cc-1o5d2cw">#getProvidedFieldNames(com.atlassian.jira.issue.Issue)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.web.bean.MultiBulkMoveBean</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#setTargetProject(org.ofbiz.core.entity.GenericValue)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#setTargetProject(com.atlassian.jira.project.Project)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.web.util.HelpUtil.HelpPath</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getSimpleUrl()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#getUrl()</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.web.util.OutlookDate</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul>
							<li>
								<code>#format()</code>
							</li>
							<li>
								<code>#getDateTimePickerFormatSample(java.util.Date)</code>
							</li>
						</ul>

						<p>
							removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">com.atlassian.jira.datetime.DateTimeFormatter#format(java.util.Date)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.web.util.OutlookDate</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul>
							<li>
								<code>#getCompleteDateFormat()</code>
							</li>
							<li>
								<code>#getDatePickerFormat()</code>
							</li>
							<li>
								<code>#getDateTimePickerFormat()</code>
							</li>
						</ul>

						<p>
							removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">com.atlassian.jira.datetime.DateTimeFormatter#getFormatHint()</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.web.util.OutlookDate</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getNow() </code>removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">java.util.Date#Date()</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.permission.SchemePermissions</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole class removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">com.atlassian.jira.security.PermissionManager</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.permission.Permission</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole class removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">com.atlassian.jira.security.PermissionManager</code> or <code class="code cc-1o5d2cw">com.atlassian.jira.security.GlobalPermissionManager</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.attachment.AttachmentZipKit</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole class removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">com.atlassian.jira.issue.AttachmentIndexManager</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.util.NotNull</code> (annotation)
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole class removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">javax.annotation.Nonnull</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.security.PermissionManager</code> including its subclasses:
						</p>

						<ul>
							<li>
								<code>com.atlassian.jira.security.PublicAccessPermissionManager</code>
							</li>
							<li>
								<code>com.atlassian.jira.security.ApplicationRequiredPermissionManager</code>
							</li>
							<li>
								<code>com.atlassian.jira.security.DefaultPermissionManager</code>
							</li>
							<li>
								<code>com.atlassian.jira.security.SubvertedPermissionManager</code>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul>
							<li>
								<code>getProjects(int, com.atlassian.jira.user.ApplicationUser)</code>
							</li>
							<li>
								<code>getProjects(int permissionId, ApplicationUser user, ProjectCategory projectCategory)</code>
							</li>
						</ul>

						<p>
							removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use supported <code class="code cc-1o5d2cw">getProjects</code> method, for example:
						</p>

						<ul class="ak-ul">
							<li>
								<p>
									<code class="code cc-1o5d2cw">com.atlassian.jira.security.PermissionManager#getProjects(com.atlassian.jira.security.plugin.ProjectPermissionKey, com.atlassian.jira.user.ApplicationUser)</code>
								</p>
							</li>
							<li>
								<p>
									<code class="code cc-1o5d2cw">com.atlassian.jira.security.PermissionManager#getProjects(com.atlassian.jira.security.plugin.ProjectPermissionKey, com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.project.ProjectCategory)</code>
								</p>
							</li>
						</ul>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.help.HelpUrlsParser</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul>
							<li>
								<code>#defaultUrl(String, String)</code>
							</li>
							<li>
								<code>#onDemand(boolean)</code>
							</li>
						</ul>

						<p>
							removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">com.atlassian.jira.help.HelpUrlsParserBuilderFactory</code> to construct new <code class="code cc-1o5d2cw">HelpUrlsParse</code> instance.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.imports.project.mapper.ProjectImportIdMapper</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getValuesFromImport()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#getRegisteredOldIds()</code> (and <code class="code cc-1o5d2cw">#getKey()</code> if needed) instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.imports.project.mapper.ProjectRoleActorMapper</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getAllProjectRoleActors()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use the properly typed method <code class="code cc-1o5d2cw">#getProjectRoleActors()</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.comments.CommentManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getProjectRole(java.lang.Long)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">com.atlassian.jira.security.roles.ProjectRoleManager#getProjectRole(Long)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.fields.layout.field.FieldLayoutStorageException</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole class removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							No replacement
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.fields.rest.json.CommentBeanFactory</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#createRenderedBean(com.atlassian.jira.issue.comments.Comment)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#createRenderedBean(com.atlassian.jira.issue.comments.Comment, com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.util.EmailFormatter)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.index.ReindexAllCompletedEvent</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul>
							<li>
								<code>#shouldUpdateReplicatedIndex()</code>
							</li>
							<li>
								<code>#ReindexAllCompletedEvent(long)</code>
							</li>
							<li>
								<code>#ReindexAllCompletedEvent(long, boolean, boolean)</code>
							</li>
						</ul>

						<p>
							removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#shouldNotifyCluster()</code> instead.
						</p>

						<p>
							Do not construct internal <code class="code cc-1o5d2cw">ReindexAllCompletedEvent</code> class.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.index.ReindexAllStartedEvent</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul>
							<li>
								<code>#shouldUpdateReplicatedIndex()</code>
							</li>
							<li>
								<code>#ReindexAllStartedEvent()</code>
							</li>
							<li>
								<code>#ReindexAllStartedEvent(boolean, boolean)</code>
							</li>
							<li>
								<code>#ReindexAllStartedEvent(boolean, boolean, com.atlassian.jira.issue.index.IssueIndexingParams, com.atlassian.jira.config.ReindexMessage)</code>
							</li>
						</ul>

						<p>
							removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#shouldNotifyCluster()</code> instead.
						</p>

						<p>
							Don't construct internal <code class="code cc-1o5d2cw">ReindexAllStartedEvent</code> class.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.project.version.VersionService</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#delete(JiraServiceContext, ValidationResult)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">com.atlassian.jira.bc.project.version.VersionService#deleteVersionAndSwap</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.project.version.VersionService</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#deleteVersion(ApplicationUser, Version, Option&lt;Version&gt;, Option&lt;Version&gt;) </code>removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">com.atlassian.jira.project.version.VersionManager#deleteVersionAndSwap</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.license.JiraLicenseService.ValidationResult</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getLicenseVersion()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#getLicenseDetails().getLicenseVersion()</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.license.JiraLicenseService.ValidationResult</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getTotalUserCount()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use one of the following:
						</p>

						<ul class="ak-ul">
							<li>
								<p>
									<code class="code cc-1o5d2cw">com.atlassian.jira.application.ApplicationAuthorizationService#getUserCount(ApplicationKey)</code>
								</p>
							</li>
							<li>
								<p>
									<code class="code cc-1o5d2cw">com.atlassian.jira.user.util.UserManager#getTotalUserCount()</code>
								</p>
							</li>
						</ul>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.portal.PortalPageService</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#updatePortalPageUnconditionally(com.atlassian.jira.bc.JiraServiceContext, com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.portal.PortalPage) </code>removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use one of the following:
						</p>

						<ul class="ak-ul">
							<li>
								<p>
									<code class="code cc-1o5d2cw">#updatePortalPageOwner</code>
								</p>
							</li>
							<li>
								<p>
									<code class="code cc-1o5d2cw">#updatePortalPage</code>
								</p>
							</li>
							<li>
								<p>
									<code class="code cc-1o5d2cw">PortalPageManager#update</code>
								</p>
							</li>
						</ul>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.project.version.VersionService</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul>
							<li>
								<code>#validateVersionDetails(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.project.version.Version, java.lang.String, java.lang.String)</code>
							</li>
							<li>
								<code>#validateReleaseDate(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.project.version.Version, java.lang.String)</code>
							</li>
						</ul>

						<p>
							removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#validateUpdate(com.atlassian.jira.user.ApplicationUser,com.atlassian.jira.bc.project.version.VersionService.VersionBuilder)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.user.UserService</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#validateRemoveUserFromApplication(com.atlassian.jira.user.ApplicationUser, com.atlassian.application.api.ApplicationKey)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#validateRemoveUserFromApplication(com.atlassian.jira.user.ApplicationUser,com.atlassian.jira.user.ApplicationUser,com.atlassian.application.<span>api</span>.ApplicationKey)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.customfield.CustomFieldDefinition</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#CustomFieldDefinition()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#builder()</code> to construct the instance.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.issue.comment.CommentService</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul>
							<li>
								<code>#isGroupVisiblityEnabled()</code> renamed to <code>#isGroupVisibilityEnabled()</code>
							</li>
							<li>
								<code>#isProjectVisiblityEnabled()</code> renamed to <code>#isProjectRoleVisibilityEnabled()</code>
							</li>
						</ul>

						<p>
							removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use method with the <code class="code cc-1o5d2cw">visiblity</code> typo corrected to <code class="code cc-1o5d2cw">visibility</code>.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.issue.comment.CommentService</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#isValidCommentData(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.Issue, java.lang.String, java.lang.String, com.atlassian.jira.util.ErrorCollection)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use<br>
							<code class="code cc-1o5d2cw">#isValidCommentVisibility(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.Issue, com.atlassian.jira.bc.issue.visibility.Visibility, com.atlassian.jira.util.ErrorCollection)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.issue.comment.CommentService.CommentParameters</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul>
							<li>
								<code>#getGroupLevel()</code>
							</li>
							<li>
								<code>#getRoleLevelId()</code>
							</li>
						</ul>

						<p>
							removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use the <code class="code cc-1o5d2cw">#getVisibility()</code> method returning Visibility instance. Example of use that returns <code class="code cc-1o5d2cw">io.atlassian.fugue.Option&lt;String&gt;</code> instance with appropriate group level value:<br>
							<code class="code cc-1o5d2cw">#getVisibility().accept(VisibilityVisitors.returningGroupLevelVisitor())</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.issue.util.VisibilityValidator</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul>
							<li>
								<code>#isProjectRoleVisiblityEnabled()</code> renamed to <code>#isProjectRoleVisibilityEnabled()</code>
							</li>
							<li>
								<code>isGroupVisiblityEnabled()</code> renamed to <code>#isGroupVisibilityEnabled()</code>
							</li>
						</ul>

						<p>
							removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use methods with the <code class="code cc-1o5d2cw">visiblity</code> typo corrected to <code class="code cc-1o5d2cw">visibility</code>.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.issue.util.VisibilityValidator</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#isValidVisibilityData(com.atlassian.jira.bc.JiraServiceContext, java.lang.String, com.atlassian.jira.issue.Issue, java.lang.String, java.lang.String)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#isValidVisibilityData(com.atlassian.jira.bc.JiraServiceContext, String, com.atlassian.jira.issue.Issue, com.atlassian.jira.bc.issue.visibility.Visibility)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul>
							<li>
								<code>com.atlassian.jira.bc.issue.worklog.WorklogInputParameters</code>
							</li>
							<li>
								<code>com.atlassian.jira.bc.issue.worklog.WorklogInputParametersImpl</code>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul>
							<li>
								<code>#getGroupLevel()</code>
							</li>
							<li>
								<code>#getRoleLevelId()</code>
							</li>
						</ul>

						<p>
							removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use the <code class="code cc-1o5d2cw">#getVisibility()</code> method returning Visibility instance.
						</p>

						<p>
							Example of use that returns <code class="code cc-1o5d2cw">io.atlassian.fugue.Option&lt;String&gt;</code> instance with appropriate group level value:<br>
							<code class="code cc-1o5d2cw">#getVisibility().accept(VisibilityVisitors.returningGroupLevelVisitor())</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bulkedit.BulkOperationManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getBulkOperations()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#getProgressAwareBulkOperations()</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bulkedit.BulkOperationManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#addBulkOperation(String, Class)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use #<code class="code cc-1o5d2cw">addProgressAwareBulkOperation(String, Class)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bulkedit.BulkOperationManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getOperation(String)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#getProgressAwareOperation(String)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bulkedit.operation.BulkOperation</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole class removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">com.atlassian.jira.bulkedit.operation.ProgressAwareBulkOperation</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.config.ConstantsManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#storeIssueTypes(java.util.List&lt;org.ofbiz.core.entity.GenericValue&gt;)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code class="code cc-1o5d2cw">#updateIssueType(String, String, Long, String, String, Long)</code> or <code class="code cc-1o5d2cw">recalculateIssueTypeSequencesAndStore(java.util.List)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.config.properties.LookAndFeelBean</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getVersion()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#getSettingsHash()</code> to get the state of Look and feel.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.config.properties.LookAndFeelBean</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#updateVersion(long)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#updateSettingsHash()</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.config.SubTaskManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#insertSubTaskIssueType(java.lang.String, java.lang.Long, java.lang.String, java.lang.String) </code><span style="letter-spacing: 0.0px;">removed.</span>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#insertSubTaskIssueType(String,Long,String,Long)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.config.SubTaskManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#updateSubTaskIssueType(java.lang.String, java.lang.String, java.lang.Long, java.lang.String, java.lang.String)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#updateSubTaskIssueType(String,String,Long,String,Long)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul>
							<li>
								<code>com.atlassian.jira.event.issue.IssueWatcherAddedEvent</code>
							</li>
							<li>
								<code>com.atlassian.jira.event.issue.IssueWatcherDeletedEvent</code>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getUser()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#getApplicationUser()</code> instead
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.event.mail.EmailQueueFlashedEvent</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole class removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#com.atlassian.jira.event.mail.EmailQueueFlushedEvent</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Deprecated audit <span>API</span> code:
						</p>

						<ul>
							<li>
								<code>com.atlassian.jira.auditing.AssociatedItem</code>
							</li>
							<li>
								<code>com.atlassian.jira.auditing.ChangedValue</code>
							</li>
							<li>
								<code>com.atlassian.jira.auditing.AuditingCategory</code>
							</li>
							<li>
								<code>com.atlassian.jira.auditing.AuditingFilter</code>
							</li>
							<li>
								<code>com.atlassian.jira.auditing.RecordRequest</code>
							</li>
							<li>
								<code>com.atlassian.jira.auditing.AuditRecord</code>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole classes removed from public <span>API</span>.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use the following <span>API</span> code instead:
						</p>

						<ul>
							<li>
								<code>com.atlassian.audit.entity.AuditResource</code>
							</li>
							<li>
								<code>com.atlassian.audit.entity.ChangedValue</code>
							</li>
							<li>
								<code>com.atlassian.jira.auditing.AuditCategory</code>
							</li>
							<li>
								<code>com.atlassian.audit.api.AuditQuery</code>
							</li>
							<li>
								<code>com.atlassian.audit.entity.AuditEvent</code>
							</li>
							<li>
								<code>com.atlassian.audit.entity.AuditEntity</code>
							</li>
						</ul>

						<p>
							For more details, <a class="external-link" href="https://developer.atlassian.com/server/jira/platform/migrating-to-new-jira-audit-log-java-api/#migrating-to-the-new-jira-audit-log-java-api" rel="external nofollow" style="text-decoration: none;">refer to the migration guide</a>.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul>
							<li>
								<code>com.atlassian.jira.bc.whitelist.WhitelistService</code>
							</li>
							<li>
								<code>com.atlassian.jira.bc.whitelist.WhitelistManager</code>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole classes removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>com.atlassian.plugins.whitelist.WhitelistService</code> and <code>com.atlassian.plugins.whitelist.OutboundWhitelist</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul>
							<li>
								<code>com.atlassian.jira.issue.search.managers.IssueSearcherManager</code>
							</li>
							<li>
								<code>com.atlassian.jira.issue.search.managers.SearchHandlerManager</code>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getSearcherGroups(com.atlassian.jira.issue.search.SearchContext)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#getSearcherGroups()</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.search.managers.SearchHandlerManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getSearchersByClauseName(com.atlassian.jira.user.ApplicationUser, java.lang.String, com.atlassian.jira.issue.search.SearchContext)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#getSearchersByClauseName(com.atlassian.crowd.embedded.api.User,String)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.search.searchers.util.IndexedInputHelper</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getAllIndexValuesForMatchingClauses(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.search.ClauseNames, com.atlassian.query.Query, com.atlassian.jira.issue.search.SearchContext)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#getAllIndexValuesForMatchingClauses(com.atlassian.jira.user.ApplicationUser,com.atlassian.jira.issue.search.ClauseNames,com.atlassian.query.Query)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.search.searchers.util.IndexedInputHelper</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getAllNavigatorValuesForMatchingClauses(com.atlassian.jira.user.ApplicationUser, com.atlassian.jira.issue.search.ClauseNames, com.atlassian.query.Query, com.atlassian.jira.issue.search.SearchContext)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#getAllNavigatorValuesForMatchingClauses(ApplicationUser,com.atlassian.jira.issue.search.ClauseNames,com.atlassian.query.Query)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.util.IssueUpdateBean</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getUser()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#getApplicationUser()</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.jql.query.AbstractLocalDateOperatorQueryFactory</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole class removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>com.atlassian.jira.jql.util.JqlLocalDateSupport#getLocalDatesFromQueryLiterals(java.util.List)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.jql.util.JqlIssueSupport</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getIssues(java.lang.String)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#getIssue(java.lang.String)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.jql.util.JqlIssueSupport</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getIssues(java.lang.String, com.atlassian.jira.user.ApplicationUser)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#getIssue(java.lang.String,com.atlassian.jira.user.ApplicationUser)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.license.LicenseDetails</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getLicenseStatusMessage(com.atlassian.jira.user.ApplicationUser, java.lang.String, com.atlassian.jira.user.util.UserManager)</code>
						</p>

						<p>
							<code>#getLicenseStatusMessage(com.atlassian.jira.util.I18nHelper, com.atlassian.jira.web.util.OutlookDate, java.lang.String, com.atlassian.jira.user.util.UserManager) </code><span style="letter-spacing: 0.0px;">removed.</span>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#getLicenseStatusMessage(com.atlassian.jira.util.I18nHelper,UserManager)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.license.LicenseDetails</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#isLicenseAlmostExpired()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#getMaintenanceExpiryDate</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.mention.MentionService</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#sendCommentMentions(com.atlassian.jira.user.ApplicationUser, java.util.Set&lt;com.atlassian.jira.notification.NotificationRecipient&gt;, com.atlassian.jira.issue.comments.Comment, com.atlassian.jira.issue.comments.Comment)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#sendCommentMentions(Set,ApplicationUser,Comment,Comment)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.mention.MentionService</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#sendIssueCreateMentions(com.atlassian.jira.user.ApplicationUser, java.util.Set&lt;com.atlassian.jira.notification.NotificationRecipient&gt;, com.atlassian.jira.issue.Issue)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#sendIssueCreateMentions(Set,ApplicationUser,Issue)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.mention.MentionService</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#sendIssueEditMentions(com.atlassian.jira.user.ApplicationUser, java.util.Set&lt;com.atlassian.jira.notification.NotificationRecipient&gt;, com.atlassian.jira.issue.Issue, com.atlassian.jira.issue.comments.Comment) </code>removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#sendIssueEditMentions(Set,ApplicationUser,Issue,Comment)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.permission.PermissionSchemeManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getEntitiesByType(org.ofbiz.core.entity.GenericValue, com.atlassian.jira.security.plugin.ProjectPermissionKey, java.lang.String) </code>removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#getPermissionSchemeEntries(long,com.atlassian.jira.security.plugin.ProjectPermissionKey,String)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.permission.PermissionSchemeManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getGroups(java.lang.Long, com.atlassian.jira.project.Project)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#getGroups(ProjectPermissionKey,Project)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.plugin.keyboardshortcut.KeyboardShortcutManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getActiveShortcuts()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#listActiveShortcutsUniquePerContext</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.plugin.webfragment.conditions.AbstractJiraPermissionCondition</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole class removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>AbstractPermissionCondition</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.plugin.webfragment.conditions.AbstractPermissionCondition</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole class removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>AbstractProjectPermissionCondition</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.project.type.ProjectTypesEnabledCondition</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole class removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							No replacement.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.table.IssueTable</code> provided by <code>jira-api</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole class removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>com.atlassian.jira.issue.table.IssueTable</code> provided by <code>jira-issue-nav-plugin</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.rest.Dates.DateAdapter</code>
						</p>

						<p>
							<code>com.atlassian.jira.rest.Dates.DateTimeAdapter</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole classes removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							For marshalling and unmarshalling, use the Jackson-friendly serializers and deserializers:
						</p>

						<p>
							<code>@JsonSerialize(using = Dates.DateSerializer.class)</code>
						</p>

						<p>
							<code>@JsonDeserialize(using = Dates.DateDeserializer.class)</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.rest.v2.issue.project.ProjectRoleBean</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole classes removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>Use com.atlassian.jira.rest.api.project.ProjectRoleBean instead.</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1">
						<p>
							<code>com.atlassian.jira.rest.v2.issue.project.RoleActorBean</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1">
						<p>
							<code>Whole classes removed.</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>Use com.atlassian.jira.rest.api.project.RoleActorBean</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.rest.v1.model.ValueCollection</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole classes removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							No replacement.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.testkit.client.restclient.Response</code> provided by <code>jira-testkit-client</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							The class has been deprecated.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>com.atlassian.jira.testkit.client.restclient.ParsedResponse</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.testkit.client.RestApiClient</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#toResponse()</code> accepts <code>RestCall</code> functional interface.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use new <code>RestCall</code> interface or lambda in place of <code>Method</code> interface.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.avatar.AvatarManager</code><br>
							 
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getAvatarBaseDirectory</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#readAvatarData()</code> to access avatar data directly.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.util.AttachmentConfig</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole classes removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>AttachmentConfigManager#getTemporaryAttachmentDirectory()</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.attachment.AttachmentStore</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole classes removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use alternative methods provided by:
						</p>

						<p>
							<code>AttachmentManager</code>
						</p>

						<p>
							<code>ThumbnailManager</code>
						</p>

						<p>
							<code>AttachmentConfigManager</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.util.AttachmentUtils</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole classes removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							To create, read, or delete attachment and thumbnail data directly, use the methods available in <code>AttachmentManager</code> and <code>ThumbnailManager</code>.
						</p>

						<p>
							To find the temporary attachment directory, use <code>AttachmentConfigManager#getTemporaryAttachmentDirectory()</code>.
						</p>

						<p>
							The attachment and thumbnail directories for a particular issue are no longer exposed. Instead, use:
						</p>

						<p>
							<code>getThumbnailDirectory()</code>
						</p>

						<p>
							<code>getAttachmentDirectory()</code>.
						</p>

						<p>
							To manage individual attachments or store other data elsewhere, use:
						</p>

						<p>
							<code>AttachmentManager</code>
						</p>

						<p>
							<code>ThumbnailManager</code>.
						</p>

						<p>
							<code>getAttachmentStore()</code> - <code>AttachmentStore</code> has been removed.
						</p>

						<p>
							Instead of <code>getTemporaryAttachmentDirectory()</code>, use <code>AttachmentConfigManager#getTemporaryAttachmentDirectory()</code>.
						</p>

						<p>
							Instead of <code>getAttachmentFile</code> and <code>getThumbnailFile</code> methods, use <code>AttachmentManager</code> and <code>ThumbnalManager</code>. For example <code>AttachmentManager#streamAttachmentContent</code>.
						</p>

						<p>
							The following checks can be omitted: <code>checkValidAttachmentDirectory</code> and <code>checkValidTemporaryAttachmentDirectory</code>. Jira checks the validity of paths during startup.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>AttachmentManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#attachmentsEnabled()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>AttachmentConfigManager#isAttachmentsEnabled()</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>AttachmentManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#disableAttachments()</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							No replacement.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>AttachmentManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#createAttachmentCopySourceFile</code> and previously deprecated overloads of <code>#createAttachment</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>#createAttachment(CreateAttachmentParamsBean)</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#CreateAttachmentParamsBean</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use the provided builder<br>
							<code>com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean.Builder</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>AttachmentManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#deleteAttachmentDirectory(Issue)</code> removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							To delete an issue, use <code>IssueManager#deleteIssue</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.IssueInputParameters</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#addProperty(String propertyKey, JsonNode propertyValue) </code>changed to #addProperty(String propertyKey, String propertyValue).
						</p>

						<p>
							<code>#properties()</code> now returns <code>Map&lt;String, String&gt;</code> instead of <code>Map&lt;String, JsonNode&gt;</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Serialize the value before passing to the method and deserialize after reading it.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.UpdateIssueRequest</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getProperties()</code> now returns <code>Map&lt;String, String&gt;</code> instead of Map&lt;String, JsonNode&gt;
						</p>

						<p>
							<code>#UpdateIssueRequestBuilder#issueProperties</code> now accepts <code>Map&lt;String, String&gt;</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Serialize the value before passing to the method and deserialize after reading it.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.util.IssueUpdateBean</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#getProperties</code> now returns <code>Map&lt;String, String&gt;</code>
						</p>

						<p>
							<code>#addProperties</code> now accepts <code>Map&lt;String, String&gt;</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Serialize the value before passing to the method and deserialize after reading it.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.issue.IssueService.CreateValidationResult</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							constructor now accepts <code>Map&lt;String, String&gt;</code>
						</p>

						<p>
							<code>#getProperties</code> now returns <code>Map&lt;String, String&gt;</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Serialize the value before passing to the method and deserialize after reading it.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.issue.IssueService.UpdateValidationResult</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>constructor</code> now accepts <code>Map&lt;String, String&gt;</code>
						</p>

						<p>
							<code>#getProperties</code> now returns <code>Map&lt;String, String&gt;</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Serialize the value before passing to the method and deserialize after reading it.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.configurable.ObjectConfigurationFactory</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>#loadObjectConfigurationFromElement</code> now accepts <code>com.atlassian.plugin.module.Element</code> instead of <code>org.dom4j.Element</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use the new type in method calls.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.issue.fields.rest.IssueFinderV2</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							#findIssue(String) now returns<code> io.atlassian.fugue.Either</code> instead of <code>com.atlassian.fugue.Either</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Replaced class is equivalent.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.config.util</code><br>
							<code>AttachmentPathManager</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole class removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use the methods available in <code>AttachmentManager</code> to create/read/delete attachment data directly. For the settings related methods, use the new endpoints provided in <code>AttachmentConfigManager</code>.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.testkit.client.AttachmentsControl</code>
						</p>

						<p>
							<code>com.atlassian.jira.testkit.plugin.AttachmentsBackdoor)</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Whole classes removed.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>com.atlassian.jira.functest.framework.backdoor.AttachmentFileControl</code> in <code>jira-func-tests</code> (which requires the <code>jira-func-test-plugin</code> to be installed). It provides storage-agnostic alternative methods to allow copying and clearing attachments.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.bc.dataimport.DataImportParams</code>
						</p>

						<p>
							 
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1">
						<p>
							<code>#isUseDefaultPaths</code>
						</p>

						<p>
							<code>Builder#setUseDefaultPaths</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							This option is no longer supported.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.jira.web.action.JiraWebActionSupport</code>
						</p>
					</td>
				</tr>
			</tbody>
		</table>
	</div>
</div>

<p>
	 
</p>

<h2 id="JiraSoftware10.0.xupgradenotes-restapiBreakingchangestotheRESTAPI">
	Breaking changes to the REST API
</h2>

<p>
	In this release, we’ve removed a set of REST <span>API</span> endpoints that have been deprecated since Jira Software 9.x.
</p>

<p>
	Here’s what’s been changed:
</p>

<div class="table-wrap">
	<div class="table-block">
		<table class="wrapped relative-table confluenceTable" style="margin-left: 0.0px;width: 100.078%;">
			<colgroup>
				<col style="width: 48.4246%;">
				<col style="width: 51.5909%;">
			</colgroup>
			<tbody>
				<tr>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Change
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Instructions
						</p>
					</th>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Removed private endpoint <code>POST /api/1.0/user/{username}/avatar/{avatarid}</code> provided by <code>com.atlassian.jira.rest.v1.users.UserResource</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>PUT /rest/api/2/user/avatar</code> provided by <code>com.atlassian.jira.rest.v2.issue.UserResource#updateUserAvatar</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Removed private endpoint <code>GET globalconfig/1/issuecustomfields/{issue}</code> provided by <code>com.atlassian.jira.projectconfig.rest.global.IssueCustomFieldsResource#getAffectedProjects</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							No replacement.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Removed private endpoint <code>POST globalconfig/1/customfieldoptions/{customFieldId}/</code> provided by <code>com.atlassian.jira.projectconfig.rest.global.CustomFieldOptionsResource#setOptions</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>POST globalconfig/1/customfieldoptions/{customFieldId}/setOptions</code> provided by <code>com.atlassian.jira.projectconfig.rest.global.CustomFieldOptionsResource#setOptionsForCustomField</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>/greenhopper/1.0/api/sprints/{sprintId}/remotelink</code> provided by <code>com.atlassian.greenhopper.web.api.RemoteSprintLinkResource#createOrUpdateRemoteSprintLink</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>greenhopper/1.0/api/sprints/{sprintId}/remotelinkchecked</code> provided by <code>com.atlassian.greenhopper.web.api.RemoteSprintLinkResource#createRemoteSprintLinkChecked</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Removed public endpoints:
						</p>

						<ul class="ak-ul">
							<li>
								<p>
									<code>GET /rest/api/2/auditing/record</code>
								</p>
							</li>
							<li>
								<p>
									<code>POST /rest/api/2/auditing/record</code>
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use the following endpoints instead:
						</p>

						<ul class="ak-ul">
							<li>
								<p>
									<code>GET /rest/auditing/1.0/events</code>
								</p>
							</li>
							<li>
								<p>
									<code>GET /rest/auditing/1.0/configuration/coverage</code>
								</p>
							</li>
							<li>
								<p>
									<code>GET /rest/auditing/1.0/configuration/retention</code>
								</p>
							</li>
							<li>
								<p>
									<code>GET /rest/auditing/1.0/configuration/retention/file</code>
								</p>
							</li>
						</ul>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Removed public endpoint <code>GET /rest/api/2/group</code> provided by <code>com.atlassian.jira.rest.v2.issue.GroupResource#getGroup</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>GET /rest/api/2/group/member</code> provided by <code>com.atlassian.jira.rest.v2.issue.GroupResource#getUsersFromGroup</code>.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Removed public endpoint <code>DELETE /rest/api/2/version/{id}</code> provided by<code> com.atlassian.jira.rest.v2.issue.VersionResource#delete(java.lang.String, java.lang.String, java.lang.String)</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>POST /rest/api/2/version/{id}/removeAndSwap</code> provided by <code>com.atlassian.jira.rest.v2.issue.VersionResource#delete(String, DeleteAndReplaceVersionBean)</code>.
						</p>

						<p>
							Note that the replacement endpoint doesn't publish the <code>jira:version_merged</code> webhook event.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<div class="content-wrapper">
							<p>
								<span class="status-macro aui-lozenge aui-lozenge-current conf-macro output-inline" data-hasbody="false" data-macro-name="status">JIRA SERVICE MANAGEMENT</span> Removed <code>GET /servicedeskapi/queues/{projectKey}</code>
							</p>
						</div>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>GET /servicedeskapi/admin/queues/{projectKey}</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<div class="content-wrapper">
							<p>
								<span class="status-macro aui-lozenge aui-lozenge-current conf-macro output-inline" data-hasbody="false" data-macro-name="status">JIRA SERVICE MANAGEMENT</span> Removed <code><span style="letter-spacing: 0.0px;">PUT /servicedeskapi/queues/include-count</span></code>
							</p>
						</div>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>PUT /servicedeskapi/admin/queues/include-count</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<div class="content-wrapper">
							<p>
								<span class="status-macro aui-lozenge aui-lozenge-current conf-macro output-inline" data-hasbody="false" data-macro-name="status">JIRA SERVICE MANAGEMENT</span> Removed <code>PUT /servicedeskapi/queues/{projectKey}/include-count</code>
							</p>

							<p>
								 
							</p>
						</div>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>PUT /servicedeskapi/admin/queues/{projectKey}/include-count </code>instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<div class="content-wrapper">
							<p>
								<span class="status-macro aui-lozenge aui-lozenge-current conf-macro output-inline" data-hasbody="false" data-macro-name="status">JIRA SERVICE MANAGEMENT</span> Removed <code>PUT /servicedeskapi/queues/cache-count</code>
							</p>
						</div>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>PUT /servicedeskapi/admin/queues/cache-count</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<div class="content-wrapper">
							<p>
								<span class="status-macro aui-lozenge aui-lozenge-current conf-macro output-inline" data-hasbody="false" data-macro-name="status">JIRA SERVICE MANAGEMENT</span>Removed <code>PUT /servicedeskapi/queues/{projectKey}/cache-count</code>
							</p>
						</div>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>PUT /servicedeskapi/admin/queues/{projectKey}/cache-count</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							The <code>GET rest/api/2/serverInfo</code> endpoint no longer supports the doHealthCheck parameter and does not include the healthChecks field in the response.
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Use <code>jira-healthcheck-plugin</code> instead.
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Removed <code>GET rest/api/1.0/endpoint</code>
						</p>
					</td>
				</tr>
			</tbody>
		</table>
	</div>
</div>

<p>
	 
</p>

<h2 id="JiraSoftware10.0.xupgradenotes-dependenciesRemovalofdependencies">
	Removal of dependencies
</h2>

<p>
	In this release, we’ve removed access to a number of dependencies.
</p>

<p>
	Here’s what’s been changed:
</p>

<div class="table-wrap">
	<div class="table-block">
		<table class="wrapped confluenceTable" style="margin-left: 0.0px;">
			<tbody>
				<tr>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Dependency
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							Java packages
						</p>
					</th>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>nekohtml:nekohtml</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.cyberneko.html</code><br>
							<code>org.cyberneko.html.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>commons-validator:commons-validator</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.commons.validator</code><br>
							<code>org.apache.commons.validator.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.scala.plugins:scala-2.11-provider-plugin</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>scala.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.scala.plugins:scala-2.10-provider-plugin</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>scala.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.scala.plugins:jackson-module-scala-2.10-provider-plugin</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.fasterxml.jackson.module.scala2_10</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>io.atlassian.fugue:fugue-scala</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>io.atlassian.fugue.converters</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>commons-daemon:commons-daemon</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.commons.daemon.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.tomcat:tomcat-coyote</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.coyote.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>commons-el:commons-el</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.commons.el.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.tomcat:tomcat-jasper</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.jasper.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.tomcat:tomcat-juli</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.juli</code><br>
							<code>org.apache.juli.logging</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.tomcat:*</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.tomcat</code><br>
							<code>org.apache.catalina</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.tika:tika-core</code><br>
							<code>org.apache.tika:tika-*</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.tika</code><br>
							<code>org.apache.tika.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.xmlgraphics:batik-transcoder</code><br>
							<code>org.apache.xmlgraphics:batik-codec</code><br>
							<code>org.apache.xmlgraphics:batik-js</code><br>
							<code>org.apache.xmlgraphics:batik-svggen</code><br>
							<code>org.apache.xmlgraphics:fop</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.batik</code><br>
							<code>org.apache.batik.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.querydsl:querydsl-core</code><br>
							<code>com.querydsl:querydsl-sql</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.mysema.commons.lang</code><br>
							<code>com.querydsl.core</code><br>
							<code>com.querydsl.core.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>commons-configuration:commons-configuration</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.commons.configuration</code><br>
							<code>org.apache.commons.configuration.beanutils</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.commons:commons-collections4</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.commons.collections4</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.thoughtworks.xstream:xstream</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.thoughtworks.xstream</code><br>
							<code>com.thoughtworks.xstream.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.commons:commons-dbcp2</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.commons.dbcp2</code><br>
							<code>org.apache.commons.dbcp2.cpdsadapter</code><br>
							<code>org.apache.commons.dbcp2.datasources</code><br>
							<code>org.apache.commons.dbcp2.managed</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.sun.syndication:<a class="external-link" href="http://com.springsource.com" rel="external nofollow">com.springsource.com</a>.sun.syndication</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.sun.syndication.feed.*</code><br>
							<code><a class="external-link" href="http://com.sun.syndication.io" rel="external nofollow">com.sun.syndication.io</a>.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>rome:rome</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.sun.syndication.feed.*</code><br>
							<code><a class="external-link" href="http://com.sun.syndication.io" rel="external nofollow">com.sun.syndication.io</a>.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>commons-discovery:commons-discovery</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.commons.discover.jdk</code><br>
							<code>org.apache.commons.discovery.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>commons-jexl:commons-jexl</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.commons.jexl.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>commons-jrcs:commons-jrcs</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.commons.jrcs.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.github.rholder:guava-retrying</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.github.rholder.retry.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.dom4j:dom4j</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.dom4j.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>opensymphony:sitemesh</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.opensymphony.module.*</code><br>
							<code>com.opensymphony.sitemesh.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.jdom:jdom</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.jdom.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>commons-pool:commons-pool</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.commons.pool.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.tuckey:urlrewritefilter</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.tuckey.web.filters.urlrewrite.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.springframework.security:spring-security-core</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.springframework.security.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.p4package:atlassian-p4package</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.perforce.api</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>commons-beanutils:commons-beanutils</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.commons.beanutils</code><br>
							<code>org.apache.commons.beanutils.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.commons:comons-compress</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.apache.commons.compress</code><br>
							<code>org.apache.commons.compress.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.sun:jai_core</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.sun.media.jai.*</code><br>
							<code>javax.media.jai</code><br>
							<code>javax.media.jai.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.sun:jai_codec</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.sun.media.jai.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>wsdl4j:wsdl4j</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.ibm.wsdl</code><br>
							<code>com.ibm.wsdl.*</code><br>
							<code>javax.wsdl</code><br>
							<code>javax.wsdl.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.fugue:fugue</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>com.atlassian.fugue.*</code>
						</p>
					</td>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.dom4j:dom4j</code>
						</p>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<code>org.dom4j.*</code>
						</p>
					</td>
				</tr>
			</tbody>
		</table>
	</div>
</div>

<p>
	 
</p>

<h2 id="JiraSoftware10.0.xupgradenotes-binaryRemovalofbinaryinstallers">
	Removal of binary installers
</h2>

<p>
	Starting from Jira 10.0, the <code>.bin</code> and <code>.exe</code> installers will no longer be available. You can still install Jira using the <code>.zip</code> and <code>.tar.gz</code> distributions.
</p>

<div class="admonition-block note-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<svg class="admonition-icon" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"> <g fill="none" fill-rule="evenodd"> </g></svg>
</div>

<div class="admonition-block note-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<svg class="admonition-icon" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"> </g> </svg>

	<p>
		Because of this change, Java is no longer bundled with Jira. <a class="conf-macro output-inline" data-hasbody="true" data-macro-name="sp-plaintextbody-link" href="https://confluence.atlassian.com/adminjiraserver0916/installing-java-1402671854.html" rel="external nofollow">Install Java manually</a>
	</p>
</div>

<h2 id="JiraSoftware10.0.xupgradenotes-auiJiraSoftwareandJiraCoredialogsmigratedtoAUIDialog2">
	Jira Software and Jira Core dialogs migrated to AUI Dialog 2
</h2>

<div class="admonition-block note-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<svg class="admonition-icon" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"> <g fill="none" fill-rule="evenodd"> </g></svg>
</div>

<div class="admonition-block note-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<svg class="admonition-icon" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"> </g> </svg>

	<p>
		This is still a work in progress. You can expect to see the full removal of AUI Dialog 1 from the Jira codebase by the upcoming LTS release.
	</p>
</div>

<p>
	<span style="letter-spacing: 0.0px;">Jira Software and Jira Core currently stand with significant majority of the components migrated to use AUI Dialog 2. AUI Dialog 1 will be removed from Jira completely by the upcoming LTS release. If your app uses that component, </span><a class="external-link" href="https://aui.atlassian.com/aui/latest/docs/dialog2.html" rel="external nofollow" style="text-decoration: none;" title="https://aui.atlassian.com/aui/latest/docs/dialog2.html">make sure to migrate to AUI Dialog 2</a><span style="letter-spacing: 0.0px;">.</span>
</p>

<h2 id="JiraSoftware10.0.xupgradenotes-linksApplicationLinkscompatibility">
	Application Links compatibility
</h2>

<p>
	Starting from Jira 10.0, Application Links are only backward-compatible with products that have integrated a particular bug fix addressing incorrect Application Links version parsing. To enable Application Links to function properly, make sure to upgrade any other Atlassian products to a <em>minimum</em> supported version:
</p>

<p>
	 
</p>

<div class="table-wrap">
	<div class="table-block">
		<table class="wrapped confluenceTable" style="margin-left: 0.0px;">
			<tbody>
				<tr>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<strong>Jira Software</strong>
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<strong>Jira Service Management</strong>
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<strong>Confluence</strong>
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<strong>Bitbucket</strong>
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<strong>Bamboo</strong>
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<strong>Crowd</strong>
						</p>
					</th>
					<th class="confluenceTh" colspan="1" rowspan="1" style="text-align: left;">
						<p>
							<strong>Fisheye and Crucible</strong>
						</p>
					</th>
				</tr>
				<tr>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									9.4.24
								</p>
							</li>
							<li>
								<p>
									9.12.12
								</p>
							</li>
							<li>
								<p>
									9.17.1
								</p>
							</li>
							<li>
								<p>
									10.0.0
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									5.4.24
								</p>
							</li>
							<li>
								<p>
									5.12.12
								</p>
							</li>
							<li>
								<p>
									5.17.1
								</p>
							</li>
							<li>
								<p>
									10.0.0
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									7.19.25
								</p>
							</li>
							<li>
								<p>
									8.5.12
								</p>
							</li>
							<li>
								<p>
									8.9.4
								</p>
							</li>
							<li>
								<p>
									9.0.0
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									8.9.15
								</p>
							</li>
							<li>
								<p>
									8.19.4
								</p>
							</li>
							<li>
								<p>
									9.0.0
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									9.2.15
								</p>
							</li>
							<li>
								<p>
									9.6.3
								</p>
							</li>
							<li>
								<p>
									10.0.0
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									5.11.1
								</p>
							</li>
							<li>
								<p>
									5.2.6
								</p>
							</li>
							<li>
								<p>
									5.3.2
								</p>
							</li>
							<li>
								<p>
									6.0.0
								</p>
							</li>
						</ul>
					</td>
					<td class="confluenceTd" colspan="1" rowspan="1" style="text-align: left;">
						<ul class="ak-ul">
							<li>
								<p>
									4.8.6
								</p>
							</li>
							<li>
								<p>
									4.9.0
								</p>
							</li>
						</ul>
					</td>
				</tr>
			</tbody>
		</table>
	</div>
</div>

<h2 id="JiraSoftware10.0.xupgradenotes-velocityVelocitypathtraversalpreventionandallowlisting">
	Velocity path traversal prevention and allowlisting
</h2>

<p>
	We've upgraded Velocity to the Atlassian fork to implement path traversal prevention and allowlisting. The path traversal mechanism will escape any method call which contains parameter with path traversal symbols like <code>../</code>. The method call will appear as a string on the front-end side.
</p>

<p>
	<a class="external-link" href="https://developer.atlassian.com/server/framework/atlassian-sdk/configuring-the-velocity-allowlist/" rel="external nofollow" style="text-decoration: none;" title="https://developer.atlassian.com/server/framework/atlassian-sdk/configuring-the-velocity-allowlist/">Velocity template method invocations are now restricted to an allowlist</a>. Unauthorized invocations will trigger a log warning and will be blocked to mitigate Server-Side Template Injection (SSTI) vulnerabilities. The global method allowlists encompass JDK and Atlassian class methods. Apps have the option to define their own allowlist using the module descriptor which will complement the global allowlist. We recommend that apps only expose immutable Data Transfer Objects (DTOs) and refrain from invoking application services or beans from templates.
</p>

<p>
	Furthermore, all <a class="external-link" href="https://developer.atlassian.com/server/framework/atlassian-sdk/velocity-file-allowlist/" rel="external nofollow" style="text-decoration: none;" title="https://developer.atlassian.com/server/framework/atlassian-sdk/velocity-file-allowlist/">Velocity template files residing on the file system must be both allowlisted and of an allowlisted file type</a>. This serves as a basic defense against attacks that combine file system access with a request to achieve remote code execution.
</p>

<div class="admonition-block info-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<svg class="admonition-icon" height="18" viewbox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"> </svg>
</div>

<div class="admonition-block info-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<svg class="admonition-icon" height="18" viewbox="0 0 18 18" width="18" xmlns="http://www.w3.org/2000/svg"> </svg>

	<p>
		For now, the Velocity method allowlist is in debug mode so that app developers can adjust to this mechanism and for us to complete the main allowlist and minimize the risk of issues. The debug mode will be disabled at the earliest in the upcoming LTS.
	</p>
</div>

<h2 id="JiraSoftware10.0.xupgradenotes-schemaUpdatestodatabaseschema">
	Updates to database schema
</h2>

<p>
	We’ve updated the <code>created</code> column in the <code>changegroup</code>, <code>jiraissue</code>, and <code>jiraaction</code> tables to support millisecond precision. This change affects Oracle and MySQL databases only. No action is required—the schema will be automatically migrated upon restart.
</p>

<h2 id="JiraSoftware10.0.xupgradenotes-moduleRemovalofthejira-func-tests-legacymodule">
	Removal of the jira-func-tests-legacy module
</h2>

<p>
	We’ve removed the deprecated <code>com.atlassian.jira:jira-func-tests-legacy</code> module. Migrate your code from <code>BaseJIRAWebTest</code> (JUnit 3) to <code>FuncTestCase</code> (JUnit 4+).
</p>

<h2 id="JiraSoftware10.0.xupgradenotes-runtimeDisablingtheruntimeJavaServerPagescompilation">
	Disabling the runtime JavaServer Pages compilation
</h2>

<p>
	JavaServer Pages (JSP) runtime compilation will be disabled in Jira Software 10.0. JSP files added to the Tomcat directory that aren't shipped with the product won’t be served. Furthermore, no modifications to the JSP files will be reflected. We recommend using Soy or Velocity templates instead.
</p>

<h2 id="JiraSoftware10.0.xupgradenotes-customCustomJSPsareblockedunlessloadedbyanaction">
	Custom JSPs are blocked unless loaded by an action
</h2>

<p>
	We’ve blocked direct requests to JSP files. JSP files can now be only loaded when requested by an action.
</p>

<h2 id="JiraSoftware10.0.xupgradenotes-pluginUnbundlingofatlassian-frontend-runtime-plugin">
	Unbundling of atlassian-frontend-runtime-plugin
</h2>

<p>
	We’ve unbundled the atlassian-frontend-runtime-plugin provided common polyfills and the regenerator-runtime web resource. Since none of the supported browsers need these polyfills any longer and the plugin has been deprecated since Jira Software 9.2.0, we’ve removed it in Jira Software 10.0.
</p>

<p>
	If your code is still using any web resources from this plugin, the following warnings may appear in your Jira logs:
</p>

<p>
	<code>This webresource is empty! All supported browsers no longer need these polyfills. Please remove your dependency on the "atlassian-frontend-runtime-plugin".</code>
</p>

<p>
	or
</p>

<p>
	<code>This webresource is deprecated and will soon be removed! All supported browsers no longer need the runtime. Please rebuild your sources without expecting the "regenerator-runtime" to be available.</code>
</p>

<p>
	The former <code>babel-polyfill</code>, <code>core-js</code>, <code>custom-elements-v1</code>, <code>fetch</code>, and <code>focus-visible</code> were already empty web resources, while the <code>regenerator-runtime</code> was still provided.
</p>

<h2 id="JiraSoftware10.0.xupgradenotes-deprecationDeprecationofjquery-migrate1.x">
	Deprecation of jquery-migrate 1.x
</h2>

<p>
	We’re upgrading jQuery and as part of that effort, we’ve deprecated jquery-migrate 1.x in Jira Software 10.0 and removed it from the superbatch Web Resource.
</p>

<p>
	While jquery-migrate can still be loaded using certain Web Resource Keys (such as <code>com.atlassian.plugins.jquery:jquery</code> or <code>com.atlassian.plugins.jquery:jquery-migrate</code>), we advise against this.
</p>

<p>
	For more information on the deprecation of jquery-migrate 1.x, visit the <a class="external-link" href="https://jquery.com/upgrade-guide/1.9/" rel="external nofollow" style="text-decoration: none;" title="https://jquery.com/upgrade-guide/1.9/">jQuery upgrade guide</a>. For queries about jquery-migrate 1.x warnings, refer to <a class="external-link" href="https://github.com/jquery/jquery-migrate/blob/main/warnings.md" rel="external nofollow" style="text-decoration: none;" title="https://github.com/jquery/jquery-migrate/blob/main/warnings.md">jQuery migrate warnings</a>. For future jQuery updates, refer to the <a class="external-link" href="https://jquery.com/upgrade-guide/3.0/" rel="external nofollow" style="text-decoration: none;" title="https://jquery.com/upgrade-guide/3.0/">3.0</a> and <a class="external-link" href="https://jquery.com/upgrade-guide/3.5/" rel="external nofollow" style="text-decoration: none;" title="https://jquery.com/upgrade-guide/3.5/">3.5</a> upgrade guides.
</p>

<h2 id="JiraSoftware10.0.xupgradenotes-centralizedCentralizeddependencymanagement">
	Centralized dependency management
</h2>

<p>
	Centralized dependency management in Jira Software 10 introduces a set of Maven POM files known as a Bill of Materials (BOM) which list the dependencies available to third-party apps.
</p>

<p>
	This system aims to streamline responding to security threats and enhance efficiency of developing for Jira by ensuring that dependencies are uniform and up to date. This approach minimizes runtime errors such as <code>NoSuchMethodException</code> and allows for quicker responses to security vulnerabilities within these dependencies.
</p>

<div class="expand-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<a class="expand-block-expand-button" href="https://confluence.atlassian.com/jirasoftware/jira-software-10-0-x-upgrade-notes-1431241649.html#" rel="external nofollow"><svg aria-labelledby="title-9tlglob" class="expand-block-expand-icon" focusable="false" height="20" role="img" viewbox="0 0 20 20" width="20"> </svg></a>
</div>

<div class="expand-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<a class="expand-block-expand-button" href="https://confluence.atlassian.com/jirasoftware/jira-software-10-0-x-upgrade-notes-1431241649.html#" rel="external nofollow"><svg aria-labelledby="title-9tlglob" class="expand-block-expand-icon" focusable="false" height="20" role="img" viewbox="0 0 20 20" width="20"> </svg> <span>See more details</span> </a>

	<div class="expand-block-content-wrapper">
		<div class="expand-block-content">
			There are multiple BOM files, each serving different functions:
			<ul>
				<li>
					<code>jira-api-bom</code>: This BOM is designed for external products. It offers a centralized location for managing the dependencies of external products, ensuring that they’re using the correct, up-to-date versions of dependencies.
				</li>
				<li>
					<code>jira-deprecated-api-bom</code>: This BOM lists libraries that may undergo changes or be removed from the public Bill of Materials in future updates.
				</li>
				<li>
					<code>jira-internal-bom</code>: This BOM is intended for internal products. It provides a centralized location for managing internal dependencies, ensuring consistency across all internal products.
				</li>
				<li>
					<code>jira-bundled-plugins-bom</code>: This BOM manages the versions of apps bundled with Jira.
				</li>
			</ul>

			<h4 id="JiraSoftware10.0.xupgradenotes-Usingartifactsforversionmanagement">
				Using artifacts for version management
			</h4>

			<p>
				BOMs (Bill of Materials) are Maven modules of the <code>pom</code> packaging type, which are designed to facilitate the management of imported dependencies as detailed in the Maven documentation.
			</p>

			<p>
				Each BOM contains dependency management sections rather than direct dependencies. To use a BOM, you should first include it as a dependency with the <code>import</code> scope. For example:
			</p>

			<p>
				<code>1 2 3 4 5 6 7 &lt;dependency&gt; &lt;groupId&gt;com.atlassian.jira&lt;/groupId&gt; &lt;artifactId&gt;jira-api-bom&lt;/artifactId&gt; &lt;version&gt;${jira.version}&lt;/version&gt; &lt;type&gt;pom&lt;/type&gt; &lt;scope&gt;import&lt;/scope&gt; &lt;/dependency&gt;</code>
			</p>

			<p>
				Subsequently, other dependencies should be explicitly defined manually with the scope <code>provided</code>, <strong>omitting</strong> version specifications. The versions will be configured through the imported BOM artifacts. For example:
			</p>

			<p>
				<code>1 2 3 4 5 &lt;dependency&gt; &lt;groupId&gt;com.atlassian.security&lt;/groupId&gt; &lt;artifactId&gt;atlassian-secure-utils&lt;/artifactId&gt; &lt;scope&gt;provided&lt;/scope&gt; &lt;/dependency&gt;</code>
			</p>

			<h4 id="JiraSoftware10.0.xupgradenotes-AdoptingcentralizedBOMsinappdevelopment">
				Adopting centralized BOMs in app development
			</h4>

			<p>
				To adopt centralised BOMs:
			</p>

			<ol class="ak-ol">
				<li>
					<p>
						Remove the <code>jira-project</code> dependency management import.
					</p>
				</li>
				<li>
					<p>
						Add <code>jira-api-bom</code> as a dependency with scope <code>import</code>.
					</p>
				</li>
				<li>
					<p>
						Consider adding <code>jira-deprecated-api-bom</code> if needed, but note that these dependencies are marked as deprecated and will be removed in future versions.
					</p>
				</li>
				<li>
					<p>
						Remove redundant dependency management sections from your poms (for artefacts covered by the BOM).
					</p>
				</li>
				<li>
					<p>
						Since BOM doesn't define <code>scope</code>, if your dependency management section used to contain <code>scope</code> definition, you must now add it to the actual dependency declaration.
					</p>
				</li>
				<li>
					<p>
						Conduct deep analysis of the dependency tree to ensure all dependencies are correctly managed, and no discrepancies exist between versions. All dependencies listed in the BOM files.
					</p>
				</li>
				<li>
					<p>
						Ensure that dependencies, especially those in the provided scope, don't have a <code>version</code> field to allow the central pom to define it. This ensures consistency and prevents runtime issues.
					</p>
				</li>
			</ol>
		</div>
	</div>
</div>

<h2 id="JiraSoftware10.0.xupgradenotes-trueicon_endofsupport.png32Changestosupportedplatforms">
	Changes to supported platforms
</h2>

<p>
	See what changes have been made to supported platforms in this Jira release. For more details, check out <a class="conf-macro output-inline" data-hasbody="false" data-macro-name="sp-nobody-link" href="https://confluence.atlassian.com/adminjiraserver/supported-platforms-938846830.html" rel="external nofollow">Supported platforms</a>.
</p>

<h3 id="JiraSoftware10.0.xupgradenotes-End-of-supportannouncements">
	End-of-support announcements
</h3>

<h4 id="JiraSoftware10.0.xupgradenotes-We’veremovedsupportfor:">
	We’ve removed support for:
</h4>

<ul>
	<li>
		<code>.bin</code> and <code>.exe</code> binary installers
	</li>
	<li>
		<span><span class="_11q7y4f7 _5pioz8co _189eyh40 _n3tdv77o _1il9nqa1 _19lc184f _d0altlke acronym-highlight">H2</span></span> database engine
	</li>
	<li>
		Java 8
	</li>
	<li>
		Java 11
	</li>
</ul>

<h4 id="JiraSoftware10.0.xupgradenotes-We’veunbundled:">
	We’ve unbundled:
</h4>

<ul class="ak-ul">
	<li>
		<p>
			Java (due to the binary installers removal)
		</p>
	</li>
</ul>

<h2 id="JiraSoftware10.0.xupgradenotes-trueicon_appdevelopers.png32Appdevelopers">
	<span style="letter-spacing: -0.008em;">App developers</span>
</h2>

<p>
	For any important changes regarding apps, <span style="color: rgb(0,51,102);"><a class="external-link" href="https://developer.atlassian.com/server/jira/platform/changelog/" rel="external nofollow">check out the Jira changelog</a>.</span>
</p>

<h3 id="JiraSoftware10.0.xupgradenotes-FAQforappdevelopers">
	<span style="color: rgb(0,51,102);">FAQ for app developers</span>
</h3>

<p>
	<span style="color: rgb(0,51,102);"><span style="color: rgb(23,43,77);">Based on your feedback from the </span><a class="external-link" href="https://community.developer.atlassian.com/t/preparing-for-jira-software-10-0-and-jira-service-management-6-0-multiple-eaps-coming-your-way/76688?u=andrzejkotas" rel="external nofollow" style="text-decoration: none;">Developer Community announcement of Jira Software 10.0</a><span style="color: rgb(23,43,77);">, we’ve prepared a list of frequently asked questions.</span></span><a href="https://confluence.atlassian.com/jirasoftware/jira-software-10-0-x-upgrade-notes-1431241649.html" ipsnoembed="true" rel="external nofollow">https://confluence.atlassian.com/jirasoftware/jira-software-10-0-x-upgrade-notes-1431241649.html</a>
</p>

<h2>
	 
</h2>

<h2 id="JiraSoftware10.0.xupgradenotes-issuesKnownissues">
	Known issues
</h2>

<h3 id="JiraSoftware10.0.xupgradenotes-RedirectbehaviorofStrongerDefaults">
	Redirect behavior of Stronger Defaults
</h3>

<p>
	To optimize the user experience requests are redirected (HTTP 302) to the login page when a security clearance requirement isn't met. This doesn’t apply to REST endpoints as they're intended for machines and programmatic use cases. For those, REST requests are rejected (HTTP 401/403). However, if your code is making a call to a non-REST endpoint, you need to handle the redirection case. Otherwise, your code can interpret the login page as the expected data and throw a parsing error.
</p>

<p>
	We’re planning to improve this behavior in a future release by examining the <code>Accept</code> header before deciding whether to redirect or reject a request.
</p>

<h3 id="JiraSoftware10.0.xupgradenotes-AutomationforJira9.0.1upgrade">
	Automation for Jira 9.0.1 upgrade
</h3>

<p>
	If at some point you’ve used Automation for Jira version 9.0.1 and try to upgrade from Jira 8.20.x or later to Jira 10.0, you might experience issues around automation rules (such as not being allowed to enable, disable, or publish automation rules). <a class="cc-1rn59kg" href="https://confluence.atlassian.com/automationkb/automation-rules-cannot-be-enabled-disabled-or-published-after-an-upgrade-of-automation-for-jira-1283364082.html" rel="external nofollow" style="text-decoration: none;" title="https://confluence.atlassian.com/automationkb/automation-rules-cannot-be-enabled-disabled-or-published-after-an-upgrade-of-automation-for-jira-1283364082.html">Learn more about this issue</a>
</p>

<p>
	To fix this issue, you need to run the relevant SQL scripts manually in the Jira database:
</p>

<ol>
	<li>
		Stop the Jira application.
	</li>
	<li>
		Back up the database.
	</li>
	<li>
		Download the relevant script file for the type of database used by the Jira application as per step 5 in <a class="cc-1rn59kg" href="https://confluence.atlassian.com/automation/upgrading-to-automation-for-jira-7-3-1055951956.html" rel="external nofollow" style="text-decoration: none;" title="https://confluence.atlassian.com/automation/upgrading-to-automation-for-jira-7-3-1055951956.html">Upgrading to Automation for Jira 7.3</a>.
	</li>
	<li>
		Run the script on the Jira database.
	</li>
	<li>
		Start the Jira application.
	</li>
</ol>

<h2 id="JiraSoftware10.0.xupgradenotes-trueicon_upgradeprocedure.png32upgradeUpgradeprocedure">
	<span style="letter-spacing: -0.008em;">Upgrade procedure</span>
</h2>

<div class="admonition-block note-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<svg class="admonition-icon" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"> <g fill="none" fill-rule="evenodd"> </g></svg>
</div>

<div class="admonition-block note-block conf-macro output-block" data-hasbody="true" data-macro-name="sp-macrooverride-richtextbody-block">
	<svg class="admonition-icon" height="16" viewbox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"> </g> </svg>

	<p>
		<span style="color: rgb(23,43,77);">Before you upgrade, check app compatibility by visiting </span><span style="color: rgb(23,43,77);"><span class="loader-wrapper"><span><span><a class="conf-macro output-inline" data-hasbody="true" data-macro-name="sp-richtextbody-link" href="https://confluence.atlassian.com/upm/checking-app-compatibility-with-application-updates-273875705.html" rel="external nofollow"><span class="css-1cwva94 e1a3lu074"><span class="smart-link-title-wrapper css-0 e1a3lu0710">Checking app compatibility with application updates</span></span></a></span></span></span></span><span style="color: rgb(23,43,77);"> or the </span><a class="external-link" href="https://marketplace.atlassian.com/" rel="external nofollow" style="text-decoration: none;" title="https://marketplace.atlassian.com/">Atlassian Marketplace</a><span style="color: rgb(23,43,77);"> to see if your app hosting is compatible with your product version.</span>
	</p>
</div>

<p>
	<span style="font-size: 16.0px;font-weight: 600;letter-spacing: -0.003em;">Upgrading from Jira version 9.x.x? </span>
</p>

<ul>
	<li>
		<span>See </span><a class="conf-macro output-inline" data-hasbody="false" data-macro-name="sp-nobody-link" href="https://confluence.atlassian.com/adminjiraserver/upgrading-jira-applications-938846936.html" rel="external nofollow">Upgrading Jira applications</a><span> for complete upgrade procedures, including all available upgrade methods and pre-upgrade steps. </span>
	</li>
	<li>
		<span style="letter-spacing: 0.0px;">For a more tailored upgrade, go to <strong>Jira administration</strong>, then</span><strong style="letter-spacing: 0.0px;"> Applications</strong>, then<span style="letter-spacing: 0.0px;"> </span><strong style="letter-spacing: 0.0px;">Plan your upgrade</strong><span style="letter-spacing: 0.0px;">. We’ll recommend a version to upgrade to, run pre-upgrade checks, and provide you with a custom upgrade guide with step-by-step instructions.</span>
	</li>
</ul>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>

<p>
	 
</p>


<br>
<p><a href="https://jimiwikman.se/atlassian-versions/742_jira-data-center/jira-software-100-r1/">View full product version</a></p>]]></description><guid isPermaLink="false">12319</guid><pubDate>Sun, 22 Sep 2024 15:54:06 +0000</pubDate></item></channel></rss>
