Compare commits
976 Commits
18.0
...
17.0-accou
Author | SHA1 | Date | |
---|---|---|---|
![]() |
637ed249ab | ||
![]() |
24966a91c8 | ||
![]() |
b5d9d1afdb | ||
![]() |
09427a0183 | ||
![]() |
43e244edd6 | ||
![]() |
8744243175 | ||
![]() |
7af79e3189 | ||
![]() |
4d5a4cb28d | ||
![]() |
92b968d337 | ||
![]() |
ae9bdc5678 | ||
![]() |
2159795dff | ||
![]() |
7e50e9fe1c | ||
![]() |
ea9c8bd807 | ||
![]() |
db5abde8ee | ||
![]() |
eba8e6028e | ||
![]() |
8bbbccdedc | ||
![]() |
fe9d186b54 | ||
![]() |
2a28a68376 | ||
![]() |
2628303bc4 | ||
![]() |
37d9b31da5 | ||
![]() |
22e428097a | ||
![]() |
6852e4b980 | ||
![]() |
cb0cce2498 | ||
![]() |
ecb8630cc1 | ||
![]() |
47fa6163a7 | ||
![]() |
8df48eb03e | ||
![]() |
d5a2ace7b5 | ||
![]() |
1aac8f8dc6 | ||
![]() |
6bbf94d00a | ||
![]() |
c5c7fa6250 | ||
![]() |
2b0f9c51a4 | ||
![]() |
de8f271f53 | ||
![]() |
69e6279f65 | ||
![]() |
f3969af47e | ||
![]() |
aebefbf019 | ||
![]() |
1a72b05e0a | ||
![]() |
3561ca06df | ||
![]() |
2f197b66ce | ||
![]() |
82a45dbc50 | ||
![]() |
795afbb728 | ||
![]() |
81a7fcbb45 | ||
![]() |
994c3530c4 | ||
![]() |
447736ae08 | ||
![]() |
10bc27946f | ||
![]() |
e62e798a8b | ||
![]() |
6e9de168d9 | ||
![]() |
a113cc42f5 | ||
![]() |
298871e43a | ||
![]() |
507c408f01 | ||
![]() |
cb1f1e89d6 | ||
![]() |
0bf6c3b44e | ||
![]() |
4a7156d69e | ||
![]() |
c7b9e0e159 | ||
![]() |
82378ce462 | ||
![]() |
fe917d862f | ||
![]() |
d77d3ace2a | ||
![]() |
b81d1a6d8a | ||
![]() |
30d6e17cf9 | ||
![]() |
2bfd2b64af | ||
![]() |
47da91a9d6 | ||
![]() |
41e40b46e2 | ||
![]() |
af1df4ae12 | ||
![]() |
4590851acf | ||
![]() |
cdf833810f | ||
![]() |
db36928ff6 | ||
![]() |
e761d5d3a4 | ||
![]() |
fe75484a45 | ||
![]() |
2b84a30f80 | ||
![]() |
f8683b6e74 | ||
![]() |
79758ab9de | ||
![]() |
fd7a2f90d9 | ||
![]() |
14b552a8a0 | ||
![]() |
54359951db | ||
![]() |
ce1b4d7bc3 | ||
![]() |
75af17192f | ||
![]() |
331e39ac7b | ||
![]() |
afe998d6a0 | ||
![]() |
d683e94e85 | ||
![]() |
204db28154 | ||
![]() |
9da2958373 | ||
![]() |
ce55e4affb | ||
![]() |
1b14a732b9 | ||
![]() |
c6a8619367 | ||
![]() |
660f73e02c | ||
![]() |
63be4d2d65 | ||
![]() |
7e2d88cc02 | ||
![]() |
229e633c9c | ||
![]() |
af29704626 | ||
![]() |
4107fb03a5 | ||
![]() |
fa7713f31c | ||
![]() |
cfe4968bef | ||
![]() |
96269013b5 | ||
![]() |
9ba3a1bc10 | ||
![]() |
ff891f246e | ||
![]() |
8bcf4cc29c | ||
![]() |
5669d48cb9 | ||
![]() |
42c4585cdd | ||
![]() |
399b20d9c7 | ||
![]() |
7f24a51d7d | ||
![]() |
69477d78c7 | ||
![]() |
ef367bd442 | ||
![]() |
711dbc5931 | ||
![]() |
e41e3c7ba0 | ||
![]() |
34814984ec | ||
![]() |
3337149a62 | ||
![]() |
21cb6bb5cf | ||
![]() |
1c5bf1337e | ||
![]() |
6032be9d6f | ||
![]() |
5aa4151638 | ||
![]() |
b10c2daf6b | ||
![]() |
3b69030302 | ||
![]() |
721c07d341 | ||
![]() |
d029bdac15 | ||
![]() |
c302c85fd4 | ||
![]() |
380c4bc10f | ||
![]() |
0aa1a671dd | ||
![]() |
1e39d90420 | ||
![]() |
14007868bb | ||
![]() |
43d99f8070 | ||
![]() |
b9338949e9 | ||
![]() |
7d075de97a | ||
![]() |
85e04b2723 | ||
![]() |
49561d4daf | ||
![]() |
c0340cf05a | ||
![]() |
4cb7637a23 | ||
![]() |
bed0d86d1d | ||
![]() |
5b6531a68d | ||
![]() |
5bb9c1fcc2 | ||
![]() |
63316dd6bd | ||
![]() |
87cde5c74c | ||
![]() |
db78ddcdf9 | ||
![]() |
b752040eb0 | ||
![]() |
34ff71cb20 | ||
![]() |
03839a5b11 | ||
![]() |
4b1ebb71c0 | ||
![]() |
2ef48862cf | ||
![]() |
c5e10fe11d | ||
![]() |
fc71b2df57 | ||
![]() |
db4e52059b | ||
![]() |
72c6e76906 | ||
![]() |
1403e60925 | ||
![]() |
e8f3736722 | ||
![]() |
3d13ab2e49 | ||
![]() |
259e6bb272 | ||
![]() |
9857ab293b | ||
![]() |
5f54878e5f | ||
![]() |
f57103251b | ||
![]() |
3ffccf485b | ||
![]() |
31972238cc | ||
![]() |
035f04aac4 | ||
![]() |
fcf6474829 | ||
![]() |
7473cded7f | ||
![]() |
e05a37917d | ||
![]() |
8beedc3783 | ||
![]() |
7340391b78 | ||
![]() |
74f17e20fd | ||
![]() |
4e2958f034 | ||
![]() |
e1cc0ce4d2 | ||
![]() |
ea2fc6dbc4 | ||
![]() |
800328e97f | ||
![]() |
8e63561a4d | ||
![]() |
91c47f6dc4 | ||
![]() |
2cd893938a | ||
![]() |
337fb675ae | ||
![]() |
12a69bbf9e | ||
![]() |
ac45659980 | ||
![]() |
6dae9a10ef | ||
![]() |
bb1a60fd76 | ||
![]() |
a64a614c7a | ||
![]() |
f6226e6aac | ||
![]() |
26649ab2da | ||
![]() |
6a4121f61a | ||
![]() |
281e36adf3 | ||
![]() |
733824441c | ||
![]() |
5db14eefe1 | ||
![]() |
5d91d48977 | ||
![]() |
fe29710167 | ||
![]() |
dcb0d21b17 | ||
![]() |
01141defcb | ||
![]() |
39326280bb | ||
![]() |
7ba46e2579 | ||
![]() |
cbe1b813b6 | ||
![]() |
e87a500e06 | ||
![]() |
98f2adbd13 | ||
![]() |
f9ebeb16c7 | ||
![]() |
9cf55e3fc0 | ||
![]() |
665dc87335 | ||
![]() |
e7d2be6366 | ||
![]() |
97194e9854 | ||
![]() |
9647313b35 | ||
![]() |
db94a26e4f | ||
![]() |
d42a95393d | ||
![]() |
4f1674cef8 | ||
![]() |
d0e5631f63 | ||
![]() |
88c6fba504 | ||
![]() |
34ffcdfa58 | ||
![]() |
8e5eb2f53f | ||
![]() |
cf46224fda | ||
![]() |
41a8050f34 | ||
![]() |
45d88420e8 | ||
![]() |
cb30a15eb9 | ||
![]() |
c987e2e98e | ||
![]() |
980b6ad41b | ||
![]() |
b8607a24a8 | ||
![]() |
c1d5ddc361 | ||
![]() |
9dc985ef47 | ||
![]() |
f78570e908 | ||
![]() |
469e8b6f17 | ||
![]() |
36d2b66f59 | ||
![]() |
3256aa02bd | ||
![]() |
ad0619e7fe | ||
![]() |
6aca6f83d3 | ||
![]() |
00077597d2 | ||
![]() |
c9c5af7045 | ||
![]() |
c36ad6720b | ||
![]() |
3d04daa3f7 | ||
![]() |
a9febaea2d | ||
![]() |
f1090218e8 | ||
![]() |
3cce09c199 | ||
![]() |
9e8a7f54e3 | ||
![]() |
66b2a2380c | ||
![]() |
b17e44ea59 | ||
![]() |
730eb3086d | ||
![]() |
f200abf259 | ||
![]() |
84017e77a5 | ||
![]() |
d811aef87c | ||
![]() |
4f40ebd78f | ||
![]() |
7797ce1fe2 | ||
![]() |
be3a6f6f54 | ||
![]() |
9a549510be | ||
![]() |
b6372019d6 | ||
![]() |
fccd4e5d88 | ||
![]() |
196553ca1e | ||
![]() |
5b427ac874 | ||
![]() |
3badb434e1 | ||
![]() |
55ec59ba24 | ||
![]() |
7e3309b922 | ||
![]() |
6f74248de1 | ||
![]() |
be0b5e65d5 | ||
![]() |
83b6895deb | ||
![]() |
16537bb9c5 | ||
![]() |
71e2a50d40 | ||
![]() |
514c175824 | ||
![]() |
65e7f1b3c5 | ||
![]() |
d362d4ebdb | ||
![]() |
1aee294219 | ||
![]() |
d8cd13b659 | ||
![]() |
2f5e130179 | ||
![]() |
d5fd2f1c66 | ||
![]() |
92c5c3db31 | ||
![]() |
bed068f95a | ||
![]() |
7212fc98cd | ||
![]() |
3b40e6c1ec | ||
![]() |
d2497d2b14 | ||
![]() |
5965bad8ea | ||
![]() |
ee8aed02c8 | ||
![]() |
17787e62c3 | ||
![]() |
7ecaf74124 | ||
![]() |
afbc491940 | ||
![]() |
b3e2b51a6a | ||
![]() |
acf8d5e4a7 | ||
![]() |
916b185065 | ||
![]() |
93a0f41756 | ||
![]() |
bf9bbff058 | ||
![]() |
32976cdd84 | ||
![]() |
00e96e5635 | ||
![]() |
c4fd10f94e | ||
![]() |
10a92e66cf | ||
![]() |
634a5af824 | ||
![]() |
53f8dcd991 | ||
![]() |
a535d2fe9d | ||
![]() |
cb51299cf1 | ||
![]() |
a42a88bf7c | ||
![]() |
8cea31c24d | ||
![]() |
d03b45c6f9 | ||
![]() |
e238e63240 | ||
![]() |
e14c53b60c | ||
![]() |
d1398e5889 | ||
![]() |
c226214530 | ||
![]() |
c6e7dba0bd | ||
![]() |
79745b702f | ||
![]() |
baf1e9b464 | ||
![]() |
26e296e1a7 | ||
![]() |
11a2af286d | ||
![]() |
7c10386675 | ||
![]() |
a00fa1c997 | ||
![]() |
1f88f9dd67 | ||
![]() |
7598c57f48 | ||
![]() |
da17cb4fef | ||
![]() |
bb1322131d | ||
![]() |
3b573b0e60 | ||
![]() |
d4f2a2768c | ||
![]() |
d4fe1eb4d1 | ||
![]() |
9af6b453fe | ||
![]() |
11ef368a58 | ||
![]() |
60d6f7ee59 | ||
![]() |
ba86ed096a | ||
![]() |
6e18b6f7de | ||
![]() |
2de0593eb7 | ||
![]() |
6b17ed5052 | ||
![]() |
9d228fc301 | ||
![]() |
f56dce3a15 | ||
![]() |
6263eea056 | ||
![]() |
5738af24c6 | ||
![]() |
5a151eafd5 | ||
![]() |
18ca6d9f80 | ||
![]() |
c8555a7e1a | ||
![]() |
9c5cee3f96 | ||
![]() |
4072bf6ece | ||
![]() |
0e82e60673 | ||
![]() |
18c7aa4c47 | ||
![]() |
5938ac0931 | ||
![]() |
c44d4dfcab | ||
![]() |
dd5f46d011 | ||
![]() |
0752255be8 | ||
![]() |
35500f8035 | ||
![]() |
fc144a96fd | ||
![]() |
9ae3ffc925 | ||
![]() |
8ca247d9dd | ||
![]() |
9ed575b01e | ||
![]() |
4e5ae3ea87 | ||
![]() |
6d74ff585b | ||
![]() |
d383da505d | ||
![]() |
8f5909a0cb | ||
![]() |
9584fed709 | ||
![]() |
e79a2e674d | ||
![]() |
217ca237bf | ||
![]() |
6495e78998 | ||
![]() |
cac8d8a558 | ||
![]() |
0d28e54c4a | ||
![]() |
3acda8ef04 | ||
![]() |
06b380921b | ||
![]() |
15b741e785 | ||
![]() |
1bad5cebaf | ||
![]() |
4537468fc1 | ||
![]() |
957adbea2c | ||
![]() |
54de7881a2 | ||
![]() |
2ed1db8304 | ||
![]() |
d31b997900 | ||
![]() |
701b8437aa | ||
![]() |
2ae0e15982 | ||
![]() |
da4186c1c2 | ||
![]() |
7dfcac709d | ||
![]() |
e612b445b9 | ||
![]() |
d25d62d1c0 | ||
![]() |
55f2d86800 | ||
![]() |
14a91520df | ||
![]() |
3b92fc672a | ||
![]() |
4975afda0d | ||
![]() |
62bc2eda35 | ||
![]() |
d506554ed0 | ||
![]() |
594f3573d9 | ||
![]() |
d21e9d8c12 | ||
![]() |
68ecabb435 | ||
![]() |
886e1dc19c | ||
![]() |
8beae0b9e5 | ||
![]() |
636441b94c | ||
![]() |
9aa160f042 | ||
![]() |
118e31d96a | ||
![]() |
5d87049d92 | ||
![]() |
d39beb75ae | ||
![]() |
6fe36eacc4 | ||
![]() |
3320f52cdd | ||
![]() |
d9e7d86532 | ||
![]() |
9feca1b4e4 | ||
![]() |
d42810f05d | ||
![]() |
d77c24d556 | ||
![]() |
6366c20ffa | ||
![]() |
43426fa893 | ||
![]() |
3c9ea881a9 | ||
![]() |
928e3bb43e | ||
![]() |
57212a6798 | ||
![]() |
cd32574f88 | ||
![]() |
f6994a1047 | ||
![]() |
55d3d59a64 | ||
![]() |
6c74ac42f9 | ||
![]() |
96f3a3e846 | ||
![]() |
148549b3d0 | ||
![]() |
3b1f9f6df2 | ||
![]() |
83db1bdd8d | ||
![]() |
2341f42d4a | ||
![]() |
fe3281523c | ||
![]() |
011ef11978 | ||
![]() |
184dd5f93f | ||
![]() |
5f566009c7 | ||
![]() |
4983adb63f | ||
![]() |
a99c1cd7e1 | ||
![]() |
90fe2b31b1 | ||
![]() |
69b145716c | ||
![]() |
4d21807379 | ||
![]() |
15c6bb8b0e | ||
![]() |
9a0e87e861 | ||
![]() |
0745c3f180 | ||
![]() |
f1d8cb8f16 | ||
![]() |
aef490c600 | ||
![]() |
ab659db849 | ||
![]() |
f46dda5e61 | ||
![]() |
f1bd4ec134 | ||
![]() |
05cd6af1ed | ||
![]() |
cb644b0834 | ||
![]() |
6bfa0802c7 | ||
![]() |
e59188d85b | ||
![]() |
fb2f1d5f8b | ||
![]() |
ed15f46531 | ||
![]() |
da6d3e6740 | ||
![]() |
fade821930 | ||
![]() |
b94d534bae | ||
![]() |
714b75ce3b | ||
![]() |
59ba096ee2 | ||
![]() |
4e929b4ebc | ||
![]() |
905914c939 | ||
![]() |
801a165df4 | ||
![]() |
693a48f150 | ||
![]() |
5c781afe88 | ||
![]() |
eca1b7ffd3 | ||
![]() |
de7fd89137 | ||
![]() |
9fb69e4eaf | ||
![]() |
6920015971 | ||
![]() |
1a405b889a | ||
![]() |
6738b2cbea | ||
![]() |
430f7e2307 | ||
![]() |
62b02031fa | ||
![]() |
1929185270 | ||
![]() |
20282cdb4c | ||
![]() |
4d211ed914 | ||
![]() |
a7ef06c1e5 | ||
![]() |
50d983d48d | ||
![]() |
f80a74f460 | ||
![]() |
7e37903b8f | ||
![]() |
50b3852bab | ||
![]() |
ba97b13527 | ||
![]() |
e8a260f20a | ||
![]() |
e25de2b5b5 | ||
![]() |
34598f13bf | ||
![]() |
6ebd27144b | ||
![]() |
a08fc7db34 | ||
![]() |
1f5a41a209 | ||
![]() |
a3ec00b836 | ||
![]() |
a5cb329f3f | ||
![]() |
9543b25714 | ||
![]() |
d00c04e259 | ||
![]() |
489fe7d3ea | ||
![]() |
2d0f640223 | ||
![]() |
1b85a45840 | ||
![]() |
d2aa8149df | ||
![]() |
71577350e9 | ||
![]() |
57de351036 | ||
![]() |
b7dd96b5b8 | ||
![]() |
3303571492 | ||
![]() |
61901c5020 | ||
![]() |
23a330ea6e | ||
![]() |
2a9bd10799 | ||
![]() |
f036553f5a | ||
![]() |
788fc51ca6 | ||
![]() |
5f5deac264 | ||
![]() |
50cf2f3063 | ||
![]() |
25f44f7ac2 | ||
![]() |
e6d312f18d | ||
![]() |
045cdbdbeb | ||
![]() |
fd37b9af1c | ||
![]() |
860befac4a | ||
![]() |
7cf04c1dba | ||
![]() |
2354f0946e | ||
![]() |
4a066cb017 | ||
![]() |
66fc5639b6 | ||
![]() |
3140917a53 | ||
![]() |
298a222d00 | ||
![]() |
8a6152f165 | ||
![]() |
e78be27fbf | ||
![]() |
888018e9e5 | ||
![]() |
c19f71fd4c | ||
![]() |
753d561fe8 | ||
![]() |
9e6572ad08 | ||
![]() |
de9e726858 | ||
![]() |
acb0a1cc5f | ||
![]() |
fd17dcef90 | ||
![]() |
f73bf36e6d | ||
![]() |
7d627adb35 | ||
![]() |
eff413bfb7 | ||
![]() |
12c82cabbe | ||
![]() |
5d735775b6 | ||
![]() |
d2ba715df8 | ||
![]() |
6840b5df3f | ||
![]() |
d38eb79411 | ||
![]() |
d01ae4742f | ||
![]() |
05bc055641 | ||
![]() |
601f134c1a | ||
![]() |
697f78e513 | ||
![]() |
5bf5db129f | ||
![]() |
b8e0e40722 | ||
![]() |
d28d16e081 | ||
![]() |
06d9c48501 | ||
![]() |
3179286430 | ||
![]() |
7fad040a46 | ||
![]() |
a63462d880 | ||
![]() |
71a0af67aa | ||
![]() |
b639c86dd3 | ||
![]() |
a761e8e487 | ||
![]() |
bb15ecaeb9 | ||
![]() |
97fa8b0863 | ||
![]() |
2ecb63825b | ||
![]() |
a443e6b9d1 | ||
![]() |
644f383656 | ||
![]() |
3973c40516 | ||
![]() |
16b0137ae5 | ||
![]() |
a76e5782cd | ||
![]() |
b646bafcfe | ||
![]() |
ba2a95a3d5 | ||
![]() |
f029c18683 | ||
![]() |
cd49934d95 | ||
![]() |
7e409460be | ||
![]() |
ee18c4782c | ||
![]() |
0456d100b2 | ||
![]() |
102d9fc831 | ||
![]() |
014468e02b | ||
![]() |
5626d03c98 | ||
![]() |
da10d4a5bd | ||
![]() |
e73363b515 | ||
![]() |
3cb351b6b9 | ||
![]() |
fe73a0b466 | ||
![]() |
850c8a6022 | ||
![]() |
8eac2ea5f3 | ||
![]() |
a9414ea3d3 | ||
![]() |
0aaff7f75e | ||
![]() |
2c9457e573 | ||
![]() |
3e4f44211b | ||
![]() |
ef4b5f87d5 | ||
![]() |
26fd5f3192 | ||
![]() |
62f6502d61 | ||
![]() |
45c5d9eef4 | ||
![]() |
2810dafaa8 | ||
![]() |
4ebdd21aa5 | ||
![]() |
d694b1e79d | ||
![]() |
a1ec5de39c | ||
![]() |
98cac21297 | ||
![]() |
8d27d765eb | ||
![]() |
ba8289b0da | ||
![]() |
30e76c6eb3 | ||
![]() |
8e1d1632d2 | ||
![]() |
50d09bf155 | ||
![]() |
a2f80c56c2 | ||
![]() |
334c0eac19 | ||
![]() |
78a8d62e11 | ||
![]() |
36a0e84a17 | ||
![]() |
8778183bc7 | ||
![]() |
4bb85a98ab | ||
![]() |
1fc601e7c3 | ||
![]() |
b84b924463 | ||
![]() |
935f03d0aa | ||
![]() |
efc6cb8cca | ||
![]() |
8f88ea892b | ||
![]() |
7f623b6ad5 | ||
![]() |
522f54cc43 | ||
![]() |
1250c4bf20 | ||
![]() |
25009a9121 | ||
![]() |
587964ef35 | ||
![]() |
c5ead11f0e | ||
![]() |
db6288f9a1 | ||
![]() |
0a309c5c6b | ||
![]() |
d25a0d261b | ||
![]() |
0f44035783 | ||
![]() |
a3ca109cf5 | ||
![]() |
ccdad0eef1 | ||
![]() |
8d6bd636e1 | ||
![]() |
582828999a | ||
![]() |
bf5ddc5886 | ||
![]() |
8875a3c547 | ||
![]() |
d674c419c0 | ||
![]() |
7a4b29d6dd | ||
![]() |
a30b2bbdfb | ||
![]() |
867b90b13f | ||
![]() |
52a0df9b6e | ||
![]() |
a17117047a | ||
![]() |
919ab71dcd | ||
![]() |
252f496f3d | ||
![]() |
6b1cf8f2d0 | ||
![]() |
b28e3073d1 | ||
![]() |
8d1c3ce4f3 | ||
![]() |
b2ac10427c | ||
![]() |
6522417fa6 | ||
![]() |
ca2738ef00 | ||
![]() |
63636d0518 | ||
![]() |
6c350a6bb0 | ||
![]() |
4073aac2bc | ||
![]() |
3a16f09f78 | ||
![]() |
aae54dedd2 | ||
![]() |
67058f8b96 | ||
![]() |
fd5c4b21ca | ||
![]() |
1b92d8ec99 | ||
![]() |
83d105c067 | ||
![]() |
79289bf99b | ||
![]() |
ee2cfe2bb5 | ||
![]() |
490eb9a865 | ||
![]() |
f019e3b18f | ||
![]() |
31bfb0c693 | ||
![]() |
069fa84987 | ||
![]() |
a4cdf38bd6 | ||
![]() |
cc8c576936 | ||
![]() |
9ff60ea1d7 | ||
![]() |
c54584a3f0 | ||
![]() |
ee735a813f | ||
![]() |
6bd2a67549 | ||
![]() |
878da9318e | ||
![]() |
094924d5ff | ||
![]() |
7e30d6f7da | ||
![]() |
e3eae6ac88 | ||
![]() |
192281038d | ||
![]() |
56cf586061 | ||
![]() |
b5bfc45f09 | ||
![]() |
f16d89dbc7 | ||
![]() |
656064ea1c | ||
![]() |
36ca933672 | ||
![]() |
92b3166167 | ||
![]() |
880f1cc01d | ||
![]() |
0fbf9995f0 | ||
![]() |
97f5c6f02a | ||
![]() |
51a70769ca | ||
![]() |
ffcdc7f3ea | ||
![]() |
b65460db47 | ||
![]() |
fdda9ff30a | ||
![]() |
90606a0d56 | ||
![]() |
c63dda1e5f | ||
![]() |
e4057858a1 | ||
![]() |
2c613fdfc4 | ||
![]() |
2e99e9b57e | ||
![]() |
7353d7b2cc | ||
![]() |
4a28f69400 | ||
![]() |
c2a84d65f7 | ||
![]() |
dfb88db7b6 | ||
![]() |
3d82c7671c | ||
![]() |
9a5074848c | ||
![]() |
e0e97ea763 | ||
![]() |
3e4463c978 | ||
![]() |
735097850c | ||
![]() |
d8494b2c4b | ||
![]() |
f4bcdc815e | ||
![]() |
e655f90e62 | ||
![]() |
d7595e5eb8 | ||
![]() |
0b6bef6516 | ||
![]() |
3a18276d4a | ||
![]() |
bb9cb27935 | ||
![]() |
148eaedfa9 | ||
![]() |
a9d4fbbd5a | ||
![]() |
7cacdf626b | ||
![]() |
b07ea8d014 | ||
![]() |
158a1dee79 | ||
![]() |
bfcb1fa443 | ||
![]() |
6355b52f87 | ||
![]() |
d43cc3e466 | ||
![]() |
281d3976da | ||
![]() |
02a47a607d | ||
![]() |
36ab5e74c3 | ||
![]() |
33712a339f | ||
![]() |
5a8691d249 | ||
![]() |
20865bfaea | ||
![]() |
4255e514a9 | ||
![]() |
632add350d | ||
![]() |
d36e0b095c | ||
![]() |
946a55b029 | ||
![]() |
e259853486 | ||
![]() |
fd8b628b0e | ||
![]() |
bcd3747156 | ||
![]() |
1f1f574615 | ||
![]() |
89c63cb952 | ||
![]() |
2da5c1664f | ||
![]() |
25f95ce12d | ||
![]() |
300345957a | ||
![]() |
ffaa9ec7a8 | ||
![]() |
60d55082ce | ||
![]() |
d8b4b1d60f | ||
![]() |
10cd2a061b | ||
![]() |
41b3bd3bc9 | ||
![]() |
9be4c889e3 | ||
![]() |
dc5136cc45 | ||
![]() |
2d0505c0bd | ||
![]() |
22b294400f | ||
![]() |
ef3e57c994 | ||
![]() |
04f9ea14cd | ||
![]() |
4742f77ef9 | ||
![]() |
df01a6edf4 | ||
![]() |
d3f17c6609 | ||
![]() |
a54e626075 | ||
![]() |
069ee16ee1 | ||
![]() |
df48788817 | ||
![]() |
dc0dfea959 | ||
![]() |
1c2897c54d | ||
![]() |
f87f12c53a | ||
![]() |
a7f87a913a | ||
![]() |
77b0cc21ee | ||
![]() |
41c33f1165 | ||
![]() |
6d923e4729 | ||
![]() |
59dcc0e921 | ||
![]() |
3875f79b5c | ||
![]() |
befe1d0c8d | ||
![]() |
f65dbd4c15 | ||
![]() |
40015002bd | ||
![]() |
2383ecff09 | ||
![]() |
d266d142a8 | ||
![]() |
f8c1f3538d | ||
![]() |
757f750358 | ||
![]() |
f61b571960 | ||
![]() |
6349f5a13e | ||
![]() |
76b234ba3a | ||
![]() |
c1f4f1fb57 | ||
![]() |
b2bad17b19 | ||
![]() |
1ad921a1d1 | ||
![]() |
8291dc0379 | ||
![]() |
1534cf4e19 | ||
![]() |
3dc21be0a7 | ||
![]() |
9cbc9e3610 | ||
![]() |
269d602af0 | ||
![]() |
0bde5db3bc | ||
![]() |
ac9eb58b7a | ||
![]() |
3229ee3210 | ||
![]() |
21362bea09 | ||
![]() |
3867472761 | ||
![]() |
b3fc71894a | ||
![]() |
3fada867de | ||
![]() |
75fa2c64b3 | ||
![]() |
af5ac872e7 | ||
![]() |
dc3bdd3824 | ||
![]() |
ce85e620f1 | ||
![]() |
00faf01516 | ||
![]() |
dcf55ac08a | ||
![]() |
b0009b8e10 | ||
![]() |
b154ed017f | ||
![]() |
54f7faa593 | ||
![]() |
2a00746f71 | ||
![]() |
ee1ef85417 | ||
![]() |
9f21404579 | ||
![]() |
212da24684 | ||
![]() |
ca71dfa66a | ||
![]() |
715bd20ac1 | ||
![]() |
7576501508 | ||
![]() |
00771d68bd | ||
![]() |
83ca0c26ff | ||
![]() |
e0010641ac | ||
![]() |
2198e60c5e | ||
![]() |
d4d62b6967 | ||
![]() |
48bfcc6d93 | ||
![]() |
5eb6fc8cbc | ||
![]() |
af0853ec77 | ||
![]() |
9265f644ad | ||
![]() |
1da9a538c2 | ||
![]() |
91201d199a | ||
![]() |
c612a4e1fa | ||
![]() |
caffe57110 | ||
![]() |
7cf18082ad | ||
![]() |
deecd2ae21 | ||
![]() |
f07ce400b0 | ||
![]() |
23b5138038 | ||
![]() |
18fd3f00e4 | ||
![]() |
a8d88ed33e | ||
![]() |
281137ccfb | ||
![]() |
81509af376 | ||
![]() |
8b76aedf88 | ||
![]() |
cffbd073fb | ||
![]() |
5400f76019 | ||
![]() |
a5803c0a57 | ||
![]() |
72a7fa97e0 | ||
![]() |
9331fce764 | ||
![]() |
2abc1ceb54 | ||
![]() |
c330f4d72e | ||
![]() |
e8576b7a04 | ||
![]() |
07333c0061 | ||
![]() |
05370926ff | ||
![]() |
67894e33f6 | ||
![]() |
2118084f11 | ||
![]() |
cbe72a69bb | ||
![]() |
e6c1f703ab | ||
![]() |
484cf203a9 | ||
![]() |
474d0b7b94 | ||
![]() |
df637c5746 | ||
![]() |
539435d14d | ||
![]() |
05637af163 | ||
![]() |
5689bc1039 | ||
![]() |
aecf49d6c8 | ||
![]() |
a787a2652f | ||
![]() |
e5586b3180 | ||
![]() |
439c4521ad | ||
![]() |
6a7bc2d449 | ||
![]() |
03ace4206c | ||
![]() |
bc6c92d786 | ||
![]() |
6391349a6d | ||
![]() |
eded294b05 | ||
![]() |
856a60cd24 | ||
![]() |
05be4c72db | ||
![]() |
fb48206c21 | ||
![]() |
47300c10bf | ||
![]() |
403c616602 | ||
![]() |
6f81a3b076 | ||
![]() |
9223318b05 | ||
![]() |
7e45e144a6 | ||
![]() |
998addbdb2 | ||
![]() |
f751e9548a | ||
![]() |
9aa0b714ef | ||
![]() |
fd598899c2 | ||
![]() |
a926fbf998 | ||
![]() |
8ebfc5cd2a | ||
![]() |
75734d8c6d | ||
![]() |
8f8e65640a | ||
![]() |
5f416e028f | ||
![]() |
3099ce8e0b | ||
![]() |
968177ade5 | ||
![]() |
9776aa010c | ||
![]() |
bb99bd6bf6 | ||
![]() |
82f68ea5fc | ||
![]() |
9c417efadc | ||
![]() |
6b963f8f7d | ||
![]() |
9e777948c1 | ||
![]() |
73fc5e9be4 | ||
![]() |
01883d07c1 | ||
![]() |
8557dbf8c2 | ||
![]() |
313a22ba60 | ||
![]() |
c847bdc4dd | ||
![]() |
054801995e | ||
![]() |
7d5afdda56 | ||
![]() |
cace3cc370 | ||
![]() |
0178034f89 | ||
![]() |
a1eaf3af64 | ||
![]() |
f499de92ab | ||
![]() |
a56255286a | ||
![]() |
cc03963248 | ||
![]() |
f62c7f83c5 | ||
![]() |
9e740e90d1 | ||
![]() |
66959cf6ee | ||
![]() |
edb41d8c51 | ||
![]() |
648cc25775 | ||
![]() |
bdcd01f798 | ||
![]() |
2a46a816bc | ||
![]() |
e0ab490d57 | ||
![]() |
d0fc3e23f7 | ||
![]() |
ab5a5e0997 | ||
![]() |
a969aaf498 | ||
![]() |
5be62e15e2 | ||
![]() |
2e0df8e810 | ||
![]() |
fc363ad00f | ||
![]() |
336801a842 | ||
![]() |
b7ce6cf74e | ||
![]() |
0387e3f518 | ||
![]() |
d81d63945b | ||
![]() |
1df1c46ff1 | ||
![]() |
c219ff72c2 | ||
![]() |
6d6e82a158 | ||
![]() |
2bffc3d457 | ||
![]() |
3e450bafa6 | ||
![]() |
16fb06757a | ||
![]() |
3411cdb2ae | ||
![]() |
6b9ba7f9ed | ||
![]() |
230461a3e8 | ||
![]() |
a4f0e6b9b8 | ||
![]() |
4fac976025 | ||
![]() |
bdc6660120 | ||
![]() |
c2c3b912ed | ||
![]() |
eba685e7d9 | ||
![]() |
4ef21b06cd | ||
![]() |
554193a14b | ||
![]() |
6dbaeeb29b | ||
![]() |
cba598cac8 | ||
![]() |
f23dcb7d35 | ||
![]() |
e4fd701fd2 | ||
![]() |
5a298f09eb | ||
![]() |
5995f3dcce | ||
![]() |
2025434058 | ||
![]() |
2cfaf34d9b | ||
![]() |
da20d2f5f8 | ||
![]() |
882a34c2bd | ||
![]() |
3d4a275196 | ||
![]() |
066c662509 | ||
![]() |
613420f55e | ||
![]() |
ea2145960b | ||
![]() |
8b6e7a0323 | ||
![]() |
74d5918ff3 | ||
![]() |
b9a40d117e | ||
![]() |
a08970722b | ||
![]() |
feeb8dc18f | ||
![]() |
97e3173c7c | ||
![]() |
ae77baa7f3 | ||
![]() |
fbd85e82ba | ||
![]() |
e0921f7b6e | ||
![]() |
b35f9305c9 | ||
![]() |
1d61839374 | ||
![]() |
567b22f30c | ||
![]() |
f3a4770775 | ||
![]() |
77f1a1fc12 | ||
![]() |
b9ba63fde0 | ||
![]() |
ed6f2aba4d | ||
![]() |
a6d3a8d497 | ||
![]() |
b6964f128e | ||
![]() |
d0761052da | ||
![]() |
54f32b3df6 | ||
![]() |
1cffbdfa5b | ||
![]() |
675eaa8068 | ||
![]() |
2d749c3134 | ||
![]() |
c605694f0b | ||
![]() |
bf87dbeccb | ||
![]() |
68fcd62330 | ||
![]() |
2b0059937a | ||
![]() |
e24c83a0a1 | ||
![]() |
e28bed32d0 | ||
![]() |
533f7f884c | ||
![]() |
b188381b70 | ||
![]() |
8ba87a67ce | ||
![]() |
1a44524ab5 | ||
![]() |
8ecbd48796 | ||
![]() |
51b98a71d4 | ||
![]() |
61cad6cd0d | ||
![]() |
2662fa5437 | ||
![]() |
ebc80297af | ||
![]() |
b44913931d | ||
![]() |
be835f7493 | ||
![]() |
11076c8cdd | ||
![]() |
23b88dbff5 | ||
![]() |
8e3008f06a | ||
![]() |
d337b38433 | ||
![]() |
c9affa54a8 | ||
![]() |
1860805474 | ||
![]() |
8025fdd915 | ||
![]() |
ae08218516 | ||
![]() |
25a7492e74 | ||
![]() |
32517aa638 | ||
![]() |
e8106a55c4 | ||
![]() |
05da049af4 | ||
![]() |
4d48d1dfa6 | ||
![]() |
3da8280f33 | ||
![]() |
ccf0b02713 | ||
![]() |
37e10a53d9 | ||
![]() |
b50ca9703a | ||
![]() |
01d5b97ee0 | ||
![]() |
ff6f914a09 | ||
![]() |
2459ad79b9 | ||
![]() |
386a3a9e10 | ||
![]() |
4fff23c50e | ||
![]() |
1fc36ffa82 | ||
![]() |
01625aa661 | ||
![]() |
80aa3b74dc | ||
![]() |
9be2b43adb | ||
![]() |
e946be6abd | ||
![]() |
a70677317a | ||
![]() |
d7218a2d75 | ||
![]() |
507c4a07e1 | ||
![]() |
f92a81d051 | ||
![]() |
e5ee15e20d | ||
![]() |
5070f160ed | ||
![]() |
52b86aab37 | ||
![]() |
ae1ad46925 | ||
![]() |
ee93bc9d9d | ||
![]() |
0336359c57 | ||
![]() |
5d840a56d7 | ||
![]() |
b09c1e045e | ||
![]() |
f938a012ad | ||
![]() |
787ec0f787 | ||
![]() |
7cb346fbb1 | ||
![]() |
5e579431e1 | ||
![]() |
1a353a6b91 | ||
![]() |
17885d893e | ||
![]() |
f13d8b52fc | ||
![]() |
7f69acd5aa | ||
![]() |
66414a765e | ||
![]() |
1c0678a99a | ||
![]() |
b237af1ba8 | ||
![]() |
03cf50013a | ||
![]() |
9ab09aa0a5 | ||
![]() |
255b3b2651 | ||
![]() |
07bb9ec349 | ||
![]() |
717b45bf56 | ||
![]() |
60490b0a7d | ||
![]() |
6ce9a014a7 | ||
![]() |
c4f0e9c11c | ||
![]() |
4fdfda7ddb | ||
![]() |
765d8935d4 | ||
![]() |
6cb55a5cce | ||
![]() |
fd7d95f707 | ||
![]() |
ffe569a625 | ||
![]() |
077b7a577f | ||
![]() |
9d94d155fd |
115
.tx/config
@ -1,63 +1,152 @@
|
|||||||
[main]
|
[main]
|
||||||
host = https://www.transifex.com
|
host = https://www.transifex.com
|
||||||
|
|
||||||
[o:odoo:p:odoo-16-doc:r:administration]
|
[o:odoo:p:odoo-17-doc:r:administration]
|
||||||
file_filter = locale/<lang>/LC_MESSAGES/administration.po
|
file_filter = locale/<lang>/LC_MESSAGES/administration.po
|
||||||
source_file = locale/sources/administration.pot
|
source_file = locale/sources/administration.pot
|
||||||
|
type = POT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = administration
|
||||||
|
replace_edited_strings = false
|
||||||
|
keep_translations = false
|
||||||
source_lang = en
|
source_lang = en
|
||||||
|
|
||||||
[o:odoo:p:odoo-16-doc:r:applications]
|
[o:odoo:p:odoo-17-doc:r:applications]
|
||||||
file_filter = locale/<lang>/LC_MESSAGES/applications.po
|
file_filter = locale/<lang>/LC_MESSAGES/applications.po
|
||||||
source_file = locale/sources/applications.pot
|
source_file = locale/sources/applications.pot
|
||||||
|
type = POT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = applications
|
||||||
|
replace_edited_strings = false
|
||||||
|
keep_translations = false
|
||||||
source_lang = en
|
source_lang = en
|
||||||
|
|
||||||
[o:odoo:p:odoo-16-doc:r:finance]
|
[o:odoo:p:odoo-17-doc:r:essentials]
|
||||||
|
file_filter = locale/<lang>/LC_MESSAGES/essentials.po
|
||||||
|
source_file = locale/sources/essentials.pot
|
||||||
|
type = POT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = essentials
|
||||||
|
replace_edited_strings = false
|
||||||
|
keep_translations = false
|
||||||
|
source_lang = en
|
||||||
|
|
||||||
|
[o:odoo:p:odoo-17-doc:r:finance]
|
||||||
file_filter = locale/<lang>/LC_MESSAGES/finance.po
|
file_filter = locale/<lang>/LC_MESSAGES/finance.po
|
||||||
source_file = locale/sources/finance.pot
|
source_file = locale/sources/finance.pot
|
||||||
|
type = POT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = finance
|
||||||
|
replace_edited_strings = false
|
||||||
|
keep_translations = false
|
||||||
source_lang = en
|
source_lang = en
|
||||||
|
|
||||||
[o:odoo:p:odoo-16-doc:r:general]
|
[o:odoo:p:odoo-17-doc:r:general]
|
||||||
file_filter = locale/<lang>/LC_MESSAGES/general.po
|
file_filter = locale/<lang>/LC_MESSAGES/general.po
|
||||||
source_file = locale/sources/general.pot
|
source_file = locale/sources/general.pot
|
||||||
|
type = POT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = general
|
||||||
|
replace_edited_strings = false
|
||||||
|
keep_translations = false
|
||||||
source_lang = en
|
source_lang = en
|
||||||
|
|
||||||
[o:odoo:p:odoo-16-doc:r:index]
|
[o:odoo:p:odoo-17-doc:r:hr]
|
||||||
|
file_filter = locale/<lang>/LC_MESSAGES/hr.po
|
||||||
|
source_file = locale/sources/hr.pot
|
||||||
|
type = POT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = hr
|
||||||
|
replace_edited_strings = false
|
||||||
|
keep_translations = false
|
||||||
|
source_lang = en
|
||||||
|
|
||||||
|
[o:odoo:p:odoo-17-doc:r:index]
|
||||||
file_filter = locale/<lang>/LC_MESSAGES/index.po
|
file_filter = locale/<lang>/LC_MESSAGES/index.po
|
||||||
source_file = locale/sources/index.pot
|
source_file = locale/sources/index.pot
|
||||||
|
type = POT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = index
|
||||||
|
replace_edited_strings = false
|
||||||
|
keep_translations = false
|
||||||
source_lang = en
|
source_lang = en
|
||||||
|
|
||||||
[o:odoo:p:odoo-16-doc:r:inventory_and_mrp]
|
[o:odoo:p:odoo-17-doc:r:inventory_and_mrp]
|
||||||
file_filter = locale/<lang>/LC_MESSAGES/inventory_and_mrp.po
|
file_filter = locale/<lang>/LC_MESSAGES/inventory_and_mrp.po
|
||||||
source_file = locale/sources/inventory_and_mrp.pot
|
source_file = locale/sources/inventory_and_mrp.pot
|
||||||
|
type = POT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = inventory_and_mrp
|
||||||
|
replace_edited_strings = false
|
||||||
|
keep_translations = false
|
||||||
source_lang = en
|
source_lang = en
|
||||||
|
|
||||||
[o:odoo:p:odoo-16-doc:r:marketing]
|
[o:odoo:p:odoo-17-doc:r:marketing]
|
||||||
file_filter = locale/<lang>/LC_MESSAGES/marketing.po
|
file_filter = locale/<lang>/LC_MESSAGES/marketing.po
|
||||||
source_file = locale/sources/marketing.pot
|
source_file = locale/sources/marketing.pot
|
||||||
|
type = POT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = marketing
|
||||||
|
replace_edited_strings = false
|
||||||
|
keep_translations = false
|
||||||
source_lang = en
|
source_lang = en
|
||||||
|
|
||||||
[o:odoo:p:odoo-16-doc:r:productivity]
|
[o:odoo:p:odoo-17-doc:r:productivity]
|
||||||
file_filter = locale/<lang>/LC_MESSAGES/productivity.po
|
file_filter = locale/<lang>/LC_MESSAGES/productivity.po
|
||||||
source_file = locale/sources/productivity.pot
|
source_file = locale/sources/productivity.pot
|
||||||
|
type = POT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = productivity
|
||||||
|
replace_edited_strings = false
|
||||||
|
keep_translations = false
|
||||||
source_lang = en
|
source_lang = en
|
||||||
|
|
||||||
[o:odoo:p:odoo-16-doc:r:sales]
|
[o:odoo:p:odoo-17-doc:r:sales]
|
||||||
file_filter = locale/<lang>/LC_MESSAGES/sales.po
|
file_filter = locale/<lang>/LC_MESSAGES/sales.po
|
||||||
source_file = locale/sources/sales.pot
|
source_file = locale/sources/sales.pot
|
||||||
|
type = POT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = sales
|
||||||
|
replace_edited_strings = false
|
||||||
|
keep_translations = false
|
||||||
source_lang = en
|
source_lang = en
|
||||||
|
|
||||||
[o:odoo:p:odoo-16-doc:r:services]
|
[o:odoo:p:odoo-17-doc:r:services]
|
||||||
file_filter = locale/<lang>/LC_MESSAGES/services.po
|
file_filter = locale/<lang>/LC_MESSAGES/services.po
|
||||||
source_file = locale/sources/services.pot
|
source_file = locale/sources/services.pot
|
||||||
|
type = POT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = services
|
||||||
|
replace_edited_strings = false
|
||||||
|
keep_translations = false
|
||||||
source_lang = en
|
source_lang = en
|
||||||
|
|
||||||
[o:odoo:p:odoo-16-doc:r:user_settings]
|
[o:odoo:p:odoo-17-doc:r:user_settings]
|
||||||
file_filter = locale/<lang>/LC_MESSAGES/settings.po
|
file_filter = locale/<lang>/LC_MESSAGES/settings.po
|
||||||
source_file = locale/sources/settings.pot
|
source_file = locale/sources/settings.pot
|
||||||
|
type = POT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = settings
|
||||||
|
replace_edited_strings = false
|
||||||
|
keep_translations = false
|
||||||
source_lang = en
|
source_lang = en
|
||||||
|
|
||||||
[o:odoo:p:odoo-16-doc:r:websites]
|
[o:odoo:p:odoo-17-doc:r:studio]
|
||||||
|
file_filter = locale/<lang>/LC_MESSAGES/studio.po
|
||||||
|
source_file = locale/sources/studio.pot
|
||||||
|
type = POT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = studio
|
||||||
|
replace_edited_strings = false
|
||||||
|
keep_translations = false
|
||||||
|
source_lang = en
|
||||||
|
|
||||||
|
[o:odoo:p:odoo-17-doc:r:websites]
|
||||||
file_filter = locale/<lang>/LC_MESSAGES/websites.po
|
file_filter = locale/<lang>/LC_MESSAGES/websites.po
|
||||||
source_file = locale/sources/websites.pot
|
source_file = locale/sources/websites.pot
|
||||||
|
type = POT
|
||||||
|
minimum_perc = 0
|
||||||
|
resource_name = websites
|
||||||
|
replace_edited_strings = false
|
||||||
|
keep_translations = false
|
||||||
source_lang = en
|
source_lang = en
|
||||||
|
|
||||||
|
8
Makefile
@ -18,6 +18,7 @@ CONFIG_DIR = .
|
|||||||
SPHINXOPTS = -D project_root=$(ROOT) -D canonical_version=$(CANONICAL_VERSION) \
|
SPHINXOPTS = -D project_root=$(ROOT) -D canonical_version=$(CANONICAL_VERSION) \
|
||||||
-D versions=$(VERSIONS) -D languages=$(LANGUAGES) -D language=$(CURRENT_LANG) \
|
-D versions=$(VERSIONS) -D languages=$(LANGUAGES) -D language=$(CURRENT_LANG) \
|
||||||
-D is_remote_build=$(IS_REMOTE_BUILD) \
|
-D is_remote_build=$(IS_REMOTE_BUILD) \
|
||||||
|
-T \
|
||||||
-A google_analytics_key=$(GOOGLE_ANALYTICS_KEY) \
|
-A google_analytics_key=$(GOOGLE_ANALYTICS_KEY) \
|
||||||
-A plausible_script=$(PLAUSIBLE_SCRIPT) \
|
-A plausible_script=$(PLAUSIBLE_SCRIPT) \
|
||||||
-A plausible_domain=$(PLAUSIBLE_DOMAIN) \
|
-A plausible_domain=$(PLAUSIBLE_DOMAIN) \
|
||||||
@ -26,7 +27,7 @@ SOURCE_DIR = content
|
|||||||
|
|
||||||
HTML_BUILD_DIR = $(BUILD_DIR)/html
|
HTML_BUILD_DIR = $(BUILD_DIR)/html
|
||||||
ifdef VERSIONS
|
ifdef VERSIONS
|
||||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/master
|
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/17.0
|
||||||
endif
|
endif
|
||||||
ifneq ($(CURRENT_LANG),en)
|
ifneq ($(CURRENT_LANG),en)
|
||||||
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)
|
HTML_BUILD_DIR := $(HTML_BUILD_DIR)/$(CURRENT_LANG)
|
||||||
@ -86,12 +87,13 @@ static: $(HTML_BUILD_DIR)/_static/style.css
|
|||||||
|
|
||||||
# Called by runbot for the ci/documentation_guideline check.
|
# Called by runbot for the ci/documentation_guideline check.
|
||||||
test:
|
test:
|
||||||
@python tests/main.py $(SOURCE_DIR)/administration $(SOURCE_DIR)/applications $(SOURCE_DIR)/contributing $(SOURCE_DIR)/developer $(SOURCE_DIR)/services redirects
|
@python tests/main.py $(SOURCE_DIR)/administration $(SOURCE_DIR)/applications $(SOURCE_DIR)/contributing $(SOURCE_DIR)/developer redirects
|
||||||
|
|
||||||
# Similar as `test`, but called only manually by content reviewers to trigger extra checks.
|
# Similar as `test`, but called only manually by content reviewers to trigger extra checks.
|
||||||
review:
|
review:
|
||||||
@read -p "Enter content path: " path; read -p "Enter max line length (default: 100): " line_length; \
|
@read -p "Enter relative content path: " path; read -p "Enter max line length (default: 100): " line_length; \
|
||||||
if [ -z "$$path" ]; then echo "Error: Path cannot be empty"; exit 1; fi; \
|
if [ -z "$$path" ]; then echo "Error: Path cannot be empty"; exit 1; fi; \
|
||||||
|
if echo $$path | grep -q 'content/'; then path=`echo $$path | sed 's|content/||'`; fi; \
|
||||||
if [ -z "$$line_length" ]; then line_length=100; fi; \
|
if [ -z "$$line_length" ]; then line_length=100; fi; \
|
||||||
export REVIEW=1; \
|
export REVIEW=1; \
|
||||||
python tests/main.py --max-line-length=$$line_length $(SOURCE_DIR)/$$path
|
python tests/main.py --max-line-length=$$line_length $(SOURCE_DIR)/$$path
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
- Python dependencies listed in the file `requirements.txt`.
|
- Python dependencies listed in the file `requirements.txt`.
|
||||||
- Make
|
- Make
|
||||||
- A local copy of the [odoo/odoo repository](https://github.com/odoo/odoo) (optional)
|
- A local copy of the [odoo/odoo repository](https://github.com/odoo/odoo) (optional)
|
||||||
|
- A local copy of the [odoo/upgrade-util repository](https://github.com/odoo/upgrade-util) (optional)
|
||||||
|
|
||||||
### Instructions
|
### Instructions
|
||||||
|
|
||||||
@ -18,8 +19,9 @@
|
|||||||
3. See [this guide](https://www.odoo.com/documentation/latest/contributing/documentation.html)
|
3. See [this guide](https://www.odoo.com/documentation/latest/contributing/documentation.html)
|
||||||
for more detailed instructions.
|
for more detailed instructions.
|
||||||
|
|
||||||
Optional: place your local copy of the `odoo/odoo` repository in the parent directory or in the root
|
Optional: place your local copy of the `odoo/odoo` and `odoo/upgrade-util` repositories in
|
||||||
directory of the documentation to build the latter with the documented Python docstrings.
|
the parent directory or in the root directory of the documentation to build the latter
|
||||||
|
with the documented Python docstrings.
|
||||||
|
|
||||||
## Contribute to the documentation
|
## Contribute to the documentation
|
||||||
|
|
||||||
|
64
conf.py
@ -22,7 +22,7 @@ copyright = 'Odoo S.A.'
|
|||||||
# `version` is the version info for the project being documented, acts as replacement for |version|,
|
# `version` is the version info for the project being documented, acts as replacement for |version|,
|
||||||
# also used in various other places throughout the built documents.
|
# also used in various other places throughout the built documents.
|
||||||
# `release` is the full version, including alpha/beta/rc tags. Acts as replacement for |release|.
|
# `release` is the full version, including alpha/beta/rc tags. Acts as replacement for |release|.
|
||||||
version = release = 'master'
|
version = release = '17.0'
|
||||||
|
|
||||||
# `current_branch` is the technical name of the current branch.
|
# `current_branch` is the technical name of the current branch.
|
||||||
# E.g., saas-15.4 -> saas-15.4; 12.0 -> 12.0, master -> master (*).
|
# E.g., saas-15.4 -> saas-15.4; 12.0 -> 12.0, master -> master (*).
|
||||||
@ -133,6 +133,24 @@ else:
|
|||||||
)
|
)
|
||||||
odoo_dir_in_path = True
|
odoo_dir_in_path = True
|
||||||
|
|
||||||
|
if odoo_dir_in_path:
|
||||||
|
upgrade_util_dir = next(filter(Path.exists, [Path('upgrade-util'), Path('../upgrade-util')]), None)
|
||||||
|
if not upgrade_util_dir:
|
||||||
|
_logger.warning(
|
||||||
|
"Could not find Upgrade Utils sources directory in `upgrade_util`.\n"
|
||||||
|
"The developer documentation will be built but autodoc directives will be skipped.\n"
|
||||||
|
"In order to fully build the 'Developer' documentation, clone the repository with "
|
||||||
|
"`git clone https://github.com/odoo/upgrade-util` or create a symbolic link."
|
||||||
|
)
|
||||||
|
odoo_dir_in_path = False
|
||||||
|
else:
|
||||||
|
_logger.info(
|
||||||
|
"Found Upgrade Util sources in %(directory)s",
|
||||||
|
{'directory': upgrade_util_dir.resolve()},
|
||||||
|
)
|
||||||
|
from odoo import upgrade
|
||||||
|
upgrade.__path__.append(str((upgrade_util_dir / 'src').resolve()))
|
||||||
|
|
||||||
# Mapping between odoo models related to master data and the declaration of the
|
# Mapping between odoo models related to master data and the declaration of the
|
||||||
# data. This is used to point users to available xml_ids when giving values for
|
# data. This is used to point users to available xml_ids when giving values for
|
||||||
# a field with the autodoc_field extension.
|
# a field with the autodoc_field extension.
|
||||||
@ -213,15 +231,13 @@ sphinx.transforms.i18n.docname_to_domain = (
|
|||||||
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
|
# is populated. If a version is passed to `versions` but is not listed here, it will not be shown.
|
||||||
versions_names = {
|
versions_names = {
|
||||||
'master': "Master",
|
'master': "Master",
|
||||||
'saas-16.4': "Odoo Online",
|
'saas-18.1': "Odoo Online",
|
||||||
'saas-16.3': "Odoo Online",
|
'18.0': "Odoo 18",
|
||||||
'saas-16.2': "Odoo Online",
|
'saas-17.4': "Odoo Online",
|
||||||
'saas-16.1': "Odoo Online",
|
'saas-17.2': "Odoo Online",
|
||||||
|
'17.0': "Odoo 17",
|
||||||
'16.0': "Odoo 16",
|
'16.0': "Odoo 16",
|
||||||
'saas-15.2': "Odoo Online",
|
|
||||||
'15.0': "Odoo 15",
|
'15.0': "Odoo 15",
|
||||||
'14.0': "Odoo 14",
|
|
||||||
'13.0': "Odoo 13",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# The language names that should be shown in the language switcher, if the config option `languages`
|
# The language names that should be shown in the language switcher, if the config option `languages`
|
||||||
@ -230,11 +246,19 @@ languages_names = {
|
|||||||
'de': 'DE',
|
'de': 'DE',
|
||||||
'en': 'EN',
|
'en': 'EN',
|
||||||
'es': 'ES',
|
'es': 'ES',
|
||||||
|
'es_419': 'ES (LATAM)',
|
||||||
'fr': 'FR',
|
'fr': 'FR',
|
||||||
|
'id': 'ID',
|
||||||
'it': 'IT',
|
'it': 'IT',
|
||||||
|
'ja': 'JA',
|
||||||
|
'ko': 'KR',
|
||||||
'nl': 'NL',
|
'nl': 'NL',
|
||||||
'pt_BR': 'PT',
|
'pt_BR': 'PT',
|
||||||
|
'ro': 'RO',
|
||||||
|
'sv': 'SV',
|
||||||
|
'th': 'TH',
|
||||||
'uk': 'UA',
|
'uk': 'UA',
|
||||||
|
'vi': 'VI',
|
||||||
'zh_CN': 'ZH (CN)',
|
'zh_CN': 'ZH (CN)',
|
||||||
'zh_TW': 'ZH (TW)'
|
'zh_TW': 'ZH (TW)'
|
||||||
}
|
}
|
||||||
@ -245,6 +269,9 @@ redirects_dir = 'redirects/'
|
|||||||
sphinx_tabs_disable_tab_closing = True
|
sphinx_tabs_disable_tab_closing = True
|
||||||
sphinx_tabs_disable_css_loading = True
|
sphinx_tabs_disable_css_loading = True
|
||||||
|
|
||||||
|
# Autodoc ordering
|
||||||
|
autodoc_member_order = 'bysource'
|
||||||
|
|
||||||
#=== Options for HTML output ===#
|
#=== Options for HTML output ===#
|
||||||
|
|
||||||
html_theme = 'odoo_theme'
|
html_theme = 'odoo_theme'
|
||||||
@ -365,6 +392,9 @@ def setup(app):
|
|||||||
app.add_config_value('is_remote_build', None, 'env') # Whether the build is remotely deployed
|
app.add_config_value('is_remote_build', None, 'env') # Whether the build is remotely deployed
|
||||||
app.add_config_value('source_read_replace_vals', {}, 'env')
|
app.add_config_value('source_read_replace_vals', {}, 'env')
|
||||||
app.connect('source-read', source_read_replace)
|
app.connect('source-read', source_read_replace)
|
||||||
|
# TODO uncomment after moving to >= v7.2.5 to also substitute placeholders in included files.
|
||||||
|
# See https://github.com/sphinx-doc/sphinx/commit/ff1831
|
||||||
|
# app.connect('include-read', source_read_replace)
|
||||||
|
|
||||||
app.add_lexer('json', JsonLexer)
|
app.add_lexer('json', JsonLexer)
|
||||||
app.add_lexer('xml', XmlLexer)
|
app.add_lexer('xml', XmlLexer)
|
||||||
@ -444,7 +474,7 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
|
|||||||
"""
|
"""
|
||||||
_current_lang = app.config.language or 'en'
|
_current_lang = app.config.language or 'en'
|
||||||
# Replace the context value by its upper-cased value ("FR" instead of "fr")
|
# Replace the context value by its upper-cased value ("FR" instead of "fr")
|
||||||
context['language'] = languages_names.get(_current_lang)
|
context['language'] = languages_names.get(_current_lang, _current_lang.upper())
|
||||||
context['language_code'] = _current_lang
|
context['language_code'] = _current_lang
|
||||||
|
|
||||||
# If the list of languages is not set, assume that the project has no alternate language
|
# If the list of languages is not set, assume that the project has no alternate language
|
||||||
@ -478,8 +508,24 @@ def _generate_alternate_urls(app, pagename, templatename, context, doctree):
|
|||||||
_version = _version or app.config.version
|
_version = _version or app.config.version
|
||||||
_lang = _lang or app.config.language or 'en'
|
_lang = _lang or app.config.language or 'en'
|
||||||
_canonical_page = f'{pagename}.html'
|
_canonical_page = f'{pagename}.html'
|
||||||
|
|
||||||
|
# legal translations have different URLs schemes as they are not managed on transifex
|
||||||
|
# e.g. FR translation of /terms/enterprise => /fr/terms/enterprise_fr
|
||||||
|
if pagename.startswith('legal/terms/'):
|
||||||
|
if _lang in legal_translations and not pagename.endswith(f"_{_lang}"):
|
||||||
|
# remove language code for current translation, set target one
|
||||||
|
_page = re.sub("_[a-z]{2}$", "", pagename)
|
||||||
|
if 'terms/i18n' not in _page:
|
||||||
|
_page = _page.replace("/terms/", "/terms/i18n/")
|
||||||
|
_canonical_page = f'{_page}_{_lang}.html'
|
||||||
|
elif _lang == 'en' and pagename.endswith(tuple(f"_{l}" for l in legal_translations)):
|
||||||
|
# remove language code for current translation, link to original EN one
|
||||||
|
_page = re.sub("_[a-z]{2}$", "", pagename)
|
||||||
|
_canonical_page = f'{_page.replace("/i18n/", "/")}.html'
|
||||||
|
|
||||||
if app.config.is_remote_build:
|
if app.config.is_remote_build:
|
||||||
_canonical_page = _canonical_page.replace('index.html', '')
|
_canonical_page = _canonical_page.replace('index.html', '')
|
||||||
|
|
||||||
return f'{_root}' \
|
return f'{_root}' \
|
||||||
f'{f"/{_version}" if app.config.versions else ""}' \
|
f'{f"/{_version}" if app.config.versions else ""}' \
|
||||||
f'{f"/{_lang}" if _lang != "en" else ""}' \
|
f'{f"/{_lang}" if _lang != "en" else ""}' \
|
||||||
|
@ -3,20 +3,63 @@
|
|||||||
:hide-page-toc:
|
:hide-page-toc:
|
||||||
:show-toc:
|
:show-toc:
|
||||||
|
|
||||||
====================
|
===================
|
||||||
Install and Maintain
|
Database management
|
||||||
====================
|
===================
|
||||||
|
|
||||||
These guides provide instructions on how to install, maintain and upgrade Odoo databases.
|
These guides provide instructions on how to install, maintain and upgrade Odoo databases.
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
:doc:`History of Versions <administration/maintain/supported_versions>`
|
:doc:`History of Versions <administration/supported_versions>`
|
||||||
|
|
||||||
|
Installation
|
||||||
|
============
|
||||||
|
|
||||||
|
Depending on the intended use case, there are multiple ways to install Odoo - or not install it at
|
||||||
|
all.
|
||||||
|
|
||||||
|
- :doc:`Online <administration/odoo_online>` is the easiest way to use Odoo in production or to try it.
|
||||||
|
|
||||||
|
- :doc:`Packaged installers <administration/on_premise/packages>` are suitable for testing Odoo and
|
||||||
|
developing modules. They can be used for long-term production with additional deployment and
|
||||||
|
maintenance work.
|
||||||
|
|
||||||
|
- :doc:`Source install <administration/on_premise/source>` provides greater flexibility, as it
|
||||||
|
allows, for example, running multiple Odoo versions on the same system. It is adequate to develop
|
||||||
|
modules and can be used as a base for production deployment.
|
||||||
|
|
||||||
|
- A `Docker <https://hub.docker.com/_/odoo/>`_ base image is available for development or
|
||||||
|
deployment.
|
||||||
|
|
||||||
|
.. _install/editions:
|
||||||
|
|
||||||
|
Editions
|
||||||
|
========
|
||||||
|
|
||||||
|
There are two different editions.
|
||||||
|
|
||||||
|
**Odoo Community** is the free and open-source version of the software, licensed under the `GNU
|
||||||
|
LGPLv3 <https://github.com/odoo/odoo/blob/master/LICENSE>`_. It is the core upon which Odoo
|
||||||
|
Enterprise is built.
|
||||||
|
|
||||||
|
**Odoo Enterprise** is the shared source version of the software, giving access to more
|
||||||
|
functionalities, including functional support, upgrades, and hosting. `Pricing
|
||||||
|
<https://www.odoo.com/pricing-plan>`_ starts from one app free.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
:doc:`Switch from Community to Enterprise <administration/on_premise/community_to_enterprise>` at
|
||||||
|
any time (except for the source install).
|
||||||
|
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:titlesonly:
|
:titlesonly:
|
||||||
|
|
||||||
administration/install
|
administration/hosting
|
||||||
administration/maintain
|
administration/odoo_online
|
||||||
administration/upgrade
|
|
||||||
administration/odoo_sh
|
administration/odoo_sh
|
||||||
|
administration/on_premise
|
||||||
|
administration/upgrade
|
||||||
|
administration/neutralized_database
|
||||||
|
administration/supported_versions
|
||||||
|
administration/mobile
|
||||||
|
administration/odoo_accounts
|
||||||
|
121
content/administration/hosting.rst
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
=======
|
||||||
|
Hosting
|
||||||
|
=======
|
||||||
|
|
||||||
|
.. _hosting/change-solution:
|
||||||
|
|
||||||
|
Change hosting solution
|
||||||
|
=======================
|
||||||
|
|
||||||
|
The instructions to change the hosting type of a database depend on the current solution used and to
|
||||||
|
which solution the database should be moved.
|
||||||
|
|
||||||
|
Transferring an on-premise database
|
||||||
|
===================================
|
||||||
|
|
||||||
|
To Odoo Online
|
||||||
|
--------------
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
- Odoo Online is *not* compatible with **non-standard apps**.
|
||||||
|
- The database's current version must be :doc:`supported <supported_versions>`.
|
||||||
|
|
||||||
|
#. Create a :ref:`duplicate of the database <on-premise/duplicate>`.
|
||||||
|
#. In this duplicate, uninstall all **non-standard apps**.
|
||||||
|
#. Use the database manager to grab a *dump with filestore*.
|
||||||
|
#. `Submit a support ticket <https://www.odoo.com/help>`_ including the following:
|
||||||
|
|
||||||
|
- your **subscription number**,
|
||||||
|
- the **URL** you want to use for the database (e.g., `company.odoo.com`), and
|
||||||
|
- the **dump** as an attachment or as a link to the file (required for 60 MB+ files).
|
||||||
|
|
||||||
|
#. Odoo then makes sure the database is compatible before putting it online. In case of technical
|
||||||
|
issues during the process, Odoo might contact you.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If you have time constraints, `submit a support ticket <https://www.odoo.com/help>`_ as soon as
|
||||||
|
possible to schedule the transfer.
|
||||||
|
|
||||||
|
To Odoo.sh
|
||||||
|
----------
|
||||||
|
|
||||||
|
Follow the instructions found in :ref:`the Import your database section
|
||||||
|
<odoo_sh_import_your_database>` of the Odoo.sh *Create your project* documentation.
|
||||||
|
|
||||||
|
Transferring an Odoo Online database
|
||||||
|
====================================
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
Odoo Online's :ref:`intermediary versions <supported_versions>` are not supported by Odoo.sh or
|
||||||
|
on-premise. Therefore, if the database to transfer is running an intermediary version, it must be
|
||||||
|
upgraded first to the next :ref:`major version <supported_versions>`, waiting for its release if
|
||||||
|
necessary.
|
||||||
|
|
||||||
|
.. example::
|
||||||
|
Transferring an online database running on Odoo 16.3 would require first upgrading it to Odoo
|
||||||
|
17.0.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
Click the gear icon (:guilabel:`⚙`) next to the database name on the `Odoo Online database
|
||||||
|
manager <https://www.odoo.com/my/databases/>`_ to display its version number.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
If there is an active Odoo subscription linked to the database being migrated, reach out to
|
||||||
|
the Customer Service Manager or `submit a support ticket <https://www.odoo.com/help>`_ to
|
||||||
|
complete the subscription transfer.
|
||||||
|
|
||||||
|
To on-premise
|
||||||
|
-------------
|
||||||
|
|
||||||
|
#. Sign in to `the Odoo Online database manager <https://www.odoo.com/my/databases/>`_ and click the
|
||||||
|
gear icon (:guilabel:`⚙`) next to the database name to :guilabel:`Download` a backup. If the
|
||||||
|
download fails due to the file being too large, `contact Odoo support
|
||||||
|
<https://www.odoo.com/help>`_.
|
||||||
|
#. Restore the database from the database manager on your local server using the backup.
|
||||||
|
|
||||||
|
To Odoo.sh
|
||||||
|
----------
|
||||||
|
|
||||||
|
#. Sign in to `the Odoo Online database manager <https://www.odoo.com/my/databases/>`_ and click the
|
||||||
|
gear icon (:guilabel:`⚙`) next to the database name to :guilabel:`Download` a backup. If the
|
||||||
|
download fails due to the file being too large, `contact Odoo support
|
||||||
|
<https://www.odoo.com/help>`_.
|
||||||
|
#. Follow the instructions found in :ref:`the Import your database section
|
||||||
|
<odoo_sh_import_your_database>` of the Odoo.sh *Create your project* documentation.
|
||||||
|
|
||||||
|
Transferring an Odoo.sh database
|
||||||
|
================================
|
||||||
|
|
||||||
|
To Odoo Online
|
||||||
|
--------------
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
Odoo Online is *not* compatible with **non-standard apps**.
|
||||||
|
|
||||||
|
#. Uninstall all **non-standard apps** in a staging build before doing it in the production build.
|
||||||
|
#. `Create a support ticket <https://www.odoo.com/help>`_ including the following:
|
||||||
|
|
||||||
|
- your **subscription number**,
|
||||||
|
- the **URL** you want to use for the database (e.g., `company.odoo.com`),
|
||||||
|
- which **branch** should be migrated,
|
||||||
|
- in which **region** you want the database to be hosted (Americas, Europe, or Asia),
|
||||||
|
- which user(s) will be the **administrator(s)**, and
|
||||||
|
- **when** (and in which timezone) you want the database to be up and running.
|
||||||
|
|
||||||
|
#. Odoo then makes sure the database is compatible before putting it online. In case of technical
|
||||||
|
issues during the process, Odoo might contact you.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
- If you have time constraints, `submit a support ticket <https://www.odoo.com/help>`_ as soon as
|
||||||
|
possible to schedule the transfer.
|
||||||
|
- Select the **region** closest to most of your users to reduce latency.
|
||||||
|
- Future **administrator(s)** must have an Odoo.com account.
|
||||||
|
- The **date and time** you want the database to be up and running are helpful to organize the
|
||||||
|
switch from the Odoo.sh server to the Odoo Online servers.
|
||||||
|
- Databases are **not reachable** during their migration.
|
||||||
|
|
||||||
|
To on-premise
|
||||||
|
-------------
|
||||||
|
|
||||||
|
#. Download a :ref:`backup of your Odoo.sh production database <odoo_sh_branches_backups>`.
|
||||||
|
#. Restore the database from the database manager on your local server using the backup.
|
@ -1,49 +0,0 @@
|
|||||||
:show-content:
|
|
||||||
|
|
||||||
=======
|
|
||||||
Install
|
|
||||||
=======
|
|
||||||
|
|
||||||
Depending on the intended use case, there are multiple ways to install Odoo - or not install it at
|
|
||||||
all.
|
|
||||||
|
|
||||||
- :doc:`Online <install/online>` is the easiest way to use Odoo in production or to try it.
|
|
||||||
|
|
||||||
- :doc:`Packaged installers <install/packages>` are suitable for testing Odoo and developing
|
|
||||||
modules. They can be used for long-term production with additional deployment and maintenance
|
|
||||||
work.
|
|
||||||
|
|
||||||
- :doc:`Source install <install/source>` provides greater flexibility, as it allows, for example,
|
|
||||||
running multiple Odoo versions on the same system. It is adequate to develop modules and can be
|
|
||||||
used as a base for production deployment.
|
|
||||||
|
|
||||||
- A `Docker <https://hub.docker.com/_/odoo/>`_ base image is available for development or
|
|
||||||
deployment.
|
|
||||||
|
|
||||||
.. _install/editions:
|
|
||||||
|
|
||||||
Editions
|
|
||||||
========
|
|
||||||
|
|
||||||
There are two different editions.
|
|
||||||
|
|
||||||
**Odoo Community** is the free and open-source version of the software, licensed under the `GNU
|
|
||||||
LGPLv3 <https://github.com/odoo/odoo/blob/master/LICENSE>`_. It is the core upon which Odoo
|
|
||||||
Enterprise is built.
|
|
||||||
|
|
||||||
**Odoo Enterprise** is the shared source version of the software, giving access to more
|
|
||||||
functionalities, including functional support, upgrades, and hosting. `Pricing
|
|
||||||
<https://www.odoo.com/pricing-plan>`_ starts from one app free.
|
|
||||||
|
|
||||||
.. tip::
|
|
||||||
:doc:`Switch from Community to Enterprise <maintain/enterprise>` at any time (except for the
|
|
||||||
source install).
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
|
|
||||||
install/online
|
|
||||||
install/packages
|
|
||||||
install/source
|
|
||||||
install/deploy
|
|
||||||
install/cdn
|
|
||||||
install/email_gateway
|
|
@ -1,21 +0,0 @@
|
|||||||
======
|
|
||||||
Online
|
|
||||||
======
|
|
||||||
|
|
||||||
Online instances are accessed using any web browser and do not require a local installation.
|
|
||||||
|
|
||||||
Demo
|
|
||||||
----
|
|
||||||
|
|
||||||
To quickly try out Odoo, shared `demo <https://demo.odoo.com>`_ instances are available. No
|
|
||||||
registration is required, but each instance only lives for a few hours.
|
|
||||||
|
|
||||||
Odoo Online
|
|
||||||
-----------
|
|
||||||
|
|
||||||
`Odoo Online <https://www.odoo.com/trial>`_ provides private instances which are fully managed and
|
|
||||||
hosted by Odoo. It can be used for long-term production or to test Odoo thoroughly, including
|
|
||||||
customizations that don't require code.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
Odoo Online is incompatible with custom modules or the Odoo App Store.
|
|
@ -1,18 +0,0 @@
|
|||||||
:nosearch:
|
|
||||||
|
|
||||||
========
|
|
||||||
Maintain
|
|
||||||
========
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
|
|
||||||
maintain/domain_names
|
|
||||||
maintain/azure_oauth
|
|
||||||
maintain/google_oauth
|
|
||||||
maintain/mailjet_api
|
|
||||||
maintain/update
|
|
||||||
maintain/enterprise
|
|
||||||
maintain/hosting_changes
|
|
||||||
maintain/odoo_online
|
|
||||||
maintain/on_premise
|
|
||||||
maintain/supported_versions
|
|
@ -1,366 +0,0 @@
|
|||||||
============
|
|
||||||
Domain names
|
|
||||||
============
|
|
||||||
|
|
||||||
A **domain name** works as an address for your website. It makes the Internet much more accessible
|
|
||||||
as it allows users to type a meaningful web address, such as ``www.odoo.com``, rather than its
|
|
||||||
server's IP address with a series of numbers.
|
|
||||||
|
|
||||||
You can use a custom domain name to access your Odoo database and websites:
|
|
||||||
|
|
||||||
- By :ref:`registering a free domain name with Odoo <domain-name/odoo-register>` (for Odoo Online
|
|
||||||
databases)
|
|
||||||
- By :ref:`configuring a custom domain that you already own <domain-name/existing>`.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
Odoo Online and Odoo.sh databases, including their websites, use by default a subdomain of
|
|
||||||
``odoo.com`` for both the URL and the emails (e.g., ``https://example.odoo.com``).
|
|
||||||
|
|
||||||
.. important::
|
|
||||||
Odoo offers a :ref:`free custom domain name <domain-name/odoo-register>` to all Odoo Online
|
|
||||||
databases for one year. Visitors can then access your website with an address such as
|
|
||||||
``www.example.com`` rather than the default ``example.odoo.com``.
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
- `Odoo Tutorials: Register a Free Domain Name
|
|
||||||
<https://www.odoo.com/slides/slide/register-a-free-domain-name-1663>`_
|
|
||||||
- `Odoo Quick Tips: Get a free domain name! <https://www.youtube.com/watch?v=eAfgeNOHLP4>`_
|
|
||||||
|
|
||||||
.. _domain-name/about:
|
|
||||||
|
|
||||||
About domain names
|
|
||||||
==================
|
|
||||||
|
|
||||||
Having a **good domain name** is as important to your branding as the name of your business or
|
|
||||||
organization as it is the first thing your visitors will notice. We recommend you keep them *simple,
|
|
||||||
short, easy to remember and spell*.
|
|
||||||
|
|
||||||
A **subdomain** is a domain that is a part of another domain. It often refers to the additional part
|
|
||||||
that comes before the main domain name. Traditionally, most websites use the ``www.`` subdomain,
|
|
||||||
but any string of letters can be used as well. You can use subdomains to direct your visitors to
|
|
||||||
other websites than your main website or to specific pages (e.g., ``experience.odoo.com`` points to
|
|
||||||
a specific page.)
|
|
||||||
|
|
||||||
All domain names are referenced in the **Domain Name System**, or **DNS**, which works as a giant
|
|
||||||
directory for the Internet. There are many DNS servers, so any modification to the DNS can take up
|
|
||||||
to 72 hours to propagate worldwide on all servers.
|
|
||||||
|
|
||||||
.. _domain-name/indexing:
|
|
||||||
|
|
||||||
Indexing of domain names by search engines
|
|
||||||
------------------------------------------
|
|
||||||
|
|
||||||
Search engines, such as Google and Bing, rely on web crawlers (:dfn:`robots that explore and analyze
|
|
||||||
the web`) to index all websites and their related domain names. These crawlers discover new URLs
|
|
||||||
thanks to links on known web pages. As a result, search engines should index domain names
|
|
||||||
automatically after a while, as long as their URLs are mentioned elsewhere on the Internet.
|
|
||||||
|
|
||||||
Improving the appearance and positioning of web pages on search engines is a practice named "Search
|
|
||||||
Engine Optimization" (SEO).
|
|
||||||
|
|
||||||
.. tip::
|
|
||||||
Adding relevant content, optimizing metadata, and building high-quality backlinks can all help
|
|
||||||
improve a website's search engine visibility.
|
|
||||||
|
|
||||||
Some search engines provide tools for web admins, such as
|
|
||||||
`Google Search Console <https://search.google.com/search-console>`_ and
|
|
||||||
`Bing Webmaster Tools <https://www.bing.com/webmasters>`_, to help you analyze and improve your
|
|
||||||
page ranking. To use these services, you must prove that you are the owner of your domain name. One
|
|
||||||
way to verify the ownership of your domain name is by adding a DNS record. You can do this for
|
|
||||||
:ref:`domain names registered with Odoo <domain-name/odoo-manage>` and for domain names managed by
|
|
||||||
other providers.
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
- :doc:`/applications/websites/website/pages/seo`
|
|
||||||
- `Google Search Console Help - Verify your site ownership <https://support.google.com/webmasters/answer/9008080>`_
|
|
||||||
- `Bing Webmaster Tools - Add and Verify site <https://www.bing.com/webmasters/help/add-and-verify-site-12184f8b>`_
|
|
||||||
|
|
||||||
.. _domain-name/odoo-register:
|
|
||||||
|
|
||||||
Register a free domain name with Odoo
|
|
||||||
=====================================
|
|
||||||
|
|
||||||
You can register a domain name for your Odoo Online database directly from Odoo Website or your
|
|
||||||
database manager.
|
|
||||||
|
|
||||||
.. important::
|
|
||||||
- Your domain name is **free for one year** if you register it with Odoo!
|
|
||||||
- The domain name is registered with `Gandi <https://www.gandi.net/>`_, the domain name
|
|
||||||
registrar.
|
|
||||||
- You are the owner of the domain name and can use it for other purposes.
|
|
||||||
- Odoo manages payment and technical support for you.
|
|
||||||
- This offer doesn't include any mailbox. However, you can :ref:`configure your MX records
|
|
||||||
<domain-name/odoo-manage>` to use your own email server or solution such as Google Workspace.
|
|
||||||
|
|
||||||
To do so, go to :menuselection:`Website --> Domain Name`. Alternatively, open your `database manager
|
|
||||||
<https://www.odoo.com/my/databases>`_, click on the :guilabel:`settings` button next to your
|
|
||||||
database, then on :guilabel:`Domain names`.
|
|
||||||
|
|
||||||
.. image:: domain_names/register-menu.png
|
|
||||||
:align: center
|
|
||||||
:alt: Clicking on Domain Names from an Odoo website
|
|
||||||
|
|
||||||
Search for the domain name of your choice to check its availability, then select the one you want to
|
|
||||||
register for your website.
|
|
||||||
|
|
||||||
.. image:: domain_names/register-search.png
|
|
||||||
:align: center
|
|
||||||
:alt: The search of the domain name example.com shows which associated domains are available.
|
|
||||||
|
|
||||||
Next, fill in the form with your information to become the domain name owner.
|
|
||||||
|
|
||||||
Your domain name is directly linked to your database, but you still have to :ref:`map your domain
|
|
||||||
name with your website <domain-name/website-map>`.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
- Free domain names are also available for free Odoo Online databases (if you installed one app
|
|
||||||
only, for example). In this case, Odoo reviews your request and your website to avoid abuse.
|
|
||||||
This process can take several days due to the success of the offer.
|
|
||||||
- This is not available for Odoo.sh databases yet.
|
|
||||||
|
|
||||||
.. _domain-name/odoo-manage:
|
|
||||||
|
|
||||||
Manage your domain name registered with Odoo
|
|
||||||
--------------------------------------------
|
|
||||||
|
|
||||||
To manage the DNS records of your domain name registered with Odoo or to visualize the contacts
|
|
||||||
associated with it, open your `database manager <https://www.odoo.com/my/databases>`_, click on the
|
|
||||||
:guilabel:`settings` button next to your database, on :guilabel:`Domain names`, and then on
|
|
||||||
:guilabel:`Contacts` or :guilabel:`DNS`.
|
|
||||||
|
|
||||||
.. image:: domain_names/manage.png
|
|
||||||
:align: center
|
|
||||||
:alt: Management of the domain names linked to an Odoo database
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
Please `submit a support ticket <https://www.odoo.com/help>`_ if you need further assistance to
|
|
||||||
manage your domain name.
|
|
||||||
|
|
||||||
.. _domain-name/existing:
|
|
||||||
|
|
||||||
Configure your existing domain name
|
|
||||||
===================================
|
|
||||||
|
|
||||||
If you already own a domain name, you can use it to point to your website.
|
|
||||||
|
|
||||||
To avoid any issue with the :ref:`SSL certificate validation <domain-name/ssl>`, we highly recommend
|
|
||||||
that you proceed with the following actions in this order:
|
|
||||||
|
|
||||||
#. :ref:`Add a CNAME record <domain-name/cname>` on your domain name's DNS zone.
|
|
||||||
#. :ref:`Map your domain name with your Odoo database <domain-name/db-map>`.
|
|
||||||
#. :ref:`Map your domain name with your Odoo website <domain-name/website-map>`.
|
|
||||||
|
|
||||||
.. _domain-name/cname:
|
|
||||||
|
|
||||||
Add a CNAME record
|
|
||||||
------------------
|
|
||||||
|
|
||||||
A **CNAME record** is a type of DNS record that points to the domain of another website rather than
|
|
||||||
directly to an IP address.
|
|
||||||
|
|
||||||
You need a CNAME record that points to your Odoo database. The requirements are detailed in your
|
|
||||||
database manager.
|
|
||||||
|
|
||||||
.. tabs::
|
|
||||||
|
|
||||||
.. group-tab:: Odoo Online
|
|
||||||
|
|
||||||
The target address is the current address of your database, as defined at its creation (e.g.,
|
|
||||||
``example.odoo.com``)
|
|
||||||
|
|
||||||
.. group-tab:: Odoo.sh
|
|
||||||
|
|
||||||
Your project's main address is defined in :menuselection:`Settings --> Project Name`.
|
|
||||||
|
|
||||||
If you want to target a specific branch (production, staging or development), go to
|
|
||||||
:menuselection:`Branches --> select your branch --> Settings --> Custom domains`, and click on
|
|
||||||
:guilabel:`How to set up my domain?`. A message indicates which address your CNAME record
|
|
||||||
should target.
|
|
||||||
|
|
||||||
#. Open your domain name's manager dashboard.
|
|
||||||
#. Open the **DNS zone** management page for the domain name you want to configure.
|
|
||||||
#. Create a **CNAME record** pointing to the address of your database.
|
|
||||||
|
|
||||||
While Odoo suggests creating a CNAME record for your ``www.`` subdomain (``www.example.com``), you
|
|
||||||
can of course use any domain name of your choice, with any subdomain (e.g.,
|
|
||||||
``anything.example.com``).
|
|
||||||
|
|
||||||
.. example::
|
|
||||||
You own the domain name ``example.com``, and you have an Odoo Online database at the address
|
|
||||||
``example.odoo.com``. You want to access your Odoo database primarily with the domain
|
|
||||||
``www.example.com`` but also with the :ref:`naked domain <domain-name/naked-domain>`
|
|
||||||
``example.com``.
|
|
||||||
|
|
||||||
To do so, you create a CNAME record for the ``www`` subdomain, with ``example.odoo.com`` as the
|
|
||||||
target. The DNS zone manager generates the following rule and adds it to your DNS zone: ``www IN
|
|
||||||
CNAME example.odoo.com.``
|
|
||||||
|
|
||||||
You also create a redirection from ``example.com`` to ``wwww.example.com``.
|
|
||||||
|
|
||||||
Your new DNS records are propagated to all DNS servers.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
Here are some specific guidelines to create a CNAME record:
|
|
||||||
|
|
||||||
- `GoDaddy <https://www.godaddy.com/help/add-a-cname-record-19236>`_
|
|
||||||
- `Namecheap <https://www.namecheap.com/support/knowledgebase/article.aspx/9646/2237/how-to-create-a-cname-record-for-your-domain>`_
|
|
||||||
- `OVH <https://docs.ovh.com/us/en/domains/web_hosting_how_to_edit_my_dns_zone/#add-a-new-dns-record>`_
|
|
||||||
- `CloudFlare <https://support.cloudflare.com/hc/en-us/articles/360019093151>`_
|
|
||||||
- `Google Domains <https://support.google.com/domains/answer/3290350?hl=en>`_
|
|
||||||
|
|
||||||
.. _domain-name/naked-domain:
|
|
||||||
|
|
||||||
Naked domain
|
|
||||||
~~~~~~~~~~~~
|
|
||||||
|
|
||||||
A **naked domain** is a domain name that doesn't have any subdomain at the beginning of the address
|
|
||||||
(e.g., ``odoo.com`` instead of ``www.odoo.com``).
|
|
||||||
|
|
||||||
You may want your naked domain to redirect to your website as some visitors may not type the full
|
|
||||||
domain name to access your website.
|
|
||||||
|
|
||||||
#. Open your domain name's manager dashboard.
|
|
||||||
#. Create a **redirection** from the naked domain (``example.com``) to your main domain name
|
|
||||||
(``www.example.com``).
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
Depending on your domain name registrar, this redirection may be already pre-configured.
|
|
||||||
|
|
||||||
.. _domain-name/db-map:
|
|
||||||
|
|
||||||
Map your domain name with your Odoo database
|
|
||||||
--------------------------------------------
|
|
||||||
|
|
||||||
.. tabs::
|
|
||||||
|
|
||||||
.. group-tab:: Odoo Online
|
|
||||||
|
|
||||||
Open your `database manager <https://www.odoo.com/my/databases>`_, click on the
|
|
||||||
:guilabel:`settings` button next to your database, on :guilabel:`Domain names`, and then on
|
|
||||||
:guilabel:`Use my own domain` at the bottom of the right column.
|
|
||||||
|
|
||||||
Type the domain name you want to add to this database, then click on :guilabel:`Verify` to
|
|
||||||
check if the CNAME record is correctly configured. Once done, click on :guilabel:`I confirm,
|
|
||||||
it's done`.
|
|
||||||
|
|
||||||
.. image:: domain_names/online-map.png
|
|
||||||
:align: center
|
|
||||||
:alt: Verification of the CNAME records of a domain name before mapping it with a database
|
|
||||||
|
|
||||||
.. group-tab:: Odoo.sh
|
|
||||||
|
|
||||||
Go to :menuselection:`Branches --> select your branch --> Settings --> Custom domains`, type
|
|
||||||
the domain name you want to add to this database, then click on :guilabel:`Add domain`.
|
|
||||||
|
|
||||||
.. image:: domain_names/odoo-sh-map.png
|
|
||||||
:align: center
|
|
||||||
:alt: Mapping a domain name with an Odoo.sh branch
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
- :ref:`Odoo.sh branches: settings tab <odoosh-gettingstarted-branches-tabs-settings>`
|
|
||||||
|
|
||||||
.. warning::
|
|
||||||
Make sure to :ref:`add a CNAME record <domain-name/cname>` to your domain name's DNS **before**
|
|
||||||
mapping your domain name with your Odoo database.
|
|
||||||
|
|
||||||
Failing to do so may impede the validation of the :ref:`SSL certificate <domain-name/ssl>` and
|
|
||||||
would result in a *certificate name mismatch* error. This is often displayed by web browsers as a
|
|
||||||
warning such as *"Your connection is not private"*.
|
|
||||||
|
|
||||||
If this is the case and you have added the domain name to your database's settings less than five
|
|
||||||
days ago, wait 24 hours as the validation may still happen. Otherwise, please `submit a support
|
|
||||||
ticket <https://www.odoo.com/help>`_ including screenshots of your CNAME records.
|
|
||||||
|
|
||||||
.. _domain-name/ssl:
|
|
||||||
|
|
||||||
SSL encryption (HTTPS protocol)
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
**SSL encryption** is an encryption-based Internet security protocol. It allows your visitors to
|
|
||||||
navigate your website through a secure connection, which appears as an ``https://`` protocol at the
|
|
||||||
beginning of your web address, rather than a non-secure ``http://`` protocol.
|
|
||||||
|
|
||||||
Odoo generates a separate SSL certificate for each domain :ref:`mapped in the database manager
|
|
||||||
<domain-name/db-map>`, using integration with `Let's Encrypt Certificate Authority and ACME protocol
|
|
||||||
<https://letsencrypt.org/how-it-works/>`_.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
- The certificate generation may take up to 24h.
|
|
||||||
- Several attempts to validate your certificate are made during the five days following the
|
|
||||||
moment you add your domain name in your database's settings.
|
|
||||||
- If you already use another service, you can keep using it or simply change for Odoo.
|
|
||||||
|
|
||||||
.. _domain-name/web-base-url:
|
|
||||||
|
|
||||||
Web base URL of a database
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
If you have Odoo Website, you can disregard this part and directly :ref:`map your domain name
|
|
||||||
with your website <domain-name/website-map>`.
|
|
||||||
|
|
||||||
The **web base URL** of a database, or **root URL** affects your main website address and all the
|
|
||||||
links sent to your customers (e.g., quotations, portal links, etc.).
|
|
||||||
|
|
||||||
To configure it, access your Odoo database with your custom address, then log in as an administrator
|
|
||||||
of your database (any user in the *Settings* group) from the login screen.
|
|
||||||
|
|
||||||
.. warning::
|
|
||||||
Connecting to your database with the original Odoo subdomain address (e.g., ``example.odoo.com``
|
|
||||||
also updates the web base URL of your database. See below to prevent these automatic updates.
|
|
||||||
|
|
||||||
Alternatively, you can do it manually. To do so, activate the :ref:`developer mode
|
|
||||||
<developer-mode>`, then go to :menuselection:`Settings --> Technical --> System Parameters`.
|
|
||||||
|
|
||||||
Find the key called ``web.base.url`` (or create it if it does not exist) and enter the full address
|
|
||||||
of your website as value, such as ``https://www.example.com``.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
The URL must include the protocol ``https://`` (or ``http://``) and must not end with a slash
|
|
||||||
(``/``).
|
|
||||||
|
|
||||||
To prevent the automatic update of the web base URL when an administrator logs in the database, you
|
|
||||||
can create the following System Parameter:
|
|
||||||
|
|
||||||
- key: ``web.base.url.freeze``
|
|
||||||
- value: ``True``
|
|
||||||
|
|
||||||
.. _domain-name/website-map:
|
|
||||||
|
|
||||||
Map your domain name with your website
|
|
||||||
======================================
|
|
||||||
|
|
||||||
Mapping your domain name to your website isn't the same as mapping it with your database:
|
|
||||||
|
|
||||||
- It defines your domain name as the main one for your website, helping search engines to index your
|
|
||||||
website properly.
|
|
||||||
- It defines your domain name as the base URL for your database, including the portal links sent by
|
|
||||||
email to your customers.
|
|
||||||
- If you have multiple websites, it maps your domain name with the appropriate website.
|
|
||||||
|
|
||||||
Go to :menuselection:`Website --> Configuration --> Settings --> Website Info`. If you have multiple
|
|
||||||
websites, select the one you want to configure.
|
|
||||||
|
|
||||||
In the :guilabel:`Domain` field, fill in the web address of your website (e.g.,
|
|
||||||
``https://www.example.com``) and click on :guilabel:`Save`.
|
|
||||||
|
|
||||||
.. image:: domain_names/website-settings.png
|
|
||||||
:align: center
|
|
||||||
:alt: Configuring https://www.example.com as the Domain of the website
|
|
||||||
|
|
||||||
.. warning::
|
|
||||||
Mapping your domain name with your Odoo website prevents Google from indexing both your custom
|
|
||||||
domain name ``www.example.com`` and your original odoo database address ``example.odoo.com``.
|
|
||||||
|
|
||||||
If both addresses are already indexed, it may take some time before Google removes the indexation
|
|
||||||
of the second address. You may also try using the `Google Search Console
|
|
||||||
<https://search.google.com/search-console>`_ to fix this.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
If you have multiple websites and companies on your database, make sure that you select the
|
|
||||||
right :guilabel:`Company` in the website settings, next to the :guilabel:`Domain` settings. Doing
|
|
||||||
so indicates Odoo which URL to use as the :ref:`base URL <domain-name/web-base-url>` according to
|
|
||||||
the company in use.
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
- :doc:`/applications/general/email_communication/email_servers`
|
|
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 7.2 KiB |
@ -1,106 +0,0 @@
|
|||||||
|
|
||||||
.. _setup/enterprise:
|
|
||||||
|
|
||||||
===================================
|
|
||||||
Switch from Community to Enterprise
|
|
||||||
===================================
|
|
||||||
|
|
||||||
Depending on your current installation, there are multiple ways to upgrade
|
|
||||||
your community version.
|
|
||||||
In any case the basic guidelines are:
|
|
||||||
|
|
||||||
* Backup your community database
|
|
||||||
|
|
||||||
.. image:: enterprise/db_manager.png
|
|
||||||
:class: img-fluid
|
|
||||||
|
|
||||||
* Shutdown your server
|
|
||||||
|
|
||||||
* Install the web_enterprise module
|
|
||||||
|
|
||||||
* Restart your server
|
|
||||||
|
|
||||||
* Enter your Odoo Enterprise Subscription code
|
|
||||||
|
|
||||||
.. image:: enterprise/enterprise_code.png
|
|
||||||
:class: img-fluid
|
|
||||||
|
|
||||||
On Linux, using an installer
|
|
||||||
============================
|
|
||||||
|
|
||||||
* Backup your community database
|
|
||||||
|
|
||||||
* Stop the odoo service
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
$ sudo service odoo stop
|
|
||||||
|
|
||||||
* Install the enterprise .deb (it should install over the community package)
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
$ sudo dpkg -i <path_to_enterprise_deb>
|
|
||||||
|
|
||||||
* Update your database to the enterprise packages using
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
$ python3 /usr/bin/odoo-bin -d <database_name> -i web_enterprise --stop-after-init
|
|
||||||
|
|
||||||
* You should be able to connect to your Odoo Enterprise instance using your usual mean of identification.
|
|
||||||
You can then link your database with your Odoo Enterprise Subscription by entering the code you received
|
|
||||||
by e-mail in the form input
|
|
||||||
|
|
||||||
|
|
||||||
On Linux, using the source code
|
|
||||||
===============================
|
|
||||||
|
|
||||||
There are many ways to launch your server when using sources, and you probably
|
|
||||||
have your own favourite. You may need to adapt sections to your usual workflow.
|
|
||||||
|
|
||||||
* Shutdown your server
|
|
||||||
* Backup your community database
|
|
||||||
* Update the ``--addons-path`` parameter of your launch command (see :doc:`../install/source`)
|
|
||||||
* Install the web_enterprise module by using
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
$ -d <database_name> -i web_enterprise --stop-after-init
|
|
||||||
|
|
||||||
Depending on the size of your database, this may take some time.
|
|
||||||
|
|
||||||
* Restart your server with the updated addons path of point 3.
|
|
||||||
You should be able to connect to your instance. You can then link your database with your
|
|
||||||
Odoo Enterprise Subscription by entering the code you received by e-mail in the form input
|
|
||||||
|
|
||||||
On Windows
|
|
||||||
==========
|
|
||||||
|
|
||||||
* Backup your community database
|
|
||||||
|
|
||||||
* Uninstall Odoo Community (using the Uninstall executable in the installation folder) -
|
|
||||||
PostgreSQL will remain installed
|
|
||||||
|
|
||||||
.. image:: enterprise/windows_uninstall.png
|
|
||||||
:class: img-fluid
|
|
||||||
|
|
||||||
* Launch the Odoo Enterprise Installer and follow the steps normally. When choosing
|
|
||||||
the installation path, you can set the folder of the Community installation
|
|
||||||
(this folder still contains the PostgreSQL installation).
|
|
||||||
Uncheck ``Start Odoo`` at the end of the installation
|
|
||||||
|
|
||||||
.. image:: enterprise/windows_setup.png
|
|
||||||
:class: img-fluid
|
|
||||||
|
|
||||||
* Using a command window, update your Odoo Database using this command (from the Odoo
|
|
||||||
installation path, in the server subfolder)
|
|
||||||
|
|
||||||
.. code-block:: console
|
|
||||||
|
|
||||||
$ ..\python\python.exe odoo-bin -d <database_name> -i web_enterprise --stop-after-init
|
|
||||||
|
|
||||||
* No need to manually launch the server, the service is running.
|
|
||||||
You should be able to connect to your Odoo Enterprise instance using your usual
|
|
||||||
mean of identification. You can then link your database with your Odoo Enterprise
|
|
||||||
Subscription by entering the code you received by e-mail in the form input
|
|
@ -1,111 +0,0 @@
|
|||||||
=======================
|
|
||||||
Change hosting solution
|
|
||||||
=======================
|
|
||||||
|
|
||||||
The instructions to change the hosting type of a database depend on the current solution used and to
|
|
||||||
which solution the database should be moved.
|
|
||||||
|
|
||||||
Transferring an on-premise database
|
|
||||||
===================================
|
|
||||||
|
|
||||||
To Odoo Online
|
|
||||||
--------------
|
|
||||||
|
|
||||||
.. important::
|
|
||||||
- Odoo Online is *not* compatible with **non-standard apps**.
|
|
||||||
- The database's current version must be :doc:`supported <supported_versions>`.
|
|
||||||
|
|
||||||
#. Create a :ref:`duplicate <duplicate_premise>` of the database.
|
|
||||||
#. In this duplicate, uninstall all **non-standard apps**.
|
|
||||||
#. Use the database manager to grab a *dump with filestore*.
|
|
||||||
#. `Submit a support ticket <https://www.odoo.com/help>`_ including the following:
|
|
||||||
|
|
||||||
- your **subscription number**,
|
|
||||||
- the **URL** you want to use for the database (e.g., `company.odoo.com`), and
|
|
||||||
- the **dump** as an attachment or as a link to the file (required for 60 MB+ files).
|
|
||||||
|
|
||||||
#. Odoo then makes sure the database is compatible before putting it online. In case of technical
|
|
||||||
issues during the process, Odoo might contact you.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
If you have time constraints, `submit a support ticket <https://www.odoo.com/help>`_ as soon as
|
|
||||||
possible to schedule the transfer.
|
|
||||||
|
|
||||||
To Odoo.sh
|
|
||||||
----------
|
|
||||||
|
|
||||||
Follow the instructions found in :ref:`the Import your database section
|
|
||||||
<odoo_sh_import_your_database>` of the Odoo.sh *Create your project* documentation.
|
|
||||||
|
|
||||||
Transferring an Odoo Online database
|
|
||||||
====================================
|
|
||||||
|
|
||||||
.. important::
|
|
||||||
Odoo Online's :ref:`intermediary versions <supported_versions>` cannot be hosted on-premise as
|
|
||||||
that type of hosting does not support those versions. Therefore, if the database to transfer
|
|
||||||
is running an intermediary version, it must be upgraded first to the next :ref:`major version
|
|
||||||
<supported_versions>`, waiting for its release if necessary.
|
|
||||||
|
|
||||||
.. example::
|
|
||||||
Transferring an online database running on Odoo 16.3 would require first upgrading it to Odoo
|
|
||||||
17.0.
|
|
||||||
|
|
||||||
.. tip::
|
|
||||||
Click the gear icon (:guilabel:`⚙`) next to the database name on the `Odoo Online database
|
|
||||||
manager <https://www.odoo.com/my/databases/>`_ to display its version number.
|
|
||||||
|
|
||||||
To on-premise
|
|
||||||
-------------
|
|
||||||
|
|
||||||
#. Sign in to `the Odoo Online database manager <https://www.odoo.com/my/databases/>`_ and click the
|
|
||||||
gear icon (:guilabel:`⚙`) next to the database name to :guilabel:`Download` a backup. If the
|
|
||||||
download fails due to the file being too large, `contact Odoo support
|
|
||||||
<https://www.odoo.com/help>`_.
|
|
||||||
#. Restore the database from the database manager on your local server using the backup.
|
|
||||||
|
|
||||||
To Odoo.sh
|
|
||||||
----------
|
|
||||||
|
|
||||||
#. Sign in to `the Odoo Online database manager <https://www.odoo.com/my/databases/>`_ and click the
|
|
||||||
gear icon (:guilabel:`⚙`) next to the database name to :guilabel:`Download` a backup. If the
|
|
||||||
download fails due to the file being too large, `contact Odoo support
|
|
||||||
<https://www.odoo.com/help>`_.
|
|
||||||
#. Follow the instructions found in :ref:`the Import your database section
|
|
||||||
<odoo_sh_import_your_database>` of the Odoo.sh *Create your project* documentation.
|
|
||||||
|
|
||||||
Transferring an Odoo.sh database
|
|
||||||
================================
|
|
||||||
|
|
||||||
To Odoo Online
|
|
||||||
--------------
|
|
||||||
|
|
||||||
.. important::
|
|
||||||
Odoo Online is *not* compatible with **non-standard apps**.
|
|
||||||
|
|
||||||
#. Uninstall all **non-standard apps** in a staging build before doing it in the production build.
|
|
||||||
#. `Create a support ticket <https://www.odoo.com/help>`_ including the following:
|
|
||||||
|
|
||||||
- your **subscription number**,
|
|
||||||
- the **URL** you want to use for the database (e.g., `company.odoo.com`),
|
|
||||||
- which **branch** should be migrated,
|
|
||||||
- in which **region** you want the database to be hosted (Americas, Europe, or Asia),
|
|
||||||
- which user(s) will be the **administrator(s)**, and
|
|
||||||
- **when** (and in which timezone) you want the database to be up and running.
|
|
||||||
|
|
||||||
#. Odoo then makes sure the database is compatible before putting it online. In case of technical
|
|
||||||
issues during the process, Odoo might contact you.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
- If you have time constraints, `submit a support ticket <https://www.odoo.com/help>`_ as soon as
|
|
||||||
possible to schedule the transfer.
|
|
||||||
- Select the **region** closest to most of your users to reduce latency.
|
|
||||||
- Future **administrator(s)** must have an Odoo.com account.
|
|
||||||
- The **date and time** you want the database to be up and running are helpful to organize the
|
|
||||||
switch from the Odoo.sh server to the Odoo Online servers.
|
|
||||||
- Databases are **not reachable** during their migration.
|
|
||||||
|
|
||||||
To on-premise
|
|
||||||
-------------
|
|
||||||
|
|
||||||
#. Download a :ref:`backup of your Odoo.sh production database <odoo_sh_branches_backups>`.
|
|
||||||
#. Restore the database from the database manager on your local server using the backup.
|
|
@ -1,134 +0,0 @@
|
|||||||
===============================
|
|
||||||
Odoo Online database management
|
|
||||||
===============================
|
|
||||||
|
|
||||||
To manage a database, go to the `database manager <https://www.odoo.com/my/databases>`_ and sign in
|
|
||||||
as the database administrator.
|
|
||||||
|
|
||||||
All the main database management options are available by clicking the database name, except the
|
|
||||||
upgrade option, which can be accessed by clicking the **arrow in a circle** icon next to the
|
|
||||||
database name. It is only displayed if an upgrade is available.
|
|
||||||
|
|
||||||
.. image:: odoo_online/database-manager.png
|
|
||||||
:alt: Accessing the database management options
|
|
||||||
|
|
||||||
- :ref:`odoo_online/upgrade`
|
|
||||||
- :ref:`odoo_online/duplicate`
|
|
||||||
- :ref:`odoo_online/rename`
|
|
||||||
- :ref:`odoo_online/download`
|
|
||||||
- :ref:`odoo_online/domains`
|
|
||||||
- :ref:`odoo_online/tags`
|
|
||||||
- :ref:`odoo_online/delete`
|
|
||||||
- :ref:`odoo_online/contact-support`
|
|
||||||
- :ref:`odoo_online/users`
|
|
||||||
|
|
||||||
.. _odoo_online/upgrade:
|
|
||||||
|
|
||||||
Upgrade
|
|
||||||
=======
|
|
||||||
|
|
||||||
Trigger a database upgrade.
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
For more information about the upgrade process, check out the :doc:`Odoo Online upgrade
|
|
||||||
documentation <../upgrade/odoo_online>`.
|
|
||||||
|
|
||||||
.. _odoo_online/duplicate:
|
|
||||||
|
|
||||||
Duplicate
|
|
||||||
=========
|
|
||||||
|
|
||||||
Create an exact copy of the database, which can be used to perform testing without compromising
|
|
||||||
daily operations.
|
|
||||||
|
|
||||||
.. important::
|
|
||||||
- By checking :guilabel:`For testing purposes`, all external actions (emails, payments, delivery
|
|
||||||
orders, etc.) are disabled by default on the duplicated database.
|
|
||||||
- Duplicated databases expire automatically after 15 days.
|
|
||||||
|
|
||||||
.. _odoo_online/rename:
|
|
||||||
|
|
||||||
Rename
|
|
||||||
======
|
|
||||||
|
|
||||||
Rename the database and its URL.
|
|
||||||
|
|
||||||
.. _odoo_online/download:
|
|
||||||
|
|
||||||
Download
|
|
||||||
========
|
|
||||||
|
|
||||||
Download a ZIP file containing a backup of the database.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
Databases are backed up daily as per the `Odoo Cloud Hosting SLA
|
|
||||||
<https://www.odoo.com/cloud-sla>`_.
|
|
||||||
|
|
||||||
.. _odoo_online/domains:
|
|
||||||
|
|
||||||
Domain names
|
|
||||||
============
|
|
||||||
|
|
||||||
Use a custom :doc:`domain name <domain_names>` to access the database via another URL.
|
|
||||||
|
|
||||||
.. tip::
|
|
||||||
You can :ref:`register a domain name for free <domain-name/odoo-register>`.
|
|
||||||
|
|
||||||
.. _odoo_online/tags:
|
|
||||||
|
|
||||||
Tags
|
|
||||||
====
|
|
||||||
|
|
||||||
Add tags to easily identify and sort your databases.
|
|
||||||
|
|
||||||
.. tip::
|
|
||||||
You can search for tags in the search bar.
|
|
||||||
|
|
||||||
.. _odoo_online/delete:
|
|
||||||
|
|
||||||
Delete
|
|
||||||
======
|
|
||||||
|
|
||||||
Delete a database instantly.
|
|
||||||
|
|
||||||
.. danger::
|
|
||||||
Deleting a database means that all data is permanently lost. The deletion is instant and applies
|
|
||||||
to all users. It is recommended to create a backup of the database before deleting it.
|
|
||||||
|
|
||||||
Carefully read the warning message and only proceed if the implications of deleting a database are
|
|
||||||
fully understood.
|
|
||||||
|
|
||||||
.. image:: odoo_online/delete.png
|
|
||||||
:alt: The warning message displayed before deleting a database
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
- Only an administrator can delete a database.
|
|
||||||
- The database name is immediately made available to anyone.
|
|
||||||
- Deleting a database if it has expired or is linked to a subscription is impossible. In that
|
|
||||||
case, contact `Odoo Support <https://www.odoo.com/help>`_.
|
|
||||||
|
|
||||||
.. _odoo_online/contact-support:
|
|
||||||
|
|
||||||
Contact us
|
|
||||||
==========
|
|
||||||
|
|
||||||
Access the `Odoo.com support page <https://www.odoo.com/help>`_ with the database's details already
|
|
||||||
pre-filled.
|
|
||||||
|
|
||||||
.. _odoo_online/users:
|
|
||||||
|
|
||||||
Invite / remove users
|
|
||||||
=====================
|
|
||||||
|
|
||||||
To invite users, fill out the new user's email address and click :guilabel:`Invite`. To add multiple
|
|
||||||
users, click :guilabel:`Add more users`.
|
|
||||||
|
|
||||||
.. image:: odoo_online/invite-users.png
|
|
||||||
:alt: Inviting a user on a database
|
|
||||||
|
|
||||||
To remove users, select them and click :guilabel:`Remove`.
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
- :doc:`../../applications/general/users/manage_users`
|
|
||||||
- :doc:`../../applications/general/users/delete_account`
|
|
||||||
|
|
@ -1,168 +0,0 @@
|
|||||||
==============================
|
|
||||||
On-premise database management
|
|
||||||
==============================
|
|
||||||
|
|
||||||
Register a database
|
|
||||||
===================
|
|
||||||
|
|
||||||
To register your database, you just need to enter your Subscription Code in the
|
|
||||||
banner in the App Switcher. Make sure you do not add extra spaces before or after
|
|
||||||
your subscription code. If the registration is successful, it will turn green and
|
|
||||||
will provide you with the Expiration Date of your freshly-registered database. You
|
|
||||||
can check this Expiration Date in the About menu (Odoo 9) or in the Settings Dashboard
|
|
||||||
(Odoo 10).
|
|
||||||
|
|
||||||
Registration Error Message
|
|
||||||
--------------------------
|
|
||||||
|
|
||||||
If you are unable to register your database, you will likely encounter this
|
|
||||||
message:
|
|
||||||
|
|
||||||
.. image:: on_premise/error_message_sub_code.png
|
|
||||||
:align: center
|
|
||||||
:alt: Something went wrong while registering your database, you can try again or contact Odoo
|
|
||||||
Help
|
|
||||||
|
|
||||||
Solutions
|
|
||||||
~~~~~~~~~
|
|
||||||
|
|
||||||
* Do you have a valid Enterprise subscription?
|
|
||||||
|
|
||||||
* Check if your subscription details get the tag "In Progress" on
|
|
||||||
your `Odoo Account
|
|
||||||
<https://accounts.odoo.com/my/subscription>`__ or with your Account Manager
|
|
||||||
|
|
||||||
* Have you already linked a database with your subscription reference?
|
|
||||||
|
|
||||||
* You can link only one database per subscription.
|
|
||||||
(Need a test or a development database? `Find a partner
|
|
||||||
<https://www.odoo.com/partners>`__)
|
|
||||||
|
|
||||||
* You can unlink the old database yourself on your `Odoo Contract
|
|
||||||
<https://accounts.odoo.com/my/subscription>`__ with the button "Unlink database"
|
|
||||||
|
|
||||||
.. image:: on_premise/unlink_single_db.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
A confirmation message will appear; make sure this is the correct database as
|
|
||||||
it will be deactivated shortly:
|
|
||||||
|
|
||||||
.. image:: on_premise/unlink_confirm_enterprise_edition.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
* Do you have the updated version of Odoo 9?
|
|
||||||
|
|
||||||
* From July 2016 onward, Odoo 9 now automatically change the uuid of a
|
|
||||||
duplicated database; a manual operation is no longer required.
|
|
||||||
|
|
||||||
* If it's not the case, you may have multiple databases sharing the same
|
|
||||||
UUID. Please check on your `Odoo Contract
|
|
||||||
<https://accounts.odoo.com/my/subscription>`__, a short message will appear
|
|
||||||
specifying which database is problematic:
|
|
||||||
|
|
||||||
.. image:: on_premise/unlink_db_name_collision.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
In this case, you need to change the UUID on your test databases to solve this
|
|
||||||
issue. You will find more information about this in :ref:`this section <duplicate_premise>`.
|
|
||||||
|
|
||||||
For your information, we identify database with UUID. Therefore, each database
|
|
||||||
should have a distinct UUID to ensure that registration and invoicing proceed
|
|
||||||
effortlessly for your and for us.
|
|
||||||
|
|
||||||
* Check your network and firewall settings
|
|
||||||
|
|
||||||
* The Update notification must be able to reach Odoo's subscription
|
|
||||||
validation servers. In other words, make sure that the Odoo server is able
|
|
||||||
to open outgoing connections towards:
|
|
||||||
|
|
||||||
* services.odoo.com on port 443 (or 80)
|
|
||||||
* services.openerp.com on port 443 (or 80) for older deployments
|
|
||||||
|
|
||||||
* Once you activated your database, you must keep these ports open, as the
|
|
||||||
Update notification runs once a week.
|
|
||||||
|
|
||||||
Error message due to too many users
|
|
||||||
-----------------------------------
|
|
||||||
|
|
||||||
If you have more users in your local database than provisionned in your
|
|
||||||
Odoo Enterprise subscription, you may encounter this message:
|
|
||||||
|
|
||||||
.. image:: on_premise/add_more_users.png
|
|
||||||
:align: center
|
|
||||||
:alt: This database will expire in X days, you have more users than your subscription allows
|
|
||||||
|
|
||||||
|
|
||||||
When the message appears you have 30 days before the expiration.
|
|
||||||
The countdown is updated everyday.
|
|
||||||
|
|
||||||
Solutions
|
|
||||||
~~~~~~~~~
|
|
||||||
|
|
||||||
- **Add more users** on your subscription: follow the link and Validate
|
|
||||||
the upsell quotation and pay for the extra users.
|
|
||||||
- **Deactivate users** as explained in this `documentation <documentation.html#deactivating-users>`_
|
|
||||||
and **Reject** the upsell quotation.
|
|
||||||
|
|
||||||
Once your database has the correct number of users, the expiration message
|
|
||||||
will disappear automatically after a few days, when the next verification occurs.
|
|
||||||
We understand that it can be a bit frightening to see the countdown,
|
|
||||||
so you can :ref:`force an Update Notification <force_ping>` to make the message disappear
|
|
||||||
right away.
|
|
||||||
|
|
||||||
Database expired error message
|
|
||||||
------------------------------
|
|
||||||
|
|
||||||
If your database reaches its expiration date before your renew your subscription,
|
|
||||||
you will encounter this message:
|
|
||||||
|
|
||||||
.. image:: on_premise/database_expired.png
|
|
||||||
:align: center
|
|
||||||
:alt: This database has expired.
|
|
||||||
|
|
||||||
This **blocking** message appears after a non-blocking message that lasts 30 days.
|
|
||||||
If you fail to take action before the end of the countdown, the database is expired.
|
|
||||||
|
|
||||||
Solutions
|
|
||||||
~~~~~~~~~
|
|
||||||
|
|
||||||
* Renew your subscription: follow the link and renew your subscription - note that
|
|
||||||
if you wish to pay by Wire Transfer, your subscription will effectively be renewed
|
|
||||||
only when the payment arrives, which can take a few days. Credit card payments are
|
|
||||||
processed immediately.
|
|
||||||
* Contact our `Support <https://www.odoo.com/help>`__
|
|
||||||
|
|
||||||
None of those solutions worked for you? Please contact our
|
|
||||||
`Support <https://www.odoo.com/help>`__
|
|
||||||
|
|
||||||
.. _force_ping:
|
|
||||||
|
|
||||||
.. _duplicate_premise:
|
|
||||||
|
|
||||||
Duplicate a database
|
|
||||||
====================
|
|
||||||
|
|
||||||
You can duplicate your database by accessing the database manager on your
|
|
||||||
server (<odoo-server>/web/database/manager). In this page, you can easily
|
|
||||||
duplicate your database (among other things).
|
|
||||||
|
|
||||||
.. image:: on_premise/db_manager.gif
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
When you duplicate a local database, it is **strongly** advised to change
|
|
||||||
the duplicated database's uuid (Unniversally Unique Identifier), since this
|
|
||||||
uuid is how your database identifies itself with our servers. Having two
|
|
||||||
databases with the same uuid could result in invoicing problems or registration
|
|
||||||
problems down the line.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
From July 2016 onward, Odoo 9 now automatically change the uuid of a duplicated database; a
|
|
||||||
manual operation is no longer required.
|
|
||||||
|
|
||||||
The database uuid is currently accessible from the menu :menuselection:`Settings --> Technical -->
|
|
||||||
System Parameters`, we advise you to use a `uuid generator <https://www.uuidtools.com>`_ or to
|
|
||||||
use the unix command ``uuidgen`` to generate a new uuid. You can then simply replace it like any
|
|
||||||
other record by clicking on it and using the edit button.
|
|
||||||
|
|
||||||
.. image:: on_premise/db_uuid.png
|
|
||||||
:align: center
|
|
Before Width: | Height: | Size: 9.5 KiB |
Before Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 14 KiB |
@ -1,124 +0,0 @@
|
|||||||
|
|
||||||
.. _supported_versions:
|
|
||||||
|
|
||||||
==================
|
|
||||||
Supported versions
|
|
||||||
==================
|
|
||||||
|
|
||||||
Odoo provides support and bug fixing **for the 3 last major versions** of Odoo.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
Odoo releases intermediary versions called **Online versions** on the :doc:`Odoo Online
|
|
||||||
<odoo_online>` hosting every two months. Odoo Online users can then benefit from the latest
|
|
||||||
features of Odoo.
|
|
||||||
|
|
||||||
- Admins of Odoo Online databases are invited to :doc:`upgrade <../upgrade>` them regularly.
|
|
||||||
- Online versions are *not* released for Odoo.sh and On-Premise installations.
|
|
||||||
- Online versions are listed below as *SaaS*.
|
|
||||||
|
|
||||||
What's the support status of my Odoo?
|
|
||||||
=====================================
|
|
||||||
|
|
||||||
This matrix shows the support status of every version.
|
|
||||||
|
|
||||||
**Major releases are in bold type.**
|
|
||||||
|
|
||||||
.. list-table::
|
|
||||||
:header-rows: 1
|
|
||||||
:widths: auto
|
|
||||||
|
|
||||||
* -
|
|
||||||
- Odoo Online
|
|
||||||
- Odoo.sh
|
|
||||||
- On-Premise
|
|
||||||
- Release date
|
|
||||||
- End of support
|
|
||||||
* - Odoo saas~16.4
|
|
||||||
- |green|
|
|
||||||
- N/A
|
|
||||||
- N/A
|
|
||||||
- August 2023
|
|
||||||
-
|
|
||||||
* - Odoo saas~16.3
|
|
||||||
- |red|
|
|
||||||
- N/A
|
|
||||||
- N/A
|
|
||||||
- June 2023
|
|
||||||
-
|
|
||||||
* - Odoo saas~16.2
|
|
||||||
- |red|
|
|
||||||
- N/A
|
|
||||||
- N/A
|
|
||||||
- March 2023
|
|
||||||
-
|
|
||||||
* - Odoo saas~16.1
|
|
||||||
- |red|
|
|
||||||
- N/A
|
|
||||||
- N/A
|
|
||||||
- February 2023
|
|
||||||
-
|
|
||||||
* - **Odoo 16.0**
|
|
||||||
- |green|
|
|
||||||
- |green|
|
|
||||||
- |green|
|
|
||||||
- October 2022
|
|
||||||
- October 2025 (planned)
|
|
||||||
* - Odoo saas~15.2
|
|
||||||
- |red|
|
|
||||||
- N/A
|
|
||||||
- N/A
|
|
||||||
- March 2022
|
|
||||||
- January 2023
|
|
||||||
* - Odoo saas~15.1
|
|
||||||
- |red|
|
|
||||||
- N/A
|
|
||||||
- N/A
|
|
||||||
- February 2022
|
|
||||||
- July 2022
|
|
||||||
* - **Odoo 15.0**
|
|
||||||
- |green|
|
|
||||||
- |green|
|
|
||||||
- |green|
|
|
||||||
- October 2021
|
|
||||||
- October 2024 (planned)
|
|
||||||
* - **Odoo 14.0**
|
|
||||||
- |green|
|
|
||||||
- |green|
|
|
||||||
- |green|
|
|
||||||
- October 2020
|
|
||||||
- November 2023 (planned)
|
|
||||||
* - **Odoo 13.0**
|
|
||||||
- |red|
|
|
||||||
- |red|
|
|
||||||
- |red|
|
|
||||||
- October 2019
|
|
||||||
- October 2022
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
|
|
||||||
|green| Supported version
|
|
||||||
|
|
||||||
|red| End-of-support
|
|
||||||
|
|
||||||
N/A Never released for this platform
|
|
||||||
|
|
||||||
🏁 Future version, not released yet
|
|
||||||
|
|
||||||
.. |green| raw:: html
|
|
||||||
|
|
||||||
<span class="text-success" style="font-size: 32px; line-height: 0.5">●</span>
|
|
||||||
|
|
||||||
.. |red| raw:: html
|
|
||||||
|
|
||||||
<span class="text-danger" style="font-size: 32px; line-height: 0.5">●</span>
|
|
||||||
|
|
||||||
I run an older version of Odoo/OpenERP/TinyERP
|
|
||||||
==============================================
|
|
||||||
|
|
||||||
Odoo 12.0, 11.0, 10.0, 9.0, and 8.0 are not supported anymore, on any platform.
|
|
||||||
|
|
||||||
OpenERP 7.0, 6.1, 6.0 and 5.0 are not supported anymore, on any platform.
|
|
||||||
|
|
||||||
TinyERP 4.0, 3.0, 2.0 and 1.0 are not supported anymore, on any platform.
|
|
||||||
|
|
||||||
Even though we don't support older versions, you can always `upgrade from any version <https://upgrade.odoo.com/>`_.
|
|
67
content/administration/mobile.rst
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
================
|
||||||
|
Odoo mobile apps
|
||||||
|
================
|
||||||
|
|
||||||
|
Two kind of Odoo mobile app exist: the progressive web app (PWA) and store apps. Using the PWA is
|
||||||
|
recommended.
|
||||||
|
|
||||||
|
Progressive web app (PWA)
|
||||||
|
=========================
|
||||||
|
|
||||||
|
PWAs are web-based applications designed to function across different devices and platforms,
|
||||||
|
leveraging web browsers to deliver user experiences similar to native apps.
|
||||||
|
|
||||||
|
The Odoo PWA features include:
|
||||||
|
|
||||||
|
- Quick access by adding the PWA to a device's home screen
|
||||||
|
- Seamless and borderless navigation experience
|
||||||
|
- Push notifications
|
||||||
|
- SSO authentication
|
||||||
|
|
||||||
|
To install the Odoo PWA, launch a browser supporting PWAs, and sign in to an Odoo database. The
|
||||||
|
instructions to install a PWA depend on the platform and browser used.
|
||||||
|
|
||||||
|
.. tabs::
|
||||||
|
|
||||||
|
.. tab:: Android
|
||||||
|
|
||||||
|
**Chrome**: open Chrome's menu (:guilabel:`⋮`), select :guilabel:`Install app`, and tap
|
||||||
|
:guilabel:`Install`.
|
||||||
|
|
||||||
|
**Firefox**: open Firefox's menu (:guilabel:`⋮`), select :guilabel:`Install`, and either touch
|
||||||
|
and hold the Odoo icon or tap :guilabel:`Add automatically`.
|
||||||
|
|
||||||
|
The PWA can also be installed with **Samsung Internet**, **Edge**, and **Opera**.
|
||||||
|
|
||||||
|
.. tab:: iOS
|
||||||
|
|
||||||
|
**Safari**: open the **Share** menu by tapping the square with an arrow pointing upwards icon,
|
||||||
|
select :guilabel:`Add to Home Screen`, edit the PWA details if desired, and tap
|
||||||
|
:guilabel:`Add`.
|
||||||
|
|
||||||
|
On iOS 16.4 and above, the PWA can also be installed with **Chrome**, **Firefox**, and
|
||||||
|
**Edge**.
|
||||||
|
|
||||||
|
.. tab:: Desktop
|
||||||
|
|
||||||
|
**Chrome** and **Edge**: click the installation icon at the right of the address bar and click
|
||||||
|
:guilabel:`Install`.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
- `Google Chrome Help: Use progressive web apps
|
||||||
|
<https://support.google.com/chrome/answer/9658361>`_
|
||||||
|
- `MDN Web Docs: Installing and uninstalling web apps
|
||||||
|
<https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Guides/Installing>`_
|
||||||
|
- `Microsoft Support: Install, manage, or uninstall apps in Microsoft Edge <https://support.microsoft.com/en-us/topic/install-manage-or-uninstall-apps-in-microsoft-edge-0c156575-a94a-45e4-a54f-3a84846f6113>`_
|
||||||
|
|
||||||
|
Store apps
|
||||||
|
==========
|
||||||
|
|
||||||
|
The Odoo mobile apps are available for download on the `Google Play Store
|
||||||
|
<https://play.google.com/store/apps/details?id=com.odoo.mobile>`_ and `Apple App Store
|
||||||
|
<https://apps.apple.com/app/odoo/id1272543640>`_.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
The iOS app cannot be updated and will be deprecated at some point in the future.
|
||||||
|
|
||||||
|
While the store apps support multi-accounts, they are not compatible with SS0 authentication.
|
36
content/administration/neutralized_database.rst
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
====================
|
||||||
|
Neutralized database
|
||||||
|
====================
|
||||||
|
|
||||||
|
A neutralized database is a non-production database on which several parameters are deactivated.
|
||||||
|
This enables one to carry out tests without the risk of launching specific automated processes that
|
||||||
|
could impact production data (e.g., sending emails to customers). Live access is removed and
|
||||||
|
turned into a testing environment.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
**Any testing database created is a neutralized database:**
|
||||||
|
|
||||||
|
- testing backup databases
|
||||||
|
- duplicate databases
|
||||||
|
- for Odoo.sh: staging and development databases
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
A database can also be neutralized when upgrading, as it is vital to do some tests before
|
||||||
|
switching to a new version.
|
||||||
|
|
||||||
|
Deactivated features
|
||||||
|
====================
|
||||||
|
|
||||||
|
Here is a non-exhaustive list of the deactivated features:
|
||||||
|
|
||||||
|
- all planned actions (e.g., automatic invoicing of subscriptions, mass mailing, etc.)
|
||||||
|
- outgoing emails
|
||||||
|
- bank synchronization
|
||||||
|
- payment providers
|
||||||
|
- delivery methods
|
||||||
|
- :abbr:`IAP (In-App Purchase)` tokens
|
||||||
|
- website visibility (prevent search engines from indexing your site)
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
**A red banner at the top of the screen is displayed on the neutralized database so that it can
|
||||||
|
be seen immediately.**
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
80
content/administration/odoo_accounts.rst
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
=================
|
||||||
|
Odoo.com accounts
|
||||||
|
=================
|
||||||
|
|
||||||
|
This documentation is dedicated to edits made to an Odoo.com account. The following processes
|
||||||
|
describe how to delete an Odoo.com account, and how to change the password on an Odoo.com account.
|
||||||
|
|
||||||
|
Delete Odoo.com account
|
||||||
|
=======================
|
||||||
|
|
||||||
|
To delete an Odoo.com account, start by clicking the profile icon in the upper-right corner
|
||||||
|
(represented by the username and icon) to reveal a drop-down menu. From the drop-down menu, select
|
||||||
|
:guilabel:`My Odoo.com account`, which reveals the user portal.
|
||||||
|
|
||||||
|
From the user portal, the delete option can be accessed by going to :menuselection:`My Account -->
|
||||||
|
Edit Security Settings --> Delete Account`. It can also be accessed by going to
|
||||||
|
`https://www.odoo.com/my/home <https://www.odoo.com/my/home>`_.
|
||||||
|
|
||||||
|
.. danger::
|
||||||
|
Deleting an Odoo account is irreversible. Be careful performing this action, as the Odoo.com
|
||||||
|
account is **not** retrievable once deleted.
|
||||||
|
|
||||||
|
Upon clicking the :guilabel:`Delete Account` button, a pop-up window appears, requesting
|
||||||
|
confirmation for the account deletion.
|
||||||
|
|
||||||
|
.. image:: odoo_account/delete-account.png
|
||||||
|
:align: center
|
||||||
|
:alt: Clicking on the Delete Account button will populate a window verifying the change.
|
||||||
|
|
||||||
|
To confirm the deletion, enter the :guilabel:`Password` and the :guilabel:`Login` for the account
|
||||||
|
being deleted. Then, click the :guilabel:`Delete Account` button to confirm the deletion.
|
||||||
|
|
||||||
|
.. _odoocom/change_password:
|
||||||
|
|
||||||
|
Odoo.com account password change
|
||||||
|
================================
|
||||||
|
|
||||||
|
To change an Odoo.com account password, first login into the Odoo.com user account from the Odoo.com
|
||||||
|
login page. After logging-in, go to the upper-right corner of the screen, and click the :guilabel:`▼
|
||||||
|
(down arrow)` icon next to the profile icon. Then, select :guilabel:`My Account`, and a portal
|
||||||
|
dashboard appears.
|
||||||
|
|
||||||
|
To change the Odoo.com password, click on the :guilabel:`Edit Security Settings` link, below the
|
||||||
|
:menuselection:`Account Security` section. Next, make the necessary changes by typing in the current
|
||||||
|
:guilabel:`Password`, :guilabel:`New Password`, and verify the new password. Lastly, click on
|
||||||
|
:guilabel:`Change Password` to complete the password change.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If a customer would like to change the login, contact Odoo support `here
|
||||||
|
<https://www.odoo.com/help>`_.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Passwords for Odoo.com users and portal users remain separate, even if the same email address is
|
||||||
|
used.
|
||||||
|
|
||||||
|
Add two-factor authentication
|
||||||
|
=============================
|
||||||
|
|
||||||
|
To add two-factor authentication, login into the Odoo.com user account from the Odoo.com login page.
|
||||||
|
After logging-in, go to the upper-right corner of the screen, and click the :guilabel:`▼ (down
|
||||||
|
arrow)` icon next to the :guilabel:`profile icon`. Then, select :guilabel:`My Account`, and a portal
|
||||||
|
dashboard appears.
|
||||||
|
|
||||||
|
If the user would like to turn on two-factor authentication (2FA) for Odoo.com access, click on the
|
||||||
|
:guilabel:`Edit Security Settings` link below the :menuselection:`Account Security` section.
|
||||||
|
|
||||||
|
Click on :guilabel:`Enable two-factor authentication` to turn on :abbr:`2FA (two-factor
|
||||||
|
authentication)`. Then, confirm the current password in the :guilabel:`Password` field. Next, click
|
||||||
|
on :guilabel:`Confirm Password`. Following that, activate :abbr:`2FA (two-factor authentication)` in
|
||||||
|
a :abbr:`2FA (two-factor authentication)` app (Google Authenticator, Authy, etc.), by scanning the
|
||||||
|
:guilabel:`QR code` or entering a :guilabel:`Verification Code`.
|
||||||
|
|
||||||
|
Finally, click on :guilabel:`Enable two-factor authentication` to complete the setup.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Under :guilabel:`My Account` Odoo.com users can also access the following:
|
||||||
|
|
||||||
|
- :guilabel:`My Partner dashboard`
|
||||||
|
- :guilabel:`My In-App Services`
|
||||||
|
- :guilabel:`My Apps Dashboard`
|
151
content/administration/odoo_online.rst
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
===========
|
||||||
|
Odoo Online
|
||||||
|
===========
|
||||||
|
|
||||||
|
`Odoo Online <https://www.odoo.com/trial>`_ provides private databases which are fully managed and
|
||||||
|
hosted by Odoo. It can be used for long-term production or to test Odoo thoroughly, including
|
||||||
|
customizations that don't require code.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Odoo Online is incompatible with custom modules or the Odoo App Store.
|
||||||
|
|
||||||
|
Odoo Online databases are accessed using any web browser and do not require a local installation.
|
||||||
|
|
||||||
|
To quickly try out Odoo, shared `demo <https://demo.odoo.com>`_ instances are available. No
|
||||||
|
registration is required, but each instance only lives for a few hours.
|
||||||
|
|
||||||
|
Database management
|
||||||
|
===================
|
||||||
|
|
||||||
|
To manage a database, go to the `database manager <https://www.odoo.com/my/databases>`_ and sign in
|
||||||
|
as the database administrator.
|
||||||
|
|
||||||
|
All the main database management options are available by clicking the database name, except the
|
||||||
|
upgrade option, which can be accessed by clicking the **arrow in a circle** icon next to the
|
||||||
|
database name. It is only displayed if an upgrade is available.
|
||||||
|
|
||||||
|
.. image:: odoo_online/database-manager.png
|
||||||
|
:alt: Accessing the database management options
|
||||||
|
|
||||||
|
- :ref:`odoo_online/upgrade`
|
||||||
|
- :ref:`odoo_online/duplicate`
|
||||||
|
- :ref:`odoo_online/rename`
|
||||||
|
- :ref:`odoo_online/download`
|
||||||
|
- :ref:`odoo_online/domains`
|
||||||
|
- :ref:`odoo_online/tags`
|
||||||
|
- :ref:`odoo_online/delete`
|
||||||
|
- :ref:`odoo_online/contact-support`
|
||||||
|
- :ref:`odoo_online/users`
|
||||||
|
|
||||||
|
.. _odoo_online/upgrade:
|
||||||
|
|
||||||
|
Upgrade
|
||||||
|
=======
|
||||||
|
|
||||||
|
Trigger a database upgrade.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
For more information about the upgrade process, check out the :ref:`Odoo Online upgrade
|
||||||
|
documentation <upgrade-request-test>`.
|
||||||
|
|
||||||
|
.. _odoo_online/duplicate:
|
||||||
|
|
||||||
|
Duplicate
|
||||||
|
=========
|
||||||
|
|
||||||
|
Create an exact copy of the database, which can be used to perform testing without compromising
|
||||||
|
daily operations.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
- By checking :guilabel:`For testing purposes`, all external actions (emails, payments, delivery
|
||||||
|
orders, etc.) are disabled by default on the duplicated database.
|
||||||
|
- Duplicated databases expire automatically after 15 days.
|
||||||
|
- A maximum of five duplicates can be made per database. Under extraordinary circumstances,
|
||||||
|
contact `support <https://www.odoo.com/help>`_ to raise the limit.
|
||||||
|
|
||||||
|
.. _odoo_online/rename:
|
||||||
|
|
||||||
|
Rename
|
||||||
|
======
|
||||||
|
|
||||||
|
Rename the database and its URL.
|
||||||
|
|
||||||
|
.. _odoo_online/download:
|
||||||
|
|
||||||
|
Download
|
||||||
|
========
|
||||||
|
|
||||||
|
Download a ZIP file containing a backup of the database.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Databases are backed up daily as per the `Odoo Cloud Hosting SLA
|
||||||
|
<https://www.odoo.com/cloud-sla>`_.
|
||||||
|
|
||||||
|
.. _odoo_online/domains:
|
||||||
|
|
||||||
|
Domain names
|
||||||
|
============
|
||||||
|
|
||||||
|
Use a custom :doc:`domain name </applications/websites/website/configuration/domain_names>` to
|
||||||
|
access the database via another URL.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
You can :ref:`register a domain name for free <domain-name/register>`.
|
||||||
|
|
||||||
|
.. _odoo_online/tags:
|
||||||
|
|
||||||
|
Tags
|
||||||
|
====
|
||||||
|
|
||||||
|
Add tags to easily identify and sort your databases.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
You can search for tags in the search bar.
|
||||||
|
|
||||||
|
.. _odoo_online/delete:
|
||||||
|
|
||||||
|
Delete
|
||||||
|
======
|
||||||
|
|
||||||
|
Delete a database instantly.
|
||||||
|
|
||||||
|
.. danger::
|
||||||
|
Deleting a database means that all data is permanently lost. The deletion is instant and applies
|
||||||
|
to all users. It is recommended to create a backup of the database before deleting it.
|
||||||
|
|
||||||
|
Carefully read the warning message and only proceed if the implications of deleting a database are
|
||||||
|
fully understood.
|
||||||
|
|
||||||
|
.. image:: odoo_online/delete.png
|
||||||
|
:alt: The warning message displayed before deleting a database
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
- Only an administrator can delete a database.
|
||||||
|
- The database name is immediately made available to anyone.
|
||||||
|
- Deleting a database if it has expired or is linked to a subscription is impossible. In that
|
||||||
|
case, contact `Odoo Support <https://www.odoo.com/help>`_.
|
||||||
|
|
||||||
|
.. _odoo_online/contact-support:
|
||||||
|
|
||||||
|
Contact us
|
||||||
|
==========
|
||||||
|
|
||||||
|
Access the `Odoo.com support page <https://www.odoo.com/help>`_ with the database's details already
|
||||||
|
pre-filled.
|
||||||
|
|
||||||
|
.. _odoo_online/users:
|
||||||
|
|
||||||
|
Invite / remove users
|
||||||
|
=====================
|
||||||
|
|
||||||
|
To invite users, fill out the new user's email address and click :guilabel:`Invite`. To add multiple
|
||||||
|
users, click :guilabel:`Add more users`.
|
||||||
|
|
||||||
|
.. image:: odoo_online/invite-users.png
|
||||||
|
:alt: Inviting a user on a database
|
||||||
|
|
||||||
|
To remove users, select them and click :guilabel:`Remove`.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
- :doc:`/applications/general/users`
|
||||||
|
- :doc:`odoo_accounts`
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 6.0 KiB |
@ -29,3 +29,32 @@ We advise that:
|
|||||||
- Your scheduled actions should be
|
- Your scheduled actions should be
|
||||||
`idempotent <https://stackoverflow.com/a/1077421/3332416>`_: they must not
|
`idempotent <https://stackoverflow.com/a/1077421/3332416>`_: they must not
|
||||||
cause side-effects if they are started more often than expected.
|
cause side-effects if they are started more often than expected.
|
||||||
|
|
||||||
|
.. _ip-address-change:
|
||||||
|
|
||||||
|
How can I automate tasks when an IP address change occurs?
|
||||||
|
----------------------------------------------------------
|
||||||
|
|
||||||
|
**Odoo.sh notifies project administrators of IP address changes.**
|
||||||
|
Additionally, when the IP address of a production instance changes, an HTTP `GET` request is made
|
||||||
|
to the path `/_odoo.sh/ip-change` with the new IP address included as a query string parameter
|
||||||
|
(`new`), along with the previous IP address as an additional parameter (`old`).
|
||||||
|
|
||||||
|
This mechanism allows custom actions to be applied in response to the IP address change
|
||||||
|
(e.g., sending an email, contacting a firewall API, configuring database objects, etc.)
|
||||||
|
|
||||||
|
For security reasons, the `/_odoo.sh/ip-change` route is accessible only internally by the platform
|
||||||
|
itself and returns a `403` response if accessed through any other means.
|
||||||
|
|
||||||
|
Here is a pseudo-implementation example:
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
class IPChangeController(http.Controller):
|
||||||
|
|
||||||
|
@http.route('/_odoo.sh/ip-change', auth='public')
|
||||||
|
def ip_change(self, old=None, new=None):
|
||||||
|
_logger.info("IP address changed from %s to %s", old, new)
|
||||||
|
# Then perform whatever action required for your use case, e.g., update an
|
||||||
|
# ir.config_parameter, send an email, contact an external firewall service's API, ...
|
||||||
|
return 'ok'
|
||||||
|
@ -295,7 +295,7 @@ Upgrade
|
|||||||
Available for production and staging branches for valid projects.
|
Available for production and staging branches for valid projects.
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
:doc:`Upgrade - Odoo.sh <../../upgrade/odoo_sh>`
|
:doc:`Upgrade documentation <../../upgrade>`
|
||||||
|
|
||||||
.. _odoosh-gettingstarted-branches-tabs-settings:
|
.. _odoosh-gettingstarted-branches-tabs-settings:
|
||||||
|
|
||||||
@ -402,9 +402,9 @@ we are considering the feature if there is enough demand.
|
|||||||
|
|
||||||
In case the domain of your users email addresses use SPF (Sender Policy Framework) or DKIM
|
In case the domain of your users email addresses use SPF (Sender Policy Framework) or DKIM
|
||||||
(DomainKeys Identified Mail), don't forget to authorize Odoo as a sending host in your domain name
|
(DomainKeys Identified Mail), don't forget to authorize Odoo as a sending host in your domain name
|
||||||
settings to increase the deliverability of your outgoing emails.
|
settings to increase the deliverability of your outgoing emails. The configuration steps are
|
||||||
The configuration steps are explained in the documentation about :ref:`SPF
|
explained in the documentation about :ref:`SPF <email-domain-spf>` and :ref:`DKIM
|
||||||
<email_communication/spf_compliant>` and :ref:`DKIM <email_communication/dkim_compliant>`.
|
<email-domain-dkim>`.
|
||||||
|
|
||||||
.. Warning::
|
.. Warning::
|
||||||
Forgetting to configure your SPF or DKIM to authorize Odoo as a sending host can lead to the
|
Forgetting to configure your SPF or DKIM to authorize Odoo as a sending host can lead to the
|
||||||
|
@ -91,7 +91,7 @@ Import your database
|
|||||||
====================
|
====================
|
||||||
|
|
||||||
You can import your database in your Odoo.sh project as long as it is in a :doc:`supported version
|
You can import your database in your Odoo.sh project as long as it is in a :doc:`supported version
|
||||||
</administration/maintain/supported_versions>` of Odoo.
|
</administration/supported_versions>` of Odoo.
|
||||||
|
|
||||||
Push your modules in production
|
Push your modules in production
|
||||||
-------------------------------
|
-------------------------------
|
||||||
@ -202,4 +202,4 @@ therefore removed, as you can only have one database linked per subscription.
|
|||||||
|
|
||||||
If you plan to make it your production, unlink your former database from the subscription, and
|
If you plan to make it your production, unlink your former database from the subscription, and
|
||||||
register the newly imported database. Read the :doc:`database registration documentation
|
register the newly imported database. Read the :doc:`database registration documentation
|
||||||
<../../maintain/on_premise>` for instructions.
|
<../../on_premise>` for instructions.
|
||||||
|
@ -85,7 +85,7 @@ From the Odoo.sh editor, in a terminal:
|
|||||||
|
|
||||||
$ odoo-bin scaffold my_module ~/src/user/
|
$ odoo-bin scaffold my_module ~/src/user/
|
||||||
|
|
||||||
Or, from your computer, if you have an :doc:`installation of Odoo <../../install/source>`:
|
Or, from your computer, if you have an :doc:`installation of Odoo <../../on_premise/source>`:
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
@ -146,7 +146,7 @@ Manually
|
|||||||
--------
|
--------
|
||||||
|
|
||||||
If you want to create your module structure manually,
|
If you want to create your module structure manually,
|
||||||
you can follow the :doc:`/developer/tutorials/getting_started` tutorial to understand
|
you can follow the :doc:`/developer/tutorials/server_framework_101` tutorial to understand
|
||||||
the structure of a module and the content of each file.
|
the structure of a module and the content of each file.
|
||||||
|
|
||||||
Push the development branch
|
Push the development branch
|
||||||
|
@ -33,17 +33,17 @@ Manage the Github users who can access your project.
|
|||||||
.. image:: settings/interface-settings-collaborators.png
|
.. image:: settings/interface-settings-collaborators.png
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
There are two levels of users:
|
There are three levels of users:
|
||||||
|
|
||||||
* Admin: has access to all features of Odoo.sh.
|
- :guilabel:`Admin`: has access to all features of an Odoo.sh project.
|
||||||
* User: does not have access to the project settings nor to the production and staging databases.
|
|
||||||
|
|
||||||
The user group is meant for developers who can make modifications in your code but are not allowed
|
- :guilabel:`Tester`: has access to the *Staging* and *Development* databases and their tooling.
|
||||||
to access the production data. Users of this group cannot connect to the production and staging
|
This role is for users conducting User Acceptance Tests. Testers can work with copies of
|
||||||
databases using the *1-click connect* feature, but they can of course use their regular account on
|
production data but cannot access the production database through the Odoo.sh tooling.
|
||||||
these databases if they have one, using their regular credentials.
|
|
||||||
|
|
||||||
In addition, they cannot use the webshell nor have access to the server logs.
|
- :guilabel:`Developer`: has access only to the *Development* databases and their tooling. This
|
||||||
|
role is for developers who propose code modifications but are not allowed to access production
|
||||||
|
and staging databases through the Odoo.sh tooling.
|
||||||
|
|
||||||
.. list-table::
|
.. list-table::
|
||||||
:header-rows: 1
|
:header-rows: 1
|
||||||
@ -51,83 +51,145 @@ In addition, they cannot use the webshell nor have access to the server logs.
|
|||||||
|
|
||||||
* -
|
* -
|
||||||
-
|
-
|
||||||
- User
|
- Developer
|
||||||
|
- Tester
|
||||||
- Admin
|
- Admin
|
||||||
* - Development
|
* - Development
|
||||||
- History
|
- History
|
||||||
- |green|
|
- |green|
|
||||||
- |green|
|
- |green|
|
||||||
|
- |green|
|
||||||
* -
|
* -
|
||||||
- 1-click connect
|
- 1-click connect
|
||||||
- |green|
|
- |green|
|
||||||
- |green|
|
- |green|
|
||||||
|
- |green|
|
||||||
* -
|
* -
|
||||||
- Logs
|
- Logs
|
||||||
- |green|
|
- |green|
|
||||||
- |green|
|
- |green|
|
||||||
|
- |green|
|
||||||
* -
|
* -
|
||||||
- Shell/SSH
|
- Shell/SSH
|
||||||
- |green|
|
- |green|
|
||||||
- |green|
|
- |green|
|
||||||
|
- |green|
|
||||||
* -
|
* -
|
||||||
- Mails
|
- Mails
|
||||||
- |green|
|
- |green|
|
||||||
- |green|
|
- |green|
|
||||||
* -
|
|
||||||
- Upgrade
|
|
||||||
- |green|
|
|
||||||
- |green|
|
- |green|
|
||||||
* -
|
* -
|
||||||
- Settings
|
- Settings
|
||||||
- |green|
|
- |green|
|
||||||
- |green|
|
- |green|
|
||||||
* - Production & Staging
|
- |green|
|
||||||
|
* - Staging
|
||||||
- History
|
- History
|
||||||
- |green|
|
- |green|
|
||||||
- |green|
|
- |green|
|
||||||
|
- |green|
|
||||||
* -
|
* -
|
||||||
- 1-click connect
|
- 1-click connect
|
||||||
-
|
-
|
||||||
- |green|
|
- |green|
|
||||||
|
- |green|
|
||||||
* -
|
* -
|
||||||
- Logs
|
- Logs
|
||||||
-
|
-
|
||||||
- |green|
|
- |green|
|
||||||
|
- |green|
|
||||||
* -
|
* -
|
||||||
- Shell/SSH
|
- Shell/SSH
|
||||||
-
|
-
|
||||||
- |green|
|
- |green|
|
||||||
|
- |green|
|
||||||
* -
|
* -
|
||||||
- Mails
|
- Mails
|
||||||
-
|
-
|
||||||
- |green|
|
- |green|
|
||||||
|
- |green|
|
||||||
* -
|
* -
|
||||||
- Monitoring
|
- Monitoring
|
||||||
-
|
-
|
||||||
- |green|
|
- |green|
|
||||||
|
- |green|
|
||||||
* -
|
* -
|
||||||
- Backups
|
- Backups
|
||||||
-
|
-
|
||||||
|
-
|
||||||
- |green|
|
- |green|
|
||||||
* -
|
* -
|
||||||
- Upgrade
|
- Upgrade
|
||||||
-
|
-
|
||||||
- |green|
|
- |green|
|
||||||
|
- |green|
|
||||||
* -
|
* -
|
||||||
- Settings
|
- Settings
|
||||||
- |green|\*
|
-
|
||||||
|
- |green|
|
||||||
|
- |green|
|
||||||
|
* - Production
|
||||||
|
- History
|
||||||
|
- |green|
|
||||||
|
- |green|
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- 1-click connect
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- Logs
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- Shell/SSH
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- Mails
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- Monitoring
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- Backups
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- Upgrade
|
||||||
|
-
|
||||||
|
-
|
||||||
|
- |green|
|
||||||
|
* -
|
||||||
|
- Settings
|
||||||
|
-
|
||||||
|
-
|
||||||
- |green|
|
- |green|
|
||||||
* - Status
|
* - Status
|
||||||
-
|
-
|
||||||
- |green|
|
- |green|
|
||||||
- |green|
|
- |green|
|
||||||
|
- |green|
|
||||||
* - Settings
|
* - Settings
|
||||||
|
-
|
||||||
-
|
-
|
||||||
-
|
-
|
||||||
- |green|
|
- |green|
|
||||||
|
|
||||||
.. note::
|
.. warning::
|
||||||
\* Only in staging branches
|
Those roles only apply to the usage of Odoo.sh. It is important to reflect the user roles
|
||||||
|
attribution within the repository on GitHub. Please refer to the GitHub documentation section on
|
||||||
|
`Managing a branch protection rule <https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/managing-a-branch-protection-rule>`_
|
||||||
|
for detailed guidance.
|
||||||
|
|
||||||
.. |green| raw:: html
|
.. |green| raw:: html
|
||||||
|
|
||||||
@ -149,15 +211,32 @@ Allow public access to your development builds.
|
|||||||
.. image:: settings/interface-settings-public.png
|
.. image:: settings/interface-settings-public.png
|
||||||
:align: center
|
:align: center
|
||||||
|
|
||||||
If activated, this option exposes the Builds page publicly, allowing visitors to connect to your
|
If activated, this option exposes the Builds page publicly, allowing visitors to view logs of development builds.
|
||||||
development builds.
|
|
||||||
|
|
||||||
In addition, visitors have access to the logs, shell and mails of your development builds.
|
|
||||||
|
|
||||||
Production and staging builds are excluded, visitors can only see their status.
|
Production and staging builds are excluded, visitors can only see their status.
|
||||||
|
|
||||||
.. _odoosh-gettingstarted-settings-modules-installation:
|
.. _odoosh-gettingstarted-settings-modules-installation:
|
||||||
|
|
||||||
|
GitHub commit statuses
|
||||||
|
======================
|
||||||
|
|
||||||
|
This option enables Odoo.sh to push commit statuses to your GitHub repository when a build is
|
||||||
|
created or updated. It requires a GitHub token with permissions to push commit statuses to the
|
||||||
|
repository. Refer to `GitHub's documentation on personal access tokens <https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens>`_
|
||||||
|
for instructions to create yours.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
GitHub's **fine-grained personal tokens** have an expiration date and will be disabled if they
|
||||||
|
fail to update the commit status. You can replace the token at any time on Odoo.sh.
|
||||||
|
|
||||||
|
The commit statuses pushed to GitHub can have the following contexts:
|
||||||
|
|
||||||
|
- :guilabel:`ci/odoo.sh (dev)`: status of a development build
|
||||||
|
- :guilabel:`ci/odoo.sh (staging)`: status of a staging build
|
||||||
|
- :guilabel:`ci/odoo.sh (production)`: status of a production build
|
||||||
|
- :guilabel:`ci/odoo.sh (test_ci)`: testing the token from the Settings page will push a test
|
||||||
|
status on the last commit of your repository
|
||||||
|
|
||||||
Custom domains
|
Custom domains
|
||||||
==============
|
==============
|
||||||
|
|
||||||
|
117
content/administration/on_premise.rst
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
:show-content:
|
||||||
|
|
||||||
|
==========
|
||||||
|
On-premise
|
||||||
|
==========
|
||||||
|
|
||||||
|
Register a database
|
||||||
|
===================
|
||||||
|
|
||||||
|
To register your database, enter your subscription code in the banner in the app dashboard. If the
|
||||||
|
registration is successful, the banner will turn green and display the database expiration date.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
The expiration date is also displayed at the bottom of the Settings page.
|
||||||
|
|
||||||
|
.. _on-premise/duplicate:
|
||||||
|
|
||||||
|
Duplicate a database
|
||||||
|
====================
|
||||||
|
|
||||||
|
Duplicate a database by accessing the database manager on your server
|
||||||
|
(`<odoo-server>/web/database/manager`). Typically, you want to duplicate your production database
|
||||||
|
into a neutralized testing database. It can be done by checking the neutralize box when prompted,
|
||||||
|
which executes all :file:`neutralize.sql` scripts for every installed module.
|
||||||
|
|
||||||
|
Common error messages and solutions
|
||||||
|
===================================
|
||||||
|
|
||||||
|
Registration error
|
||||||
|
------------------
|
||||||
|
|
||||||
|
In case of a registration error, the following message should be displayed.
|
||||||
|
|
||||||
|
.. image:: on_premise/error-message-sub-code.png
|
||||||
|
:alt: Database registration error message
|
||||||
|
|
||||||
|
To resolve the issue:
|
||||||
|
|
||||||
|
- Check the **validity of your Odoo Enterprise subscription** by verifying if your subscription
|
||||||
|
details have the tag :guilabel:`In Progress` on your `Odoo Account
|
||||||
|
<https://accounts.odoo.com/my/subscription>`_ or contact your Account Manager.
|
||||||
|
|
||||||
|
- Ensure that **no other database is linked** to the subscription code, as only one database can be
|
||||||
|
linked per subscription.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
If a test or a development database is needed, you can :ref:`duplicate a database
|
||||||
|
<on-premise/duplicate>`.
|
||||||
|
|
||||||
|
- Verify that **no databases share the same UUID** (Universally Unique Identifier) by opening your
|
||||||
|
`Odoo Contract <https://accounts.odoo.com/my/subscription>`_. If two or more databases share the
|
||||||
|
same UUID, their name will be displayed.
|
||||||
|
|
||||||
|
.. image:: on_premise/unlink-db-name-collision.png
|
||||||
|
:alt: Database UUID error message
|
||||||
|
|
||||||
|
If that is the case, manually change the database(s) UUID or `send a support ticket
|
||||||
|
<https://www.odoo.com/help>`_.
|
||||||
|
|
||||||
|
- As the update notification must be able to reach Odoo's subscription validation servers, ensure
|
||||||
|
your **network and firewall settings** allow the Odoo server to open outgoing connections
|
||||||
|
towards:
|
||||||
|
|
||||||
|
- Odoo 18.0 and above: `services.odoo.com` on port `80`
|
||||||
|
- Odoo 17.0 and below: `services.openerp.com` on port `80`
|
||||||
|
|
||||||
|
These ports must be kept open even after registering a database, as the update notification runs
|
||||||
|
once a week.
|
||||||
|
|
||||||
|
Too many users error
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
If you have more users in a local database than provisioned in your Odoo Enterprise subscription,
|
||||||
|
the following message should be displayed.
|
||||||
|
|
||||||
|
.. image:: on_premise/add-more-users.png
|
||||||
|
:alt: Too many users on a database error message
|
||||||
|
|
||||||
|
When the message appears, you have 30 days to act before the database expires. The countdown is
|
||||||
|
updated every day.
|
||||||
|
|
||||||
|
To resolve the issue, either:
|
||||||
|
|
||||||
|
- **Add more users** to your subscription by clicking the :guilabel:`Upgrade your subscription` link
|
||||||
|
displayed in the message to validate the upsell quotation and pay for the extra users.
|
||||||
|
- :ref:`Deactivate users <users/deactivate>` and **reject** the upsell quotation.
|
||||||
|
|
||||||
|
Once your database has the correct number of users, the expiration message disappears automatically
|
||||||
|
after a few days, when the next verification occurs.
|
||||||
|
|
||||||
|
Database expired error
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
If your database expires before you renew your subscription, the following message should be
|
||||||
|
displayed.
|
||||||
|
|
||||||
|
.. image:: on_premise/database-expired.png
|
||||||
|
:alt: Database expired error message
|
||||||
|
|
||||||
|
This message appears if you fail to act before the end of the 30-day countdown.
|
||||||
|
|
||||||
|
To resolve the issue, either:
|
||||||
|
|
||||||
|
- Click the :guilabel:`Renew your subscription` link displayed in the message and complete the
|
||||||
|
process. If you pay by wire transfer, your subscription will be renewed when the payment arrives
|
||||||
|
which can take a few days. Credit card payments are processed immediately.
|
||||||
|
- `Send a support ticket <https://www.odoo.com/help>`_.
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
|
||||||
|
on_premise/packages
|
||||||
|
on_premise/source
|
||||||
|
on_premise/update
|
||||||
|
on_premise/deploy
|
||||||
|
on_premise/email_gateway
|
||||||
|
on_premise/geo_ip
|
||||||
|
on_premise/community_to_enterprise
|
BIN
content/administration/on_premise/add-more-users.png
Normal file
After Width: | Height: | Size: 6.3 KiB |
106
content/administration/on_premise/community_to_enterprise.rst
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
|
||||||
|
.. _setup/enterprise:
|
||||||
|
|
||||||
|
===================================
|
||||||
|
Switch from Community to Enterprise
|
||||||
|
===================================
|
||||||
|
|
||||||
|
Depending on your current installation, there are multiple ways to upgrade
|
||||||
|
your community version.
|
||||||
|
In any case the basic guidelines are:
|
||||||
|
|
||||||
|
* Backup your community database
|
||||||
|
|
||||||
|
.. image:: community_to_enterprise/db_manager.png
|
||||||
|
:class: img-fluid
|
||||||
|
|
||||||
|
* Shutdown your server
|
||||||
|
|
||||||
|
* Install the web_enterprise module
|
||||||
|
|
||||||
|
* Restart your server
|
||||||
|
|
||||||
|
* Enter your Odoo Enterprise Subscription code
|
||||||
|
|
||||||
|
.. image:: community_to_enterprise/enterprise_code.png
|
||||||
|
:class: img-fluid
|
||||||
|
|
||||||
|
On Linux, using an installer
|
||||||
|
============================
|
||||||
|
|
||||||
|
* Backup your community database
|
||||||
|
|
||||||
|
* Stop the odoo service
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ sudo service odoo stop
|
||||||
|
|
||||||
|
* Install the enterprise .deb (it should install over the community package)
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ sudo dpkg -i <path_to_enterprise_deb>
|
||||||
|
|
||||||
|
* Update your database to the enterprise packages using
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ python3 /usr/bin/odoo-bin -d <database_name> -i web_enterprise --stop-after-init
|
||||||
|
|
||||||
|
* You should be able to connect to your Odoo Enterprise instance using your usual mean of identification.
|
||||||
|
You can then link your database with your Odoo Enterprise Subscription by entering the code you received
|
||||||
|
by e-mail in the form input
|
||||||
|
|
||||||
|
|
||||||
|
On Linux, using the source code
|
||||||
|
===============================
|
||||||
|
|
||||||
|
There are many ways to launch your server when using sources, and you probably
|
||||||
|
have your own favourite. You may need to adapt sections to your usual workflow.
|
||||||
|
|
||||||
|
* Shutdown your server
|
||||||
|
* Backup your community database
|
||||||
|
* Update the ``--addons-path`` parameter of your launch command (see :doc:`../on_premise/source`)
|
||||||
|
* Install the web_enterprise module by using
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ -d <database_name> -i web_enterprise --stop-after-init
|
||||||
|
|
||||||
|
Depending on the size of your database, this may take some time.
|
||||||
|
|
||||||
|
* Restart your server with the updated addons path of point 3.
|
||||||
|
You should be able to connect to your instance. You can then link your database with your
|
||||||
|
Odoo Enterprise Subscription by entering the code you received by e-mail in the form input
|
||||||
|
|
||||||
|
On Windows
|
||||||
|
==========
|
||||||
|
|
||||||
|
* Backup your community database
|
||||||
|
|
||||||
|
* Uninstall Odoo Community (using the Uninstall executable in the installation folder) -
|
||||||
|
PostgreSQL will remain installed
|
||||||
|
|
||||||
|
.. image:: community_to_enterprise/windows_uninstall.png
|
||||||
|
:class: img-fluid
|
||||||
|
|
||||||
|
* Launch the Odoo Enterprise Installer and follow the steps normally. When choosing
|
||||||
|
the installation path, you can set the folder of the Community installation
|
||||||
|
(this folder still contains the PostgreSQL installation).
|
||||||
|
Uncheck ``Start Odoo`` at the end of the installation
|
||||||
|
|
||||||
|
.. image:: community_to_enterprise/windows_setup.png
|
||||||
|
:class: img-fluid
|
||||||
|
|
||||||
|
* Using a command window, update your Odoo Database using this command (from the Odoo
|
||||||
|
installation path, in the server subfolder)
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ ..\python\python.exe odoo-bin -d <database_name> -i web_enterprise --stop-after-init
|
||||||
|
|
||||||
|
* No need to manually launch the server, the service is running.
|
||||||
|
You should be able to connect to your Odoo Enterprise instance using your usual
|
||||||
|
mean of identification. You can then link your database with your Odoo Enterprise
|
||||||
|
Subscription by entering the code you received by e-mail in the form input
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
@ -3,13 +3,13 @@ System configuration
|
|||||||
====================
|
====================
|
||||||
|
|
||||||
This document describes basic steps to set up Odoo in production or on an
|
This document describes basic steps to set up Odoo in production or on an
|
||||||
internet-facing server. It follows :doc:`installation <../install>`, and is
|
internet-facing server. It follows :doc:`installation <../on_premise>`, and is
|
||||||
not generally necessary for a development systems that is not exposed on the
|
not generally necessary for a development systems that is not exposed on the
|
||||||
internet.
|
internet.
|
||||||
|
|
||||||
.. warning:: If you are setting up a public server, be sure to check our :ref:`security` recommendations!
|
.. warning:: If you are setting up a public server, be sure to check our :ref:`security` recommendations!
|
||||||
|
|
||||||
.. _db_filter:
|
.. _dbfilter:
|
||||||
|
|
||||||
dbfilter
|
dbfilter
|
||||||
========
|
========
|
||||||
@ -330,26 +330,27 @@ in ``/etc/nginx/sites-enabled/odoo.conf`` set:
|
|||||||
proxy_pass http://odoochat;
|
proxy_pass http://odoochat;
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
proxy_set_header Connection $connection_upgrade;
|
proxy_set_header Connection $connection_upgrade;
|
||||||
proxy_set_header X-Forwarded-Host $host;
|
proxy_set_header X-Forwarded-Host $http_host;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
|
||||||
|
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
|
||||||
|
proxy_cookie_flags session_id samesite=lax secure; # requires nginx 1.19.8
|
||||||
}
|
}
|
||||||
|
|
||||||
# Redirect requests to odoo backend server
|
# Redirect requests to odoo backend server
|
||||||
location / {
|
location / {
|
||||||
# Add Headers for odoo proxy mode
|
# Add Headers for odoo proxy mode
|
||||||
proxy_set_header X-Forwarded-Host $host;
|
proxy_set_header X-Forwarded-Host $http_host;
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
proxy_redirect off;
|
proxy_redirect off;
|
||||||
proxy_pass http://odoo;
|
proxy_pass http://odoo;
|
||||||
|
|
||||||
# Enable HSTS
|
|
||||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
|
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
|
||||||
# requires nginx 1.19.8
|
proxy_cookie_flags session_id samesite=lax secure; # requires nginx 1.19.8
|
||||||
proxy_cookie_flags session_id samesite=lax secure;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# common gzip
|
# common gzip
|
||||||
@ -439,51 +440,71 @@ Odoo static files are located in each module's :file:`static/` folder, so static
|
|||||||
by intercepting all requests to :samp:`/{MODULE}/static/{FILE}`, and looking up the right module
|
by intercepting all requests to :samp:`/{MODULE}/static/{FILE}`, and looking up the right module
|
||||||
(and file) in the various addons paths.
|
(and file) in the various addons paths.
|
||||||
|
|
||||||
.. example::
|
It is recommended to set the ``Content-Security-Policy: default-src 'none'`` header on all images
|
||||||
Say Odoo has been installed via the **debian packages** for Community and Enterprise and the
|
delivered by the web server. It is not strictly necessary as users cannot modify/inject content
|
||||||
:option:`--addons-path <odoo-bin --addons-path>` is ``'/usr/lib/python3/dist-packages/odoo/addons'``.
|
inside of modules' :file:`static/` folder and existing images are final (they do not fetch new
|
||||||
|
resources by themselves). However, it is good practice.
|
||||||
|
|
||||||
Using the above NGINX (https) configuration, the following location block should be added to
|
Using the above NGINX (https) configuration, the following ``map`` and ``location`` blocks should be
|
||||||
serve static files via NGINX.
|
added to serve static files via NGINX.
|
||||||
|
|
||||||
.. code-block:: nginx
|
.. code-block:: nginx
|
||||||
|
|
||||||
|
map $sent_http_content_type $content_type_csp {
|
||||||
|
default "";
|
||||||
|
~image/ "default-src 'none'";
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
# the rest of the configuration
|
||||||
|
|
||||||
location @odoo {
|
location @odoo {
|
||||||
# copy-paste the content of the / location block
|
# copy-paste the content of the / location block
|
||||||
}
|
}
|
||||||
|
|
||||||
# Serve static files right away
|
# Serve static files right away
|
||||||
location ~ ^/[^/]+/static/.+$ {
|
location ~ ^/[^/]+/static/.+$ {
|
||||||
|
# root and try_files both depend on your addons paths
|
||||||
|
root ...;
|
||||||
|
try_files ... @odoo;
|
||||||
|
expires 24h;
|
||||||
|
add_header Content-Security-Policy $content_type_csp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
The actual ``root`` and ``try_files`` directives are dependant on your installation, specifically on
|
||||||
|
your :option:`--addons-path <odoo-bin --addons-path>`.
|
||||||
|
|
||||||
|
.. example::
|
||||||
|
|
||||||
|
.. tabs::
|
||||||
|
|
||||||
|
.. group-tab:: Debian package
|
||||||
|
|
||||||
|
Say Odoo has been installed via the **debian packages** for Community and Enterprise, and
|
||||||
|
that the :option:`--addons-path <odoo-bin --addons-path>` is
|
||||||
|
``'/usr/lib/python3/dist-packages/odoo/addons'``.
|
||||||
|
|
||||||
|
The ``root`` and ``try_files`` should be:
|
||||||
|
|
||||||
|
.. code-block:: nginx
|
||||||
|
|
||||||
root /usr/lib/python3/dist-packages/odoo/addons;
|
root /usr/lib/python3/dist-packages/odoo/addons;
|
||||||
try_files $uri @odoo;
|
try_files $uri @odoo;
|
||||||
expires 24h;
|
|
||||||
}
|
|
||||||
|
|
||||||
.. example::
|
.. group-tab:: Git sources
|
||||||
Say Odoo has been installed via the **source**. The two git repositories for Community and
|
|
||||||
Enterprise have been cloned in :file:`/opt/odoo/community` and :file:`/opt/odoo/enterprise`
|
Say Odoo has been installed via the **sources**, that both the Community and Enterprise git
|
||||||
respectively and the :option:`--addons-path <odoo-bin --addons-path>` is
|
repositories were cloned in :file:`/opt/odoo/community` and :file:`/opt/odoo/enterprise`
|
||||||
|
respectively, and that the :option:`--addons-path <odoo-bin --addons-path>` is
|
||||||
``'/opt/odoo/community/odoo/addons,/opt/odoo/community/addons,/opt/odoo/enterprise'``.
|
``'/opt/odoo/community/odoo/addons,/opt/odoo/community/addons,/opt/odoo/enterprise'``.
|
||||||
|
|
||||||
Using the above NGINX (https) configuration, the following location block should be added to
|
The ``root`` and ``try_files`` should be:
|
||||||
serve static files via NGINX.
|
|
||||||
|
|
||||||
.. code-block:: nginx
|
.. code-block:: nginx
|
||||||
|
|
||||||
location @odoo {
|
|
||||||
# copy-paste the content of the / location block
|
|
||||||
}
|
|
||||||
|
|
||||||
# Serve static files right away
|
|
||||||
location ~ ^/[^/]+/static/.+$ {
|
|
||||||
root /opt/odoo;
|
root /opt/odoo;
|
||||||
try_files /community/odoo/addons$uri /community/addons$uri /enterprise$uri @odoo;
|
try_files /community/odoo/addons$uri /community/addons$uri /enterprise$uri @odoo;
|
||||||
expires 24h;
|
|
||||||
}
|
|
||||||
|
|
||||||
.. warning::
|
|
||||||
The actual NGINX configuration you need is highly dependent on your own installation. The two
|
|
||||||
above snippets only highlight two possible configurations and may not be used as-is.
|
|
||||||
|
|
||||||
Serving attachments
|
Serving attachments
|
||||||
-------------------
|
-------------------
|
||||||
@ -552,12 +573,12 @@ security-related topics:
|
|||||||
|
|
||||||
- Use appropriate database filters ( :option:`--db-filter <odoo-bin --db-filter>`)
|
- Use appropriate database filters ( :option:`--db-filter <odoo-bin --db-filter>`)
|
||||||
to restrict the visibility of your databases according to the hostname.
|
to restrict the visibility of your databases according to the hostname.
|
||||||
See :ref:`db_filter`.
|
See :ref:`dbfilter`.
|
||||||
You may also use :option:`-d <odoo-bin -d>` to provide your own (comma-separated)
|
You may also use :option:`-d <odoo-bin -d>` to provide your own (comma-separated)
|
||||||
list of available databases to filter from, instead of letting the system fetch
|
list of available databases to filter from, instead of letting the system fetch
|
||||||
them all from the database backend.
|
them all from the database backend.
|
||||||
|
|
||||||
- Once your ``db_name`` and ``db_filter`` are configured and only match a single database
|
- Once your ``db_name`` and ``dbfilter`` are configured and only match a single database
|
||||||
per hostname, you should set ``list_db`` configuration option to ``False``, to prevent
|
per hostname, you should set ``list_db`` configuration option to ``False``, to prevent
|
||||||
listing databases entirely, and to block access to the database management screens
|
listing databases entirely, and to block access to the database management screens
|
||||||
(this is also exposed as the :option:`--no-database-list <odoo-bin --no-database-list>`
|
(this is also exposed as the :option:`--no-database-list <odoo-bin --no-database-list>`
|
||||||
@ -701,7 +722,7 @@ management screens.
|
|||||||
the system administrator, including provisioning of new databases and automated backups.
|
the system administrator, including provisioning of new databases and automated backups.
|
||||||
|
|
||||||
Be sure to setup an appropriate ``db_name`` parameter
|
Be sure to setup an appropriate ``db_name`` parameter
|
||||||
(and optionally, ``db_filter`` too) so that the system can determine the target database
|
(and optionally, ``dbfilter`` too) so that the system can determine the target database
|
||||||
for each request, otherwise users will be blocked as they won't be allowed to choose the
|
for each request, otherwise users will be blocked as they won't be allowed to choose the
|
||||||
database themselves.
|
database themselves.
|
||||||
|
|
||||||
@ -719,7 +740,143 @@ It should be stored securely, and should be generated randomly e.g.
|
|||||||
|
|
||||||
$ python3 -c 'import base64, os; print(base64.b64encode(os.urandom(24)))'
|
$ python3 -c 'import base64, os; print(base64.b64encode(os.urandom(24)))'
|
||||||
|
|
||||||
which will generate a 32 characters pseudorandom printable string.
|
which generates a 32-character pseudorandom printable string.
|
||||||
|
|
||||||
|
Reset the master password
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
There may be instances where the master password is misplaced, or compromised, and needs to be
|
||||||
|
reset. The following process is for system administrators of an Odoo on-premise database detailing
|
||||||
|
how to manually reset and re-encrypt the master password.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
For more information about changing an Odoo.com account password, see this documentation:
|
||||||
|
:ref:`odoocom/change_password`.
|
||||||
|
|
||||||
|
When creating a new on-premise database, a random master password is generated. Odoo recommends
|
||||||
|
using this password to secure the database. This password is implemented by default, so there is a
|
||||||
|
secure master password for any Odoo on-premise deployment.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
When creating an Odoo on-premise database the installation is accessible to anyone on the
|
||||||
|
internet, until this password is set to secure the database.
|
||||||
|
|
||||||
|
The master password is specified in the Odoo configuration file (`odoo.conf` or `odoorc` (hidden
|
||||||
|
file)). The Odoo master password is needed to modify, create, or delete a database through the
|
||||||
|
graphical user interface (GUI).
|
||||||
|
|
||||||
|
Locate configuration file
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
First, open the Odoo configuration file (`odoo.conf` or `odoorc` (hidden file)).
|
||||||
|
|
||||||
|
.. tabs::
|
||||||
|
|
||||||
|
.. tab:: Windows
|
||||||
|
|
||||||
|
The configuration file is located at: `c:\\ProgramFiles\\Odoo{VERSION}\\server\\odoo.conf`
|
||||||
|
|
||||||
|
.. tab:: Linux
|
||||||
|
|
||||||
|
Depending on how Odoo is installed on the Linux machine, the configuration file is located in
|
||||||
|
one of two different places:
|
||||||
|
|
||||||
|
- Package installation: `/etc/odoo.conf`
|
||||||
|
- Source installation: `~/.odoorc`
|
||||||
|
|
||||||
|
Change old password
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Once the appropriate file has been opened, proceed to modify the old password in the configuration
|
||||||
|
file to a temporary password.
|
||||||
|
|
||||||
|
.. tabs::
|
||||||
|
|
||||||
|
.. group-tab:: Graphical user interface
|
||||||
|
|
||||||
|
After locating the configuration file, open it using a (:abbr:`GUI (graphical user
|
||||||
|
interface)`). This can be achieved by simply double clicking on the file. Then, the device
|
||||||
|
should have a default :abbr:`GUI (graphical user interface)` to open the file with.
|
||||||
|
|
||||||
|
Next, modify the master password line `admin_passwd = $pbkdf2-sha…` to `admin_passwd =
|
||||||
|
newpassword1234`, for example. This password can be anything, as long as it is saved
|
||||||
|
temporarily. Make sure to modify all characters after the `=`.
|
||||||
|
|
||||||
|
.. example::
|
||||||
|
The line appears like this:
|
||||||
|
`admin_passwd =
|
||||||
|
$pbkdf2-sh39dji295.59mptrfW.9z6HkA$w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p/b573hji540mk/.3ek0lg%kvkol6k983mkf/40fjki79m`
|
||||||
|
|
||||||
|
The modified line appears like this: `admin_passwd = newpassword1234`
|
||||||
|
|
||||||
|
.. group-tab:: Command-line interface
|
||||||
|
|
||||||
|
Modify the master password line using the following Unix command detailed below.
|
||||||
|
|
||||||
|
Connect to the Odoo server's terminal via Secure Shell (SSH) protocol, and edit the
|
||||||
|
configuration file. To modify the configuration file, enter the following command:
|
||||||
|
:command:`sudo nano /etc/odoo.conf`
|
||||||
|
|
||||||
|
After opening the configuration file, modify the master password line `admin_passwd =
|
||||||
|
$pbkdf2-sha…` to `admin_passwd = newpassword1234`. This password can be anything, as long as
|
||||||
|
it is saved temporarily. Make sure to modify all characters after the `=`.
|
||||||
|
|
||||||
|
.. example::
|
||||||
|
The line appears like this:
|
||||||
|
`admin_passwd =
|
||||||
|
$pbkdf2-sh39dji295.59mptrfW.9z6HkA$w9j9AMVmKAP17OosCqDxDv2hjsvzlLpF8Rra8I7p/b573hji540mk/.3ek0lg%kvkol6k983mkf/40fjki79m`
|
||||||
|
|
||||||
|
The modified line appears like this: `admin_passwd = newpassword1234`
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
It is essential that the password is changed to something else, rather than triggering a new
|
||||||
|
password reset by adding a semicolon `;` at the beginning of the line. This ensures the database
|
||||||
|
is secure throughout the entire password reset process.
|
||||||
|
|
||||||
|
Restart Odoo server
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
After setting the temporary password, a restart of the Odoo server is **required**.
|
||||||
|
|
||||||
|
.. tabs::
|
||||||
|
|
||||||
|
.. group-tab:: Graphical user interface
|
||||||
|
|
||||||
|
To restart the Odoo server, first, type `services` into the Windows :guilabel:`Search` bar.
|
||||||
|
Then, select the :guilabel:`Services` application, and scroll down to the :guilabel:`Odoo`
|
||||||
|
service.
|
||||||
|
|
||||||
|
Next, right click on :guilabel:`Odoo`, and select :guilabel:`Start` or :guilabel:`Restart`.
|
||||||
|
This action manually restarts the Odoo server.
|
||||||
|
|
||||||
|
.. group-tab:: Command-line interface
|
||||||
|
|
||||||
|
Restart the Odoo server by typing the command: :command:`sudo service odoo15 restart`
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Change the number after `odoo` to fit the specific version the server is running on.
|
||||||
|
|
||||||
|
Use web interface to re-encrypt password
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
First, navigate to `/web/database/manager` or `http://server_ip:port/web/database/manager` in a
|
||||||
|
browser.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Replace `server_ip` with the IP address of the database. Replace `port` with the numbered port
|
||||||
|
the database is accessible from.
|
||||||
|
|
||||||
|
Next, click :guilabel:`Set Master Password`, and type in the previously-selected temporary password
|
||||||
|
into the :guilabel:`Master Password` field. Following this step, type in a :guilabel:`New Master
|
||||||
|
Password`. The :guilabel:`New Master Password` is hashed (or encrypted), once the
|
||||||
|
:guilabel:`Continue` button is clicked.
|
||||||
|
|
||||||
|
At this point, the password has been successfully reset, and a hashed version of the new password
|
||||||
|
now appears in the configuration file.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
For more information on Odoo database security, see this documentation:
|
||||||
|
:ref:`db_manager_security`.
|
||||||
|
|
||||||
Supported Browsers
|
Supported Browsers
|
||||||
==================
|
==================
|
@ -33,7 +33,6 @@ In you alias config (:file:`/etc/aliases`):
|
|||||||
- `Postfix aliases <http://www.postfix.org/aliases.5.html>`_
|
- `Postfix aliases <http://www.postfix.org/aliases.5.html>`_
|
||||||
- `Postfix virtual <http://www.postfix.org/virtual.8.html>`_
|
- `Postfix virtual <http://www.postfix.org/virtual.8.html>`_
|
||||||
|
|
||||||
|
|
||||||
For Exim
|
For Exim
|
||||||
--------
|
--------
|
||||||
|
|
||||||
@ -47,5 +46,5 @@ For Exim
|
|||||||
- `Exim <https://www.exim.org/docs.html>`_
|
- `Exim <https://www.exim.org/docs.html>`_
|
||||||
|
|
||||||
.. tip::
|
.. tip::
|
||||||
If you don't have access/manage your email server, use :ref:`inbound messages
|
If you do not have access/manage your email server, use :ref:`incoming mail servers
|
||||||
<email_communication/inbound_messages>`.
|
<email-inbound-custom-domain-incoming-server>`.
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 6.9 KiB |
63
content/administration/on_premise/geo_ip.rst
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
======
|
||||||
|
Geo IP
|
||||||
|
======
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
This documentation only applies to On-premise databases.
|
||||||
|
|
||||||
|
Installation
|
||||||
|
============
|
||||||
|
|
||||||
|
#. Download both the GeoLite2 City and Country
|
||||||
|
`databases <https://dev.maxmind.com/geoip/geoip2/geolite2/>`_. You should end up with two files
|
||||||
|
called :file:`GeoLite2-City.mmdb` and :file:`GeoLite2-Country.mmdb`.
|
||||||
|
|
||||||
|
#. Move the files to the folder :file:`/usr/share/GeoIP/`.
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
mv ~/Downloads/GeoLite2-City.mmdb /usr/share/GeoIP/
|
||||||
|
mv ~/Downloads/GeoLite2-Country.mmdb /usr/share/GeoIP/
|
||||||
|
|
||||||
|
#. Restart the server
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If you don't want to locate the geoip database in :file:`/usr/share/GeoIP/`, use the
|
||||||
|
:option:`--geoip-city-db <odoo-bin --geoip-city-db>` and
|
||||||
|
:option:`--geoip-country-db <odoo-bin --geoip-country-db>` options of the Odoo command line
|
||||||
|
interface. These options take the absolute path to the GeoIP database file and use it as the
|
||||||
|
GeoIP database. For example:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
./odoo-bin --geoip-city-db= ~/Downloads/GeoLite2-City.mmdb
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
- :doc:`CLI documentation </developer/reference/cli>`.
|
||||||
|
|
||||||
|
Test GeoIP geolocation in your Odoo website
|
||||||
|
===========================================
|
||||||
|
|
||||||
|
Edit a web page to include some geo-ip information such as the country name of the current
|
||||||
|
request IP address. To do so:
|
||||||
|
|
||||||
|
#. Go to your website. Open the web page that you want to test ``GeoIP``.
|
||||||
|
#. Choose :menuselection:`Customize --> HTML/CSS/JS Editor`.
|
||||||
|
#. Add the following piece of XML in the page :
|
||||||
|
|
||||||
|
.. code-block:: xml
|
||||||
|
|
||||||
|
<h1 class="text-center" t-esc="request.geoip.country.name or 'geoip failure'"/>
|
||||||
|
|
||||||
|
#. Save and refresh the page.
|
||||||
|
|
||||||
|
Geo-ip is working if you read your country name displayed in bold in the middle of the page.
|
||||||
|
|
||||||
|
In case you read "**geoip failure**" instead then the geolocalization failed. The common causes are:
|
||||||
|
|
||||||
|
#. The browsing IP address is the localhost (``127.0.0.1``) or a local area network one. If you
|
||||||
|
don't know, you can access your website using mobile data.
|
||||||
|
#. You are using a reverse-proxy (apache, nginx) in front of Odoo but didn't start Odoo with the
|
||||||
|
proxy-mode enabled. See :option:`proxy mode <odoo-bin --proxy-mode>`.
|
||||||
|
#. The GeoIP database is corrupt, missing or unaccessible. In such case a warning was logged in the
|
||||||
|
server logs.
|
@ -16,8 +16,8 @@ Official **Community** and **Enterprise** packages can be downloaded from the `O
|
|||||||
<https://www.odoo.com/page/download>`_.
|
<https://www.odoo.com/page/download>`_.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
It is required to be logged in as a paying customer or partner to download the Enterprise
|
It is required to be logged in as a paying on-premise customer or partner to download the
|
||||||
packages.
|
Enterprise packages.
|
||||||
|
|
||||||
.. _install/packages/linux:
|
.. _install/packages/linux:
|
||||||
|
|
||||||
@ -54,10 +54,10 @@ Odoo needs a `PostgreSQL <https://www.postgresql.org/>`_ server to run properly.
|
|||||||
$ sudo systemctl start postgresql
|
$ sudo systemctl start postgresql
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
`wkhtmltopdf` is not installed through **pip** and must be installed manually in `version 0.12.5
|
`wkhtmltopdf` is not installed through **pip** and must be installed manually in `version 0.12.6
|
||||||
<https://github.com/wkhtmltopdf/wkhtmltopdf/releases/tag/0.12.5>`_ for it to support headers and
|
<https://github.com/wkhtmltopdf/packaging/releases/tag/0.12.6.1-3>`_ for it to support headers
|
||||||
footers. Check out the `wkhtmltopdf wiki <https://github.com/odoo/odoo/wiki/Wkhtmltopdf>`_ for
|
and footers. Check out the `wkhtmltopdf wiki <https://github.com/odoo/odoo/wiki/Wkhtmltopdf>`_
|
||||||
more details on the various versions.
|
for more details on the various versions.
|
||||||
|
|
||||||
Repository
|
Repository
|
||||||
----------
|
----------
|
||||||
@ -132,7 +132,7 @@ be downloaded from the `Odoo download page <https://www.odoo.com/page/download>`
|
|||||||
.. group-tab:: Fedora
|
.. group-tab:: Fedora
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
Odoo {CURRENT_MAJOR_VERSION} 'rpm' package supports Fedora 36.
|
Odoo {CURRENT_MAJOR_VERSION} 'rpm' package supports Fedora 38.
|
||||||
|
|
||||||
Once downloaded, the package can be installed using the 'dnf' package manager:
|
Once downloaded, the package can be installed using the 'dnf' package manager:
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
======
|
==============
|
||||||
Source
|
Source install
|
||||||
======
|
==============
|
||||||
|
|
||||||
The source 'installation' is not about installing Odoo but running it directly from the source
|
The source 'installation' is not about installing Odoo but running it directly from the source
|
||||||
instead.
|
instead.
|
||||||
@ -45,7 +45,7 @@ Git
|
|||||||
|
|
||||||
To clone a Git repository, choose between cloning with HTTPS or SSH. In most cases, the best option
|
To clone a Git repository, choose between cloning with HTTPS or SSH. In most cases, the best option
|
||||||
is HTTPS. However, choose SSH to contribute to Odoo source code or when following the :doc:`Getting
|
is HTTPS. However, choose SSH to contribute to Odoo source code or when following the :doc:`Getting
|
||||||
Started developer tutorial </developer/tutorials/getting_started>`.
|
Started developer tutorial </developer/tutorials/server_framework_101>`.
|
||||||
|
|
||||||
.. tabs::
|
.. tabs::
|
||||||
|
|
||||||
@ -144,7 +144,7 @@ Odoo requires **Python 3.10** or later to run.
|
|||||||
to download and install Python 3 if needed.
|
to download and install Python 3 if needed.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
If Python 3 is already installed, make sure that the version is 3.7 or above, as previous
|
If Python 3 is already installed, make sure that the version is 3.10 or above, as previous
|
||||||
versions are not compatible with Odoo.
|
versions are not compatible with Odoo.
|
||||||
|
|
||||||
.. tabs::
|
.. tabs::
|
||||||
@ -229,7 +229,7 @@ PostgreSQL user.
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ sudo -u postgres createuser -s $USER
|
$ sudo -u postgres createuser -d -R -S $USER
|
||||||
$ createdb $USER
|
$ createdb $USER
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
@ -254,7 +254,7 @@ PostgreSQL user.
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ sudo -u postgres createuser -s $USER
|
$ sudo -u postgres createuser -d -R -S $USER
|
||||||
$ createdb $USER
|
$ createdb $USER
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
@ -277,18 +277,22 @@ Dependencies
|
|||||||
|
|
||||||
.. tab:: Debian/Ubuntu
|
.. tab:: Debian/Ubuntu
|
||||||
|
|
||||||
For Debian-based systems, the packages are listed in the `debian/control
|
|
||||||
<{GITHUB_PATH}/debian/control>`_ file of the Odoo sources.
|
|
||||||
|
|
||||||
On Debian/Ubuntu, the following commands should install the required packages:
|
On Debian/Ubuntu, the following commands should install the required packages:
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
$ cd /CommunityPath
|
$ cd odoo #CommunityPath
|
||||||
$ sed -n -e '/^Depends:/,/^Pre/ s/ python3-\(.*\),/python3-\1/p' debian/control | sudo xargs apt-get install -y
|
$ sudo ./setup/debinstall.sh
|
||||||
|
|
||||||
|
The `setup/debinstall.sh` script will parse the `debian/control
|
||||||
|
<{GITHUB_PATH}/debian/control>`_ file and install the found packages.
|
||||||
|
|
||||||
.. tab:: Install with pip
|
.. tab:: Install with pip
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
Using pip may lead to security issues and broken dependencies; only do this if you
|
||||||
|
know what you are doing.
|
||||||
|
|
||||||
As some of the Python packages need a compilation step, they require system libraries to
|
As some of the Python packages need a compilation step, they require system libraries to
|
||||||
be installed.
|
be installed.
|
||||||
|
|
||||||
@ -413,10 +417,10 @@ Dependencies
|
|||||||
$ sudo npm install -g rtlcss
|
$ sudo npm install -g rtlcss
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
`wkhtmltopdf` is not installed through **pip** and must be installed manually in `version 0.12.5
|
`wkhtmltopdf` is not installed through **pip** and must be installed manually in `version 0.12.6
|
||||||
<https://github.com/wkhtmltopdf/wkhtmltopdf/releases/tag/0.12.5>`_ for it to support headers and
|
<https://github.com/wkhtmltopdf/packaging/releases/tag/0.12.6.1-3>`_ for it to support headers
|
||||||
footers. Check out the `wkhtmltopdf wiki <https://github.com/odoo/odoo/wiki/Wkhtmltopdf>`_ for
|
and footers. Check out the `wkhtmltopdf wiki <https://github.com/odoo/odoo/wiki/Wkhtmltopdf>`_
|
||||||
more details on the various versions.
|
for more details on the various versions.
|
||||||
|
|
||||||
.. _install/source/running_odoo:
|
.. _install/source/running_odoo:
|
||||||
|
|
||||||
@ -479,7 +483,7 @@ http://localhost:8069 in a web browser and log into the Odoo database with the b
|
|||||||
account: use `admin` as the email and, again, `admin` as the password.
|
account: use `admin` as the email and, again, `admin` as the password.
|
||||||
|
|
||||||
.. tip::
|
.. tip::
|
||||||
- From there, create and manage new :doc:`users <../../applications/general/users/manage_users>`.
|
- From there, create and manage new :doc:`users <../../applications/general/users>`.
|
||||||
- The user account used to log into Odoo's web interface differs from the :option:`--db_user
|
- The user account used to log into Odoo's web interface differs from the :option:`--db_user
|
||||||
<odoo-bin -r>` CLI argument.
|
<odoo-bin -r>` CLI argument.
|
||||||
|
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
@ -46,7 +46,7 @@ Updating Odoo is accomplished by simply reinstalling the latest version of your
|
|||||||
Edition on top of your current installation. This will preserve your data without any alteration,
|
Edition on top of your current installation. This will preserve your data without any alteration,
|
||||||
as long as you do not uninstall PostgreSQL (the database engine that comes with Odoo).
|
as long as you do not uninstall PostgreSQL (the database engine that comes with Odoo).
|
||||||
|
|
||||||
The main reference for updating is logically our :doc:`installation guide <../install>`,
|
The main reference for updating is logically our :doc:`installation guide <../on_premise>`,
|
||||||
which explains the common installation methods.
|
which explains the common installation methods.
|
||||||
|
|
||||||
Updating is also most appropriately accomplished by the person who deployed Odoo initially,
|
Updating is also most appropriately accomplished by the person who deployed Odoo initially,
|
107
content/administration/supported_versions.rst
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
:hide-page-toc:
|
||||||
|
|
||||||
|
.. _supported_versions:
|
||||||
|
|
||||||
|
==================
|
||||||
|
Supported versions
|
||||||
|
==================
|
||||||
|
|
||||||
|
Odoo provides support and bug fixing **for the 3 last major versions** of Odoo.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Odoo releases intermediary versions called **Online versions** on the :doc:`Odoo Online
|
||||||
|
<odoo_online>` hosting every two months. Odoo Online users can then benefit from the latest
|
||||||
|
features of Odoo.
|
||||||
|
|
||||||
|
- Admins of Odoo Online databases are invited to :doc:`upgrade <upgrade>` them regularly.
|
||||||
|
- Online versions are *not* released for Odoo.sh and On-Premise installations.
|
||||||
|
- Online versions are listed below as *SaaS*.
|
||||||
|
|
||||||
|
This matrix shows the support status of every version.
|
||||||
|
|
||||||
|
**Major releases are in bold type.**
|
||||||
|
|
||||||
|
.. list-table::
|
||||||
|
:header-rows: 1
|
||||||
|
:widths: auto
|
||||||
|
|
||||||
|
* -
|
||||||
|
- Odoo Online
|
||||||
|
- Odoo.sh
|
||||||
|
- On-Premise
|
||||||
|
- Release date
|
||||||
|
- End of support
|
||||||
|
* - Odoo SaaS 18.1
|
||||||
|
- |green|
|
||||||
|
- N/A
|
||||||
|
- N/A
|
||||||
|
- January 2025
|
||||||
|
-
|
||||||
|
* - **Odoo 18.0**
|
||||||
|
- |green|
|
||||||
|
- |green|
|
||||||
|
- |green|
|
||||||
|
- October 2024
|
||||||
|
- October 2027 (planned)
|
||||||
|
* - Odoo SaaS 17.4
|
||||||
|
- |red|
|
||||||
|
- N/A
|
||||||
|
- N/A
|
||||||
|
- July 2024
|
||||||
|
- October 2024
|
||||||
|
* - Odoo SaaS 17.2
|
||||||
|
- |red|
|
||||||
|
- N/A
|
||||||
|
- N/A
|
||||||
|
- April 2024
|
||||||
|
- October 2024
|
||||||
|
* - **Odoo 17.0**
|
||||||
|
- |green|
|
||||||
|
- |green|
|
||||||
|
- |green|
|
||||||
|
- November 2023
|
||||||
|
- October 2026 (planned)
|
||||||
|
* - **Odoo 16.0**
|
||||||
|
- |green|
|
||||||
|
- |green|
|
||||||
|
- |green|
|
||||||
|
- October 2022
|
||||||
|
- October 2025 (planned)
|
||||||
|
* - **Odoo 15.0**
|
||||||
|
- |red|
|
||||||
|
- |red|
|
||||||
|
- |red|
|
||||||
|
- October 2021
|
||||||
|
- October 2024
|
||||||
|
* - **Odoo 14.0**
|
||||||
|
- |red|
|
||||||
|
- |red|
|
||||||
|
- |red|
|
||||||
|
- October 2020
|
||||||
|
- November 2023
|
||||||
|
* - Older versions
|
||||||
|
- |red|
|
||||||
|
- |red|
|
||||||
|
- |red|
|
||||||
|
- Before 2020
|
||||||
|
- Before 2023
|
||||||
|
|
||||||
|
.. admonition:: Legend
|
||||||
|
|
||||||
|
|green| Supported version
|
||||||
|
|
||||||
|
|red| End-of-support
|
||||||
|
|
||||||
|
N/A Never released for this platform
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
Even though we don't support older versions, you can always `upgrade from any version
|
||||||
|
<https://upgrade.odoo.com/>`_.
|
||||||
|
|
||||||
|
.. |green| raw:: html
|
||||||
|
|
||||||
|
<span class="text-success" style="font-size: 32px; line-height: 0.5">●</span>
|
||||||
|
|
||||||
|
.. |red| raw:: html
|
||||||
|
|
||||||
|
<span class="text-danger" style="font-size: 32px; line-height: 0.5">●</span>
|
@ -1,223 +1,399 @@
|
|||||||
:show-content:
|
|
||||||
|
|
||||||
.. |assistance-contact| replace::
|
|
||||||
If you need Odoo assistance on this matter, please get in touch with your Odoo Account Manager or
|
|
||||||
our `Sales department`_.
|
|
||||||
.. _Sales department: mailto:sales@odoo.com
|
|
||||||
|
|
||||||
=======
|
=======
|
||||||
Upgrade
|
Upgrade
|
||||||
=======
|
=======
|
||||||
|
|
||||||
.. toctree::
|
An upgrade involves moving a database from an older version to a newer supported version (e.g., from
|
||||||
:titlesonly:
|
Odoo 16.0 to Odoo 18.0). Regular upgrades are crucial as each version offers new features, bug
|
||||||
|
fixes, and security patches. Using a :doc:`supported version <supported_versions>` is strongly
|
||||||
|
recommended. Each major version is supported for three years.
|
||||||
|
|
||||||
upgrade/odoo_online
|
Depending on the hosting type and Odoo version used, a database upgrade can be **mandatory**.
|
||||||
upgrade/odoo_sh
|
|
||||||
upgrade/on_premise
|
|
||||||
upgrade/faq
|
|
||||||
|
|
||||||
An upgrade is switching to a newer version of Odoo (e.g., Odoo 14.0 to Odoo 15.0).
|
.. tabs::
|
||||||
|
|
||||||
|
.. group-tab:: Odoo Online
|
||||||
|
|
||||||
|
- If a database is on a **major version** (e.g., 16.0, 17.0, 18.0), an upgrade is mandatory
|
||||||
|
every two years.
|
||||||
|
- If a database is on a **minor version** (e.g., 17.1, 17.2, 17.4), an upgrade is mandatory
|
||||||
|
a few weeks after the next version is released. Minor versions are usually released every
|
||||||
|
two months.
|
||||||
|
|
||||||
|
.. group-tab:: Odoo.sh
|
||||||
|
|
||||||
|
After the initial three years of support, you will have another two years to complete the
|
||||||
|
upgrade. You will be notified when an upgrade is required.
|
||||||
|
|
||||||
|
.. image:: upgrade/odoo-sh-message.png
|
||||||
|
:alt: The "unsupported version" popup on Odoo.sh.
|
||||||
|
|
||||||
|
.. group-tab:: On-premise
|
||||||
|
|
||||||
|
You can stay on the same version indefinitely, even if it is not recommended. Note that the
|
||||||
|
smaller the version gap, the easier the upgrade should be.
|
||||||
|
|
||||||
|
.. spoiler:: Automatic upgrades: Odoo Online's Rolling Release process
|
||||||
|
|
||||||
|
You will receive a notification in your database a few weeks before a mandatory upgrade will be
|
||||||
|
automatically carried out. You are in control of the process as long as the deadline is not
|
||||||
|
reached.
|
||||||
|
|
||||||
|
.. image:: upgrade/rr-upgrade-message.png
|
||||||
|
:alt: The upgrade message prompt on the top right of the database
|
||||||
|
|
||||||
|
Concretely, Odoo’s Upgrade Team performs a silent test upgrade of every database that should be
|
||||||
|
upgraded. If the test is successful and lasts less than 20 minutes, you can directly trigger the
|
||||||
|
upgrade from the database. If the test fails, you can test an upgrade using the `database manager
|
||||||
|
<https://www.odoo.com/my/databases>`_.
|
||||||
|
|
||||||
|
When you are invited to upgrade, it is strongly recommended to :ref:`request an upgraded test
|
||||||
|
database <upgrade-request-test>` first and spend time :ref:`testing <upgrade-testing>` it.
|
||||||
|
|
||||||
|
An automatic upgrade to the next version will be triggered if no action is taken before the
|
||||||
|
specified due date.
|
||||||
|
|
||||||
An upgrade does not cover:
|
An upgrade does not cover:
|
||||||
|
|
||||||
* Changing :ref:`editions <upgrade-faq/editions-change>` (i.e., Community to Enterprise edition)
|
- Downgrading to a previous version of Odoo
|
||||||
* Switching :ref:`hosting type <upgrade-faq/hosting-types-switch>` (i.e., On-Premise to Odoo Online
|
- :doc:`Switching editions <on_premise/community_to_enterprise>` (e.g., from Community to
|
||||||
or Odoo.sh)
|
Enterprise)
|
||||||
* Migration from another ERP to Odoo
|
- :ref:`Changing hosting type <hosting/change-solution>` (e.g., from on-premise to Odoo Online)
|
||||||
|
- Migrating from another ERP to Odoo
|
||||||
.. note:: |assistance-contact|
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
- :ref:`upgrade/sla`
|
|
||||||
|
|
||||||
.. _upgrade/process-workflow:
|
|
||||||
|
|
||||||
Process workflow
|
|
||||||
================
|
|
||||||
|
|
||||||
The upgrade process in a nutshell:
|
|
||||||
|
|
||||||
#. You create a test upgrade request.
|
|
||||||
#. Odoo processes the request automatically by running the database through an upgrade script, which
|
|
||||||
takes between 20 and 120 minutes.
|
|
||||||
#. Odoo delivers a test database.
|
|
||||||
#. You test your database for possible discrepancies (see :ref:`upgrade/test-guidance`).
|
|
||||||
#. If there are any discrepancies, you report them to the Upgrade support team via the help portal
|
|
||||||
(see :ref:`upgrade/test-assistance`).
|
|
||||||
#. We fix the issues and send you a new test database.
|
|
||||||
#. Once you have completed the testing and are happy with the result, you decide on a date and time
|
|
||||||
when you stop users from accessing Odoo, freeze all data entries, and create an upgrade request
|
|
||||||
for the production upgrade.
|
|
||||||
#. Odoo delivers the production database through the automated process.
|
|
||||||
#. You restore it in your Production environment a few short hours later and continue working on the
|
|
||||||
newly upgraded database (this is done automatically on Odoo Online).
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
- :doc:`Upgrade process for Odoo Online <upgrade/odoo_online>`
|
|
||||||
- :doc:`Upgrade process for Odoo.sh <upgrade/odoo_sh>`
|
|
||||||
- :doc:`Upgrade process for On-Premise <upgrade/on_premise>`
|
|
||||||
|
|
||||||
.. _upgrade/testing-phase:
|
|
||||||
|
|
||||||
Testing
|
|
||||||
=======
|
|
||||||
|
|
||||||
This phase allows you to review an upgraded version of your database without affecting your
|
|
||||||
production database in any way. We suggest that you run the test upgrade process at least once, but
|
|
||||||
you can do it as many times as you need (one at a time).
|
|
||||||
|
|
||||||
Once you receive your upgraded test database, check that all data, processes, and functionality are
|
|
||||||
still correct and working as expected.
|
|
||||||
|
|
||||||
If you do find discrepancies, :ref:`report your issues <upgrade/test-assistance>` and :ref:`request
|
|
||||||
a new test database <upgrade/test-db-request>` when the reported issues are fixed in the upgrade
|
|
||||||
script.
|
|
||||||
|
|
||||||
If you do not find any discrepancies, you can move on to the upgrade of your production database.
|
|
||||||
|
|
||||||
.. important::
|
|
||||||
A test database is only intended for testing and remains completely unrelated to your present or
|
|
||||||
future production database. Any data you add, or changes you make, will not be reflected in your
|
|
||||||
upgraded production database.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
Test databases are neutered and features are disabled to prevent them from having an impact on
|
|
||||||
the production database:
|
|
||||||
|
|
||||||
#. The serial number of the database is modified (to prevent it from sending information as if it
|
|
||||||
was the production database).
|
|
||||||
#. The :ref:`base URL of the database <domain-name/web-base-url>` is reset to
|
|
||||||
``http://localhost:8069`` and the email domain to ``localhost``.
|
|
||||||
#. Scheduled actions are disabled (the calendar synchronization, the bank statement
|
|
||||||
synchronization, the planned automated actions, the fetching of incoming mail servers, etc.).
|
|
||||||
#. Outgoing mail servers are disabled by archiving the existing ones and adding a
|
|
||||||
fake/non-working one.
|
|
||||||
#. Payment providers and delivery carriers are reset to test environment.
|
|
||||||
#. Accounting localization Electronic Data Interchange (EDI) services are disabled.
|
|
||||||
#. A system parameter is set to tell the database has been neutered.
|
|
||||||
|
|
||||||
.. _upgrade/test-db-request:
|
|
||||||
|
|
||||||
Request a test database
|
|
||||||
=======================
|
|
||||||
|
|
||||||
Follow the instructions available per hosting type on the `website form
|
|
||||||
<https://upgrade.odoo.com>`_ and select *Testing* purpose.
|
|
||||||
|
|
||||||
.. image:: upgrade/test-purpose.png
|
|
||||||
:align: center
|
|
||||||
:alt: Selection of the "Testing" purpose in the upgrade form on Odoo
|
|
||||||
|
|
||||||
.. _upgrade/test-guidance:
|
|
||||||
|
|
||||||
Test guidance
|
|
||||||
=============
|
|
||||||
|
|
||||||
Every business and organization has its own operational needs and has to test its specific Odoo
|
|
||||||
database individually. We recommend you look at `the test scenario
|
|
||||||
<https://docs.google.com/document/d/1ypNs7JKPOsjNbKpdiKFH7Al6g6whZ9jr7f7duAQ5E1w/>`_ for further
|
|
||||||
information.
|
|
||||||
|
|
||||||
.. todo:: change link "test scenario" once the related doc is published
|
|
||||||
|
|
||||||
.. _upgrade/test-assistance:
|
|
||||||
|
|
||||||
Assistance
|
|
||||||
----------
|
|
||||||
|
|
||||||
If you encounter an issue in the **test database**, please get in touch with Odoo Upgrade Support
|
|
||||||
via the `Odoo Support page <https://www.odoo.com/help>`_.
|
|
||||||
|
|
||||||
Under the *Ticket Description* section, select *An issue related to my upgrade* ticket type.
|
|
||||||
|
|
||||||
.. image:: upgrade/test-assistance.png
|
|
||||||
:align: center
|
|
||||||
:alt: Selection of "An issue related to my upgrade" as Ticket Type in the support form on Odoo
|
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
If you choose another *Ticket Description* type, the request will be redirected to another
|
If your database contains custom modules, it cannot be upgraded until a version of your custom
|
||||||
team. This will slow down the processing and response time.
|
modules is available for the target version of Odoo. For customers maintaining their own custom
|
||||||
|
modules, we recommend to parallelize the process by :ref:`requesting an upgraded database
|
||||||
|
<upgrade-request-test>` while also :doc:`upgrading the source code of your custom
|
||||||
|
modules </developer/howtos/upgrade_custom_db>`.
|
||||||
|
|
||||||
Please provide as much detail as you can (i.e., videos and screenshots to illustrate your issue).
|
.. _upgrade-nutshell:
|
||||||
This will avoid clarifying questions and speed up the resolution process significantly.
|
|
||||||
|
Upgrading in a nutshell
|
||||||
|
=======================
|
||||||
|
|
||||||
|
#. Request an upgraded test database (see :ref:`obtaining an upgraded test database
|
||||||
|
<upgrade-request-test>`).
|
||||||
|
#. If applicable, upgrade the source code of your custom module to be compatible with the new
|
||||||
|
version of Odoo (see :doc:`/developer/howtos/upgrade_custom_db`).
|
||||||
|
#. Thoroughly test the upgraded database (see :ref:`testing the new version of the database
|
||||||
|
<upgrade-testing>`).
|
||||||
|
#. Report any issue encountered during the testing to Odoo by going to the `Support page and
|
||||||
|
selecting "An issue related to my future upgrade (I am testing an upgrade)"
|
||||||
|
<https://www.odoo.com/help?stage=migration>`_.
|
||||||
|
#. Once all issues are resolved and you are confident that the upgraded database can be used as
|
||||||
|
your main database without any issues, plan the upgrade of your production database.
|
||||||
|
#. Request the upgrade for the production database, rendering it unavailable for the time it takes
|
||||||
|
to complete the process (see :ref:`upgrading the production database <upgrade-production>`).
|
||||||
|
#. Report any issue encountered during the upgrade to Odoo by going to the `Support page and
|
||||||
|
selecting "An issue related to my upgrade (production)"
|
||||||
|
<https://www.odoo.com/help?stage=post_upgrade>`_.
|
||||||
|
|
||||||
|
.. _upgrade-request-test:
|
||||||
|
|
||||||
|
Obtaining an upgraded test database
|
||||||
|
===================================
|
||||||
|
|
||||||
|
The `Upgrade page <https://upgrade.odoo.com>`_ is the main platform for requesting an upgraded
|
||||||
|
database. However, depending on the hosting type, you can upgrade from the command line
|
||||||
|
(on-premise), the Odoo Online `database manager <https://www.odoo.com/my/databases>`_, or your
|
||||||
|
`Odoo.sh project <https://www.odoo.sh/project>`_.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
* The purpose of the test phase is not to correct existing data or configurations in your
|
The Upgrade platform follows the same `Privacy Policy <https://www.odoo.com/privacy>`_ as the
|
||||||
|
other Odoo.com services. Visit the `General Data Protection Regulation page
|
||||||
|
<https://www.odoo.com/gdpr>`_ to learn more about how Odoo handles your data and privacy.
|
||||||
|
|
||||||
|
.. tabs::
|
||||||
|
|
||||||
|
.. group-tab:: Odoo Online
|
||||||
|
|
||||||
|
Odoo Online databases can be manually upgraded via the `database manager
|
||||||
|
<https://www.odoo.com/my/databases>`_.
|
||||||
|
|
||||||
|
The database manager displays all databases associated with the user's account. Databases
|
||||||
|
not on the most recent version of Odoo display an arrow in a circle icon next to their name,
|
||||||
|
indicating that they can be upgraded.
|
||||||
|
|
||||||
|
.. image:: upgrade/databases-page.png
|
||||||
|
:alt: The database manager with an upgrade button next to the name of a database.
|
||||||
|
|
||||||
|
Click the **arrow in a circle** icon to start the upgrade process. In the popup, fill in:
|
||||||
|
|
||||||
|
- The **version** of Odoo you want to upgrade to, usually the latest version
|
||||||
|
- The **email** address that should receive the link to the upgraded database
|
||||||
|
- The :guilabel:`Purpose` of the upgrade, which is automatically set to :guilabel:`Test` for
|
||||||
|
your first upgrade request
|
||||||
|
|
||||||
|
.. image:: upgrade/upgrade-popup.png
|
||||||
|
:alt: The "Upgrade your database" popup.
|
||||||
|
|
||||||
|
The :guilabel:`Upgrade in progress` tag is displayed next to the database name until
|
||||||
|
completion. Once the process succeeds, an email containing a link to the upgraded test
|
||||||
|
database is sent to the address provided. The database can also be accessed from the database
|
||||||
|
manager by clicking the dropdown arrow before the database name.
|
||||||
|
|
||||||
|
.. image:: upgrade/access-upgraded-db.png
|
||||||
|
:alt: Clicking the menu arrow displays the upgraded test database.
|
||||||
|
|
||||||
|
.. group-tab:: Odoo.sh
|
||||||
|
|
||||||
|
Odoo.sh is integrated with the upgrade platform to simplify the upgrade process.
|
||||||
|
|
||||||
|
.. image:: upgrade/odoo-sh-staging.png
|
||||||
|
:alt: Odoo.sh project and tabs
|
||||||
|
|
||||||
|
The **latest production daily automatic backup** is then sent to the Upgrade platform.
|
||||||
|
|
||||||
|
Once the upgrade platform is done upgrading the backup and uploading it on the branch, it is
|
||||||
|
put in a **special mode**: each time a **commit is pushed** on the branch, a **restore
|
||||||
|
operation** of the upgraded backup and an **update of all the custom modules** occur. This
|
||||||
|
allows you to test your custom modules on a pristine copy of the upgraded database. The log
|
||||||
|
file of the upgrade process can be found in your newly upgraded staging build by going to
|
||||||
|
:file:`~/logs/upgrade.log`.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
In databases where custom modules are installed, their source code must be up-to-date with
|
||||||
|
the target version of Odoo before the upgrade can be performed. If there are none, the
|
||||||
|
"update on commit" mode is skipped, the upgraded database is built as soon as it is
|
||||||
|
transferred from the upgrade platform, and the upgrade mode is exited.
|
||||||
|
|
||||||
|
Check out the :doc:`/developer/howtos/upgrade_custom_db` page for more information.
|
||||||
|
|
||||||
|
.. group-tab:: On-premise
|
||||||
|
|
||||||
|
The standard upgrade process can be initiated by entering the following command line on the
|
||||||
|
machine where the database is hosted:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ python <(curl -s https://upgrade.odoo.com/upgrade) test -d <your db name> -t <target version>
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
This command has some requirements on the environment it runs in:
|
||||||
|
|
||||||
|
- Some external commands that must be provided by the operating system, normally found in
|
||||||
|
any Linux distribution (including WSL). An error will be displayed if one or several of
|
||||||
|
them are missing.
|
||||||
|
- The system user that executes the command needs to be configured with access to the
|
||||||
|
database. Please refer to the PostgreSQL documentation of the `client environment
|
||||||
|
<https://www.postgresql.org/docs/current/libpq-envars.html>`_ or the `client password
|
||||||
|
file <https://www.postgresql.org/docs/current/libpq-pgpass.html>`_ for this requirement.
|
||||||
|
- The script needs to be able to reach one or multiple servers of the upgrade platform
|
||||||
|
both on TCP port 443 and to any random TCP port in the range between 32768 and 60999.
|
||||||
|
This can be in conflict with your restrictive firewall and may need an exception added
|
||||||
|
to the firewall configuration.
|
||||||
|
|
||||||
|
The following command can be used to display the general help and the main commands:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ python <(curl -s https://upgrade.odoo.com/upgrade) --help
|
||||||
|
|
||||||
|
An upgraded test database can also be requested via the `Upgrade page
|
||||||
|
<https://upgrade.odoo.com>`_.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
In databases where custom modules are installed, their source code must be up-to-date with
|
||||||
|
the target version of Odoo before the upgrade can be performed. Check out the
|
||||||
|
:doc:`/developer/howtos/upgrade_custom_db` page for more information.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
- For security reasons, only the person who submitted the upgrade request can download it.
|
||||||
|
- For storage reasons, the database's copy is submitted without a filestore to the upgrade
|
||||||
|
server. Therefore, the upgraded database does not contain the production filestore.
|
||||||
|
- Before restoring the upgraded database, its filestore must be merged with the production
|
||||||
|
filestore to be able to perform tests in the same conditions as it would be in the new
|
||||||
|
version.
|
||||||
|
- The upgraded database contains:
|
||||||
|
|
||||||
|
- A `dump.sql` file containing the upgraded database
|
||||||
|
- A `filestore` folder containing files extracted from in-database records into
|
||||||
|
attachments (if there are any) and new standard Odoo files from the targeted Odoo
|
||||||
|
version (e.g., new images, icons, payment provider's logos, etc.).
|
||||||
|
This is the folder that should be merged with the production filestore
|
||||||
|
in order to get the full upgraded filestore.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
You can request multiple test databases if you wish to test an upgrade more than once.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
When an upgrade request is completed, an upgrade report is attached to the successful upgrade
|
||||||
|
email, and it becomes available in the Discuss app for users who are part of the "Administration
|
||||||
|
/ Settings" group. This report provides important information about the changes introduced by
|
||||||
|
the new version.
|
||||||
|
|
||||||
|
.. _upgrade-testing:
|
||||||
|
|
||||||
|
Testing the new version of the database
|
||||||
|
=======================================
|
||||||
|
|
||||||
|
It is essential to test the upgraded test database to ensure that you are not stuck in your
|
||||||
|
day-to-day activities by a change in views, behavior, or an error message once the upgrade goes
|
||||||
|
live.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Test databases are neutralized, and some features are disabled to prevent them from impacting the
|
||||||
|
production database:
|
||||||
|
|
||||||
|
#. Scheduled actions are disabled.
|
||||||
|
#. Outgoing mail servers are disabled by archiving the existing ones and adding a fake one.
|
||||||
|
#. Payment providers and delivery carriers are reset to the test environment.
|
||||||
|
#. Bank synchronization is disabled. Should you want to test the synchronization, contact your
|
||||||
|
bank synchronization provider to get sandbox credentials.
|
||||||
|
|
||||||
|
Testing as many of your business flows as possible is strongly recommended to ensure they are
|
||||||
|
working correctly and to get more familiar with the new version.
|
||||||
|
|
||||||
|
.. admonition:: Basic test checklist
|
||||||
|
|
||||||
|
- Are there views that are deactivated in your test database but active in your production
|
||||||
|
database?
|
||||||
|
- Are your usual views still displayed correctly?
|
||||||
|
- Are your reports (invoice, sales order, etc.) correctly generated?
|
||||||
|
- Are your website pages working correctly?
|
||||||
|
- Are you able to create and modify records? (sales orders, invoices, purchases, users, contacts,
|
||||||
|
companies, etc.)
|
||||||
|
- Are there any issues with your mail templates?
|
||||||
|
- Are there any issues with saved translations?
|
||||||
|
- Are your search filters still present?
|
||||||
|
- Can you export your data?
|
||||||
|
|
||||||
|
.. spoiler:: Example of end-to-end testing
|
||||||
|
|
||||||
|
- Checking a random product in your product catalog and comparing its test and production data to
|
||||||
|
verify everything is the same (product category, selling price, cost price, vendor, accounts,
|
||||||
|
routes, etc.).
|
||||||
|
- Buying this product (Purchase app).
|
||||||
|
- Confirming the reception of this product (Inventory app).
|
||||||
|
- Checking if the route to receive this product is the same in your production database
|
||||||
|
(Inventory app).
|
||||||
|
- Selling this product (Sales app) to a random customer.
|
||||||
|
- Opening your customer database (Contacts app), selecting a customer (or company), and checking
|
||||||
|
its data.
|
||||||
|
- Shipping this product (Inventory app).
|
||||||
|
- Checking if the route to ship this product is the same as in your production database
|
||||||
|
(Inventory app).
|
||||||
|
- Validating a customer invoice (Invoicing or Accounting app).
|
||||||
|
- Crediting the invoice (issuing a credit note) and checking if it behaves as in your production
|
||||||
database.
|
database.
|
||||||
* |assistance-contact|
|
- Checking your reports' results (Accounting app).
|
||||||
|
- Randomly checking your taxes, currencies, bank accounts, and fiscal year (Accounting app).
|
||||||
|
- Making an online order (Website apps) from the product selection in your shop until the
|
||||||
|
checkout process and checking if everything behaves as in your production database.
|
||||||
|
|
||||||
.. _upgrade/steps-production:
|
This list is **not** exhaustive. Extend the example to your other apps based on your use of Odoo.
|
||||||
|
|
||||||
The production launch
|
If you face an issue while testing your upgraded test database, you can request the assistance of
|
||||||
=====================
|
Odoo by going to the `Support page and selecting "An issue related to my future upgrade (I am
|
||||||
|
testing an upgrade)" <https://www.odoo.com/help?stage=migration>`_. In any case, it is essential to
|
||||||
|
report any problem encountered during the testing to fix it before upgrading your production
|
||||||
|
database.
|
||||||
|
|
||||||
The production upgrade request is when you decide to upgrade your current database with all your
|
You might encounter significant differences with standard views, features, fields, and models during
|
||||||
production data (invoices, VAT returns, inventories, current orders) to a new version of your
|
testing. Those changes cannot be reverted on a case-by-case basis. However, if a change introduced
|
||||||
choice.
|
by a new version breaks a customization, it is the responsibility of the maintainer of your custom
|
||||||
|
module to make it compatible with the new version of Odoo.
|
||||||
|
|
||||||
After your :ref:`tests <upgrade/testing-phase>` are completed to your satisfaction, submit the
|
.. tip::
|
||||||
request to upgrade your production database via our `website form <https://upgrade.odoo.com>`_.
|
Do not forget to test:
|
||||||
Select *Production* purpose.
|
|
||||||
|
- Integrations with external software (EDI, APIs, etc.)
|
||||||
|
- Workflows between different apps (online sales with eCommerce, converting a lead all the way to
|
||||||
|
a sales order, delivery of products, etc.)
|
||||||
|
- Data exports
|
||||||
|
- Automated actions
|
||||||
|
- Server actions in the action menu on form views, as well as by selecting multiple records on
|
||||||
|
list views
|
||||||
|
|
||||||
|
.. _upgrade-production:
|
||||||
|
|
||||||
|
Upgrading the production database
|
||||||
|
=================================
|
||||||
|
|
||||||
|
Once the :ref:`tests <upgrade-testing>` are completed and you are confident that the upgraded
|
||||||
|
database can be used as your main database without any issues, it is time to plan the go-live day.
|
||||||
|
|
||||||
|
Your production database will be unavailable during its upgrade. Therefore, we recommend planning
|
||||||
|
the upgrade at a time when the use of the database is minimal.
|
||||||
|
|
||||||
|
As the standard upgrade scripts and your database are constantly evolving, it is also recommended
|
||||||
|
to frequently request another upgraded test database to ensure that the upgrade process is still
|
||||||
|
successful, especially if it takes a long time to finish. **Fully rehearsing the upgrade process the
|
||||||
|
day before upgrading the production database is also recommended.**
|
||||||
|
|
||||||
.. important::
|
.. important::
|
||||||
Going into production without first testing may lead to:
|
Going into production without first testing may lead to:
|
||||||
|
|
||||||
- business interruptions (e.g., no longer having the possibility to validate an action)
|
- Users failing to adjust to the changes and new features
|
||||||
- poor customer experiences (e.g., an eCommerce website that does not work correctly)
|
- Business interruptions (e.g., no longer having the possibility to validate an action)
|
||||||
|
- Poor customer experience (e.g., an eCommerce website that does not work correctly)
|
||||||
|
|
||||||
.. _upgrade/production-assistance:
|
The process of upgrading a production database is similar to upgrading a test database, but with a
|
||||||
|
few exceptions.
|
||||||
|
|
||||||
Assistance
|
.. tabs::
|
||||||
----------
|
|
||||||
|
|
||||||
If you encounter issues or problems in the **production database**, please get in touch with **Odoo
|
.. group-tab:: Odoo Online
|
||||||
Support**:
|
|
||||||
|
|
||||||
#. Connect to our `Odoo Support page <https://www.odoo.com/help>`_.
|
The process is similar to :ref:`obtaining an upgraded test database
|
||||||
#. Under the *Ticket Description* section, select the appropriate type related to your issue but
|
<upgrade-request-test>`, except for the purpose option, which must be set to
|
||||||
**do not select** the option *An issue related to my upgrade*.
|
:guilabel:`Production` instead of :guilabel:`Test`.
|
||||||
|
|
||||||
.. note::
|
|
||||||
After upgrading to production, the support will be provided by the Support team instead of the
|
|
||||||
Upgrade team.
|
|
||||||
|
|
||||||
#. Please provide as much detail as you can (i.e., videos and screenshots to illustrate your issue).
|
|
||||||
This will avoid clarifying questions and speed up the resolution process significantly.
|
|
||||||
|
|
||||||
.. warning::
|
.. warning::
|
||||||
If you choose *An issue related to my upgrade* as ticket type, the request will be redirected
|
Once the upgrade is requested, the database will be unavailable until the upgrade is
|
||||||
to another team than the support one and will slow down the processing and response time.
|
finished. Once the process is completed, it is impossible to revert to the previous
|
||||||
|
version.
|
||||||
|
|
||||||
.. _upgrade/assistance:
|
.. group-tab:: Odoo.sh
|
||||||
|
|
||||||
Help
|
The process is similar to :ref:`obtaining an upgraded test database <upgrade-request-test>` on
|
||||||
====
|
the :guilabel:`Production` branch.
|
||||||
|
|
||||||
.. _upgrade/contact:
|
.. image:: upgrade/odoo-sh-prod.png
|
||||||
|
:alt: View from the upgrade tab
|
||||||
|
|
||||||
Contact our upgrade service support
|
The process is **triggered as soon as a new commit is made** on the branch. This
|
||||||
-----------------------------------
|
allows the upgrade process to be synchronized with the deployment of the custom modules'
|
||||||
|
upgraded source code.
|
||||||
|
If there are no custom modules, the upgrade process is triggered immediately.
|
||||||
|
|
||||||
Should you have any more questions about the upgrade, do not hesitate to send a message to `Odoo
|
.. important::
|
||||||
Upgrade Team <mailto:upgrade@odoo.com>`_. We will be happy to answer it as soon as possible.
|
The database is unavailable throughout the process. If anything goes wrong, the platform
|
||||||
|
automatically reverts the upgrade, as it would be for a regular update. In case of success,
|
||||||
|
a backup of the database before the upgrade is created.
|
||||||
|
|
||||||
.. _upgrade/supported-versions:
|
The update of your custom modules must be successful to complete the entire upgrade process.
|
||||||
|
Make sure the status of your staging upgrade is :guilabel:`successful` before trying it in
|
||||||
|
production. More information on how to upgrade your custom modules can be found on
|
||||||
|
:doc:`/developer/howtos/upgrade_custom_db`.
|
||||||
|
|
||||||
Supported versions
|
.. group-tab:: On-premise
|
||||||
------------------
|
|
||||||
|
|
||||||
Please note that Odoo provides support and bug fixing only for the three last major versions of
|
The command to upgrade a database to production is similar to the one of upgrading a test
|
||||||
Odoo.
|
database except for the argument `test`, which must be replaced by `production`:
|
||||||
|
|
||||||
This is a factor to take into consideration before upgrading. If you are on an older version, we
|
.. code-block:: console
|
||||||
suggest you to prefer the most recent version to benefit from longer support (before having to
|
|
||||||
upgrade again).
|
|
||||||
|
|
||||||
.. seealso::
|
$ python <(curl -s https://upgrade.odoo.com/upgrade) production -d <your db name> -t <target version>
|
||||||
:doc:`maintain/supported_versions`
|
|
||||||
|
|
||||||
.. _upgrade/sla:
|
An upgraded production database can also be requested via the `Upgrade page
|
||||||
|
<https://upgrade.odoo.com>`_.
|
||||||
|
|
||||||
|
Once the database is uploaded, any modification to your production database will **not** be
|
||||||
|
present on your upgraded database. This is why we recommend not using it during the upgrade
|
||||||
|
process.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
When requesting an upgraded database for production purposes, the copy is submitted without
|
||||||
|
a filestore. Therefore, the upgraded database filestore must be merged with the production
|
||||||
|
filestore before deploying the new version.
|
||||||
|
|
||||||
|
In case of an issue with your production database, you can request the assistance of Odoo by going
|
||||||
|
to the `Support page and selecting "An issue related to my upgrade (production)"
|
||||||
|
<https://www.odoo.com/help?stage=post_upgrade>`_.
|
||||||
|
|
||||||
|
.. _upgrade-sla:
|
||||||
|
|
||||||
Service-level agreement (SLA)
|
Service-level agreement (SLA)
|
||||||
=============================
|
=============================
|
||||||
@ -229,6 +405,8 @@ Information about the upgrade services included in the Enterprise Licence is ava
|
|||||||
:ref:`Odoo Enterprise Subscription Agreement <upgrade>`. However, this section clarifies what
|
:ref:`Odoo Enterprise Subscription Agreement <upgrade>`. However, this section clarifies what
|
||||||
upgrade services you can expect.
|
upgrade services you can expect.
|
||||||
|
|
||||||
|
.. _upgrade-sla-covered:
|
||||||
|
|
||||||
Upgrade services covered by the SLA
|
Upgrade services covered by the SLA
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
|
||||||
@ -244,21 +422,18 @@ benefit from upgrade services at all times for:
|
|||||||
Upgrade services are limited to the technical conversion and adaptation of a database (standard
|
Upgrade services are limited to the technical conversion and adaptation of a database (standard
|
||||||
modules and data) to make it compatible with the version targeted by the upgrade.
|
modules and data) to make it compatible with the version targeted by the upgrade.
|
||||||
|
|
||||||
|
.. _upgrade-sla-not-covered:
|
||||||
|
|
||||||
Upgrade services not covered by the SLA
|
Upgrade services not covered by the SLA
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
The following upgrade-related services are **not** included:
|
The following upgrade-related services are **not** included:
|
||||||
|
|
||||||
- the **cleaning** of pre-existing data and configurations while upgrading;
|
- the **cleaning** of pre-existing data and configurations while upgrading;
|
||||||
- the upgrade of **custom modules created in-house or by third parties**, including Odoo partners;
|
- the upgrade of **additional modules not covered by a maintenance contract** that are created
|
||||||
- lines of **code added to standard modules**, i.e., customizations created outside the Studio app,
|
in-house or by third parties, including Odoo partners; and
|
||||||
code entered manually, and :ref:`automated actions using Python code
|
|
||||||
<studio/automated-actions/action>`; and
|
|
||||||
- **training** on using the upgraded version's features and workflows.
|
- **training** on using the upgraded version's features and workflows.
|
||||||
|
|
||||||
.. note:: |assistance-contact|
|
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
- :doc:`Upgrade FAQ <upgrade/faq>`
|
|
||||||
- :doc:`Odoo.sh documentation <odoo_sh>`
|
- :doc:`Odoo.sh documentation <odoo_sh>`
|
||||||
- :doc:`Supported Odoo versions <maintain/supported_versions>`
|
- :doc:`Supported Odoo versions <supported_versions>`
|
||||||
|
BIN
content/administration/upgrade/access-upgraded-db.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
content/administration/upgrade/databases-page.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
@ -1,228 +0,0 @@
|
|||||||
.. |assistance-contact| replace::
|
|
||||||
If you need Odoo assistance on this matter, please get in touch with your Odoo Account Manager or
|
|
||||||
our `Sales department`_.
|
|
||||||
.. _Sales department: mailto:sales@odoo.com
|
|
||||||
|
|
||||||
===
|
|
||||||
FAQ
|
|
||||||
===
|
|
||||||
|
|
||||||
.. _upgrade-faq/why:
|
|
||||||
|
|
||||||
Why upgrade
|
|
||||||
===========
|
|
||||||
|
|
||||||
* You benefit from the latest features of the :ref:`new major version
|
|
||||||
<upgrade-faq/release-notes>` released by Odoo.
|
|
||||||
* If you are in an :ref:`unsupported version <upgrade/supported-versions>`, you get a new version
|
|
||||||
with support.
|
|
||||||
|
|
||||||
.. _upgrade-faq/when:
|
|
||||||
|
|
||||||
When to upgrade
|
|
||||||
===============
|
|
||||||
|
|
||||||
Whenever you want. You can make your upgrade request as soon as a new version is released or when
|
|
||||||
your version turns unsupported, and you still wish to enjoy support.
|
|
||||||
|
|
||||||
.. _upgrade-faq/availability:
|
|
||||||
|
|
||||||
Availability of the new version
|
|
||||||
===============================
|
|
||||||
|
|
||||||
As soon as Odoo announces the release of a new major version, you can create a test upgrade request
|
|
||||||
to try the latest version. Please note that at this point, the upgrade scripts will only have been
|
|
||||||
tested with demo data. Please report any issue you might encounter while testing via the `Odoo
|
|
||||||
Support page <https://www.odoo.com/help>`_ and make sure to be happy with your test version before
|
|
||||||
requesting the upgrade of your database in production.
|
|
||||||
|
|
||||||
.. _upgrade-faq/duration:
|
|
||||||
|
|
||||||
Duration of the upgrade
|
|
||||||
=======================
|
|
||||||
|
|
||||||
It is impossible to give time estimates for every upgrade request.
|
|
||||||
|
|
||||||
In general, the "smaller" the database, the quickest the upgrade request is completed. A single-user
|
|
||||||
database that uses only CRM will be processed faster than a multi-company, multi-user database that
|
|
||||||
uses Accounting, Sales, Purchase, and Manufacturing.
|
|
||||||
|
|
||||||
You can expect the time it takes for the platform to upgrade the test database to be similar to the
|
|
||||||
production upgrade.
|
|
||||||
|
|
||||||
.. _upgrade-faq/project:
|
|
||||||
|
|
||||||
Duration of the upgrade project
|
|
||||||
-------------------------------
|
|
||||||
|
|
||||||
It depends on the user involvement (the time spent on testing, reporting problems, etc.) and the
|
|
||||||
issues encountered that might need to be addressed by our technical team.
|
|
||||||
|
|
||||||
So, in a nutshell, what can impact your upgrade lead time?
|
|
||||||
|
|
||||||
* Source & targeted versions
|
|
||||||
* Installed apps
|
|
||||||
* Volume of data
|
|
||||||
* Amount of customization (models, fields, methods, workflows, reports, website, etc.)
|
|
||||||
* Installation of new apps or configuration changes after the start of the test phase
|
|
||||||
* User commitment
|
|
||||||
|
|
||||||
.. _upgrade-faq/custom-modules:
|
|
||||||
|
|
||||||
Upgrade of the custom modules
|
|
||||||
=============================
|
|
||||||
|
|
||||||
As stated in our :doc:`/legal/terms/enterprise`, section :ref:`charges_standard`, this optional
|
|
||||||
service is subject to additional fees.
|
|
||||||
|
|
||||||
Depending on your situation, the custom code could be upgraded by our services, by one of our
|
|
||||||
partners, or you can do it yourself.
|
|
||||||
|
|
||||||
.. note:: |assistance-contact|
|
|
||||||
|
|
||||||
.. _upgrade-faq/upgrade-or-migration:
|
|
||||||
|
|
||||||
Upgrade or Migration
|
|
||||||
====================
|
|
||||||
|
|
||||||
An upgrade is switching to a newer version of Odoo, while a migration reflects the change of
|
|
||||||
:ref:`editions <upgrade-faq/editions-change>` or change of :ref:`hosting type
|
|
||||||
<upgrade-faq/hosting-types-switch>`.
|
|
||||||
|
|
||||||
.. note:: |assistance-contact|
|
|
||||||
|
|
||||||
.. _upgrade-faq/editions-change:
|
|
||||||
|
|
||||||
Editions change (from Community to Enterprise)
|
|
||||||
==============================================
|
|
||||||
|
|
||||||
The upgrade always returns an Enterprise edition of Odoo, whether the database you sent was a
|
|
||||||
community or enterprise edition. It is required to have an enterprise subscription to upgrade.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
If you need assistance on this matter, please contact us via the `Odoo Support page
|
|
||||||
<https://www.odoo.com/help>`_.
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
- `Editions <https://www.odoo.com/page/editions>`_
|
|
||||||
|
|
||||||
.. _upgrade-faq/hosting-types-switch:
|
|
||||||
|
|
||||||
Switching the hosting types (On-premise vs. Odoo Online vs. Odoo.sh)
|
|
||||||
====================================================================
|
|
||||||
|
|
||||||
An upgrade does not cover a change of `Hosting types <https://www.odoo.com/page/hosting-types>`_.
|
|
||||||
|
|
||||||
Open the following link to get :doc:`more information about how to change your hosting type
|
|
||||||
<../maintain/hosting_changes>`.
|
|
||||||
|
|
||||||
.. note:: |assistance-contact|
|
|
||||||
|
|
||||||
.. _upgrade-faq/upgrade-report:
|
|
||||||
|
|
||||||
The Upgrade Report
|
|
||||||
==================
|
|
||||||
|
|
||||||
When an upgrade request completes successfully (test or production), you receive an email
|
|
||||||
notification about it that includes an 'Upgrade Report'. This report is also sent to you via the
|
|
||||||
Discuss app. It contains valuable information regarding changes that occurred during the upgrade.
|
|
||||||
While it serves as a guide to possible issues to look out for, it is not an exhaustive list. It
|
|
||||||
remains imperative that you test the upgraded database thoroughly and report any discrepancies you
|
|
||||||
might find, before you decide to upgrade your production database.
|
|
||||||
|
|
||||||
.. _upgrade-faq/custom-views:
|
|
||||||
|
|
||||||
Custom views
|
|
||||||
============
|
|
||||||
|
|
||||||
During the upgrade, some custom views might get disabled for technical reasons. Therefore they might
|
|
||||||
have to be fixed after the upgrade. The :ref:`Upgrade Report <upgrade-faq/upgrade-report>` that is
|
|
||||||
generated after the upgrade is available in the Discuss app, and lists all the custom views that
|
|
||||||
might be impacted by this.
|
|
||||||
|
|
||||||
.. _upgrade-faq/release-notes:
|
|
||||||
|
|
||||||
Release Notes by version
|
|
||||||
========================
|
|
||||||
|
|
||||||
Open our `Release Note <https://www.odoo.com/page/release-notes>`_ page to get a summary of the new
|
|
||||||
features and improvements made in each version.
|
|
||||||
|
|
||||||
How long is my test available for
|
|
||||||
=================================
|
|
||||||
|
|
||||||
An Odoo Online test database is available for one month by default. We can extend this trial period
|
|
||||||
upon request. For Odoo.sh or on-premise, there is no restriction.
|
|
||||||
|
|
||||||
How many tests to perform before upgrading to production?
|
|
||||||
=========================================================
|
|
||||||
|
|
||||||
As many as needed. When you are comfortable with the database, run a last test upgrade 48 hours
|
|
||||||
before requesting your production upgrade and test your workflows one last time.
|
|
||||||
|
|
||||||
How to/Where to report upgrade issues?
|
|
||||||
======================================
|
|
||||||
|
|
||||||
If you encounter issues during the upgrade process, please contact the Odoo Support through the
|
|
||||||
`Odoo Support page <https://www.odoo.com/help>`_.
|
|
||||||
|
|
||||||
- To report an issue discovered during the testing phase, please select **An issue related to my
|
|
||||||
upgrade (test phase)**.
|
|
||||||
- To report an issue discovered post-upgrade, please select **An issue related to my upgrade
|
|
||||||
(production)**.
|
|
||||||
|
|
||||||
Upgrading to production
|
|
||||||
=======================
|
|
||||||
|
|
||||||
Once you have completed testing and are happy with the result, you decide on a date and time when
|
|
||||||
you stop users from accessing Odoo, freeze all data entries, and create an upgrade request for the
|
|
||||||
production upgrade.
|
|
||||||
|
|
||||||
How is my data handled in the Upgrade Platform?
|
|
||||||
===============================================
|
|
||||||
|
|
||||||
The Odoo Upgrade platform uses the same Privacy Policy as the rest of Odoo.com services.
|
|
||||||
|
|
||||||
Your data is hosted on servers that follow our security guidelines, namely:
|
|
||||||
|
|
||||||
- SSL - All web connections to client instances are protected with 256-bit SSL encryption
|
|
||||||
(HTTPS with a 2048-bit modulus SSL certificate), and running behind Grade A SSL stacks. All our
|
|
||||||
certificate chains are using SHA-2 already.
|
|
||||||
- Safe System - Our servers are running recent Linux distribution with up-to-date security patches,
|
|
||||||
with firewall and intrusion countermeasures (not disclosed for obvious reasons).
|
|
||||||
|
|
||||||
Servers are located at the same locations as our Cloud providers with the following services:
|
|
||||||
|
|
||||||
- Restricted perimeter, physically accessed by authorized data center employees only
|
|
||||||
- Physical access control with security badges or biometrical security
|
|
||||||
- Security cameras monitoring the data center locations 24/7
|
|
||||||
- Security personnel on-site 24/7
|
|
||||||
|
|
||||||
The uploaded and migrated databases uploaded to the Upgrade platform are kept for up to 3 months and
|
|
||||||
are permanently deleted following that period.
|
|
||||||
|
|
||||||
You can learn more about privacy and data handling at Odoo by visiting our `General Data Protection
|
|
||||||
Regulation page <https://www.odoo.com/gdpr>`_.
|
|
||||||
|
|
||||||
Rolling Release (applicable to Odoo Online databases)
|
|
||||||
=====================================================
|
|
||||||
|
|
||||||
This feature allows customers to upgrade their database directly from a message prompt sent to the
|
|
||||||
database administrator as soon as the new version is released. Odoo first tests the upgrade to the
|
|
||||||
next version. The rolling release upgrade option is displayed if the automated tests are successful.
|
|
||||||
The message offers two options:
|
|
||||||
|
|
||||||
#. To 'Upgrade Now', which immediately triggers the upgrade of your live production database.
|
|
||||||
|
|
||||||
#. To take you to your `database manager <https://www.odoo.com/my/databases/>`_ where you can
|
|
||||||
`request an upgraded test database <https://upgrade.odoo.com/#online/>`_ and check the upgraded
|
|
||||||
test database for any discrepancies.
|
|
||||||
|
|
||||||
When you choose to proceed with the production upgrade directly, make sure all users have saved
|
|
||||||
their work and are logged out. The upgrade takes approximately 15 minutes. During this time your
|
|
||||||
database is unreachable. If you notice any problem after the upgrade, please report it via the `Odoo
|
|
||||||
Support page <https://www.odoo.com/help>`_.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
If you are using the Website or Studio app, we recommend you always do a test upgrade before
|
|
||||||
upgrading your production instance.
|
|
BIN
content/administration/upgrade/odoo-sh-message.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
content/administration/upgrade/odoo-sh-prod.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
content/administration/upgrade/odoo-sh-staging.png
Normal file
After Width: | Height: | Size: 24 KiB |
@ -1,92 +0,0 @@
|
|||||||
===========
|
|
||||||
Odoo Online
|
|
||||||
===========
|
|
||||||
|
|
||||||
Odoo databases can be manually upgraded directly from the main Odoo website. To upgrade an Odoo
|
|
||||||
database, navigate to the `database manager <https://www.odoo.com/my/databases>`_ page and sign in.
|
|
||||||
|
|
||||||
The database manager page displays all of the Odoo databases associated with the user's account. Any
|
|
||||||
databases that are not already on the most recent version of Odoo display an **arrow in a circle**
|
|
||||||
icon next to the database name, indicating that the database can be upgraded.
|
|
||||||
|
|
||||||
.. image:: odoo_online/databases-page.png
|
|
||||||
:align: center
|
|
||||||
:alt: The database manager page with an upgrade button next to the name of a database.
|
|
||||||
|
|
||||||
.. important::
|
|
||||||
- If the database's version is **lower** than the latest major release: the database must be
|
|
||||||
upgraded within two months. After these two months, an automatic upgrade is initiated.
|
|
||||||
- If the database's version is **equal** to or **higher** than the latest major release:
|
|
||||||
you can disregard the invitation to upgrade, as the database probably would not benefit from
|
|
||||||
new features every two months.
|
|
||||||
|
|
||||||
If a database is *not* on the latest online version, its administrator should receive an invitation
|
|
||||||
to upgrade on the database's dashboard, displayed as an **arrow in a circle**.
|
|
||||||
|
|
||||||
.. image:: odoo_online/database-notification.png
|
|
||||||
:alt: Invitation to upgrade on the database dashboard.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
Versions that are not supported anymore become deprecated and must be updated to avoid
|
|
||||||
security issues. It is recommended to initiate the upgrade yourself and not wait for the
|
|
||||||
automatic upgrade, as the former method allows you to request a test upgrade of the database to
|
|
||||||
check for any discrepancies.
|
|
||||||
|
|
||||||
Test database
|
|
||||||
=============
|
|
||||||
|
|
||||||
Click on the **arrow in a circle** icon to start the upgrade process. On the :guilabel:`Upgrade your
|
|
||||||
database` pop-up, select the version of Odoo that the platform will be upgraded to. In the
|
|
||||||
:guilabel:`Email to notify` field, enter an email address that will receive email notifications
|
|
||||||
about the database upgrade.
|
|
||||||
|
|
||||||
There is also a :guilabel:`Purpose` section on the pop-up that is used to specify the reason for the
|
|
||||||
upgrade. However, at this stage of the process, the only selectable option is :guilabel:`Test`, as
|
|
||||||
Odoo requires users to create a test copy of the upgraded database before converting the actual
|
|
||||||
database.
|
|
||||||
|
|
||||||
.. image:: odoo_online/upgrade-pop-up.png
|
|
||||||
:align: center
|
|
||||||
:alt: The "Upgrade your database" pop-up.
|
|
||||||
|
|
||||||
After filling out the form, click the :guilabel:`Upgrade` button. The pop-up disappears and the
|
|
||||||
database being upgraded shows a red :guilabel:`Upgrade in progress` tag next to its name. An email
|
|
||||||
confirming that the upgrade is in progress is also sent to the email address specified on the
|
|
||||||
pop-up.
|
|
||||||
|
|
||||||
.. image:: odoo_online/upgrade-in-progress.png
|
|
||||||
:align: center
|
|
||||||
:alt: The "Upgrade in progress" tag next to the database name.
|
|
||||||
|
|
||||||
Once the upgrade is complete, a new test database appears on the `database manager
|
|
||||||
<https://www.odoo.com/my/databases>`_ page. To access the test database, click the drop-down arrow
|
|
||||||
(:guilabel:`⯆`) to the left of the main database's name. Doing so makes the test version appear
|
|
||||||
below it. Finally, click the green :guilabel:`Connect` button on the right side of the test
|
|
||||||
version's row to go to the database.
|
|
||||||
|
|
||||||
.. image:: odoo_online/test-database.png
|
|
||||||
:align: center
|
|
||||||
:alt: A test database on the database manager page.
|
|
||||||
|
|
||||||
Except for being on the newer version of Odoo, the test database is an exact copy of the one being
|
|
||||||
upgraded. It is important to do extensive testing in this database to ensure that the upgrade has
|
|
||||||
not altered or corrupted any data, and that all workflows still proceed as expected.
|
|
||||||
|
|
||||||
Production database
|
|
||||||
===================
|
|
||||||
|
|
||||||
After confirming the integrity of the new version, return to the `database manager
|
|
||||||
<https://www.odoo.com/my/databases>`_ page. Once again, click on the **arrow in a circle** icon next
|
|
||||||
to the database being upgraded. The :guilabel:`Upgrade your database` pop-up appears as before,
|
|
||||||
except that there is now a :guilabel:`Production` option under the :guilabel:`Purpose` section.
|
|
||||||
|
|
||||||
Select the :guilabel:`Production` option and then click :guilabel:`Upgrade` to begin the upgrade
|
|
||||||
process. As before, a notification email is sent to the email address provided and a red
|
|
||||||
:guilabel:`Upgrade in progress` tag appears next to the name of the database.
|
|
||||||
|
|
||||||
The production database is then taken offline and will be upgraded automatically. The time it takes
|
|
||||||
to upgrade the production database should be similar to the time that was necessary to upgrade the
|
|
||||||
test database. Make sure to inform database users of the scheduled downtime.
|
|
||||||
|
|
||||||
After the upgrade is finished, the :guilabel:`Upgrade in progress` tag disappears and the database
|
|
||||||
is upgraded to the version specified.
|
|
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 5.6 KiB |
Before Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 15 KiB |
@ -1,132 +0,0 @@
|
|||||||
=======
|
|
||||||
Odoo.sh
|
|
||||||
=======
|
|
||||||
|
|
||||||
.. _upgrade/odoo_sh/overview:
|
|
||||||
|
|
||||||
Overview
|
|
||||||
========
|
|
||||||
|
|
||||||
Odoo.sh is integrated with the upgrade platform to make the upgrade process easier.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
The :guilabel:`Upgrade` tab is available in the branches view. It is only available for valid
|
|
||||||
projects with a valid production build.
|
|
||||||
|
|
||||||
.. image:: odoo_sh/odoo-sh-menu.png
|
|
||||||
:align: center
|
|
||||||
:alt: Click on the upgrade menu
|
|
||||||
|
|
||||||
The suggested upgrade steps on Odoo.sh are:
|
|
||||||
|
|
||||||
#. On a :guilabel:`Development` branch, upgrade your custom modules to keep them compatible with the
|
|
||||||
new version and thoroughly **test them**.
|
|
||||||
#. Switch that branch to the :guilabel:`Staging` branch, **upgrade** the last daily production
|
|
||||||
backup and **test it**. Write upgrade scripts if necessary.
|
|
||||||
#. Trigger the production upgrade from your :guilabel:`Production` branch and sit tight.
|
|
||||||
|
|
||||||
.. seealso::
|
|
||||||
- :doc:`../../administration/upgrade`
|
|
||||||
- :doc:`Upgrade FAQ <../upgrade/faq>`
|
|
||||||
- :doc:`Introduction to Odoo.sh <../odoo_sh/overview/introduction>`
|
|
||||||
|
|
||||||
.. _upgrade/odoo_sh/custom-modules:
|
|
||||||
|
|
||||||
Upgrade your custom modules
|
|
||||||
===========================
|
|
||||||
|
|
||||||
The first step is to upgrade your custom modules to keep them compatible with the new version. Fork
|
|
||||||
your :guilabel:`Production` branch in the :guilabel:`Development` stage, then go to the settings of
|
|
||||||
your :guilabel:`Development` branch and select the Odoo version you target. If needed, modify your
|
|
||||||
code to be compatible with the new version. Make sure to **test** your features are still working
|
|
||||||
correctly.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
Depending on your contract, the upgrade of your custom modules can be done by yourself, by your
|
|
||||||
Partner or by Odoo (if you hold a subscription including maintenance of customizations).
|
|
||||||
|
|
||||||
.. _upgrade/odoo_sh/testing-phase:
|
|
||||||
|
|
||||||
Upgrade your database on a staging branch
|
|
||||||
=========================================
|
|
||||||
|
|
||||||
Take the upgraded development branch and drag & drop it to :guilabel:`Staging`.
|
|
||||||
|
|
||||||
Go to the :guilabel:`Upgrade` tab and select the :guilabel:`target version`. Then, click on
|
|
||||||
:guilabel:`Test Upgrade`.
|
|
||||||
|
|
||||||
.. image:: odoo_sh/odoo-sh-staging.png
|
|
||||||
:align: center
|
|
||||||
:alt: Odoo.sh project and tabs
|
|
||||||
|
|
||||||
The **latest production daily automatic backup** is sent to the
|
|
||||||
`upgrade platform <https://www.upgrade.odoo.com>`_ to start the upgrade test process.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
You can follow the upgrade process by going to the :guilabel:`Upgrade` menu of your
|
|
||||||
:guilabel:`Production` branch.
|
|
||||||
|
|
||||||
When the upgraded backup is ready on the `upgrade platform <https://www.upgrade.odoo.com>`_, it is
|
|
||||||
automatically downloaded back to your project.
|
|
||||||
|
|
||||||
The branch is now in a **special mode**: each time a **commit is pushed** on the branch, a
|
|
||||||
**restore operation** of the upgraded backup occurs, and an **update of all the custom modules**
|
|
||||||
happens. This allows you to quickly iterate on your custom modules upgrade scripts. The log file of
|
|
||||||
the upgrade process can be found at :file:`~/logs/upgrade.log` in your newly upgraded staging build.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
- The **special upgrade mode** is automatically closed after 30 days.
|
|
||||||
- It may happen that custom modules are no longer needed after an upgrade. Custom modules in the
|
|
||||||
upgraded database are set to be updated. If the modules are missing in the code, the update
|
|
||||||
fails, thus failing the whole process. An empty module with a manifest and possibly some custom
|
|
||||||
upgrade script are necessary to clean up the database. The complete removal of the module has
|
|
||||||
to be handled afterwards.
|
|
||||||
|
|
||||||
Functionally test your upgraded database
|
|
||||||
========================================
|
|
||||||
|
|
||||||
Now that the test upgraded database is available on your staging branch, **thoroughly test it** and
|
|
||||||
make sure everything runs as it's supposed to. Once you are satisfied with the result, you are ready
|
|
||||||
to upgrade your production database.
|
|
||||||
|
|
||||||
Production upgrade
|
|
||||||
==================
|
|
||||||
|
|
||||||
Once you are happy with your testing, you can start the process on the :guilabel:`Production`
|
|
||||||
branch.
|
|
||||||
|
|
||||||
On your :guilabel:`Production` branch, go to the :guilabel:`Upgrade` tab, select the
|
|
||||||
:guilabel:`targeted version` and click on the :guilabel:`start Upgrade` button.
|
|
||||||
|
|
||||||
.. image:: odoo_sh/odoo-sh-prod.png
|
|
||||||
:align: center
|
|
||||||
:alt: View from the upgrade tab
|
|
||||||
|
|
||||||
The actual process is **triggered as soon as you push a new commit** in your branch. Make sure you
|
|
||||||
are pushing code that is compatible with the new version. For example by merging the code from your
|
|
||||||
upgraded staging branch.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
You can see the progress of the upgrade by going to the :guilabel:`Upgrade` tab of the main
|
|
||||||
branch.
|
|
||||||
|
|
||||||
.. image:: odoo_sh/odoo-sh-progress.png
|
|
||||||
:align: center
|
|
||||||
:alt: View showing the progress of the upgrade
|
|
||||||
|
|
||||||
.. important::
|
|
||||||
Your database is unavailable throughout the process.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
If anything goes wrong, the platform automatically reverts the upgrade, the same as it would be
|
|
||||||
for a regular update. In case of success, a backup is always made.
|
|
||||||
|
|
||||||
The update of your custom modules must be successful to complete the entire upgrade process. Make
|
|
||||||
sure the status of your staging upgrade is :guilabel:`successful` before trying it in production.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
It may happen that custom modules are no longer needed after an upgrade. Custom modules in the
|
|
||||||
upgraded database are set to be updated. If the modules are missing in the code, the update
|
|
||||||
fails, thus failing the whole process. An empty module with a manifest and possibly some custom
|
|
||||||
upgrade script are necessary to clean up the database. The complete removal of the module has to
|
|
||||||
be handled afterwards.
|
|
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 31 KiB |
@ -1,76 +0,0 @@
|
|||||||
==========
|
|
||||||
On-Premise
|
|
||||||
==========
|
|
||||||
|
|
||||||
Test upgrade request
|
|
||||||
====================
|
|
||||||
|
|
||||||
There are two ways to create your upgrade request.
|
|
||||||
|
|
||||||
Upgrade request via command line
|
|
||||||
--------------------------------
|
|
||||||
|
|
||||||
For technically-advanced users and partners, the upgrade process can be initiated via the following
|
|
||||||
command line on the server where the database is hosted:
|
|
||||||
|
|
||||||
:command:`python <(curl -s https://upgrade.odoo.com/upgrade) test -d <your db name> -t
|
|
||||||
<target version>`
|
|
||||||
|
|
||||||
The above command creates the database dump, sends it to the upgrade platform, and initiates the
|
|
||||||
automated upgrade process. During the upgrade, you can follow the live logs on your screen.
|
|
||||||
Once the upgrade process is completed successfully, the upgraded database is restored onto the
|
|
||||||
server (as a duplicate test database).
|
|
||||||
|
|
||||||
Upgrade request via the Odoo Upgrade Portal
|
|
||||||
-------------------------------------------
|
|
||||||
|
|
||||||
#. Download a recent copy of your database and select the option :guilabel:`pg_dump custom format
|
|
||||||
(without filestore)`.
|
|
||||||
#. Upload this dump file at https://upgrade.odoo.com and select *Testing* as the aim.
|
|
||||||
Odoo performs the automated upgrade process. Once it is completed, you receive an email with a
|
|
||||||
link to download the upgrade database dump file.
|
|
||||||
#. Import the upgraded database into your on-premise environment and manually test all processes and
|
|
||||||
workflows.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
- For security reasons, only the person who submitted the upgrade request is able to download it.
|
|
||||||
- Any problem found during testing should be reported via the `helpdesk
|
|
||||||
<https://odoo.com/help>`_.
|
|
||||||
- For storage reasons, the copy of your database is submitted without a filestore to the upgrade
|
|
||||||
server. Therefore, the upgraded database does not contain the production filestore.
|
|
||||||
- Before restoring the upgraded database, its filestore must be merged with the production
|
|
||||||
filestore to be able to perform tests in the same conditions as it would be in the new version.
|
|
||||||
- The upgraded database contains:
|
|
||||||
|
|
||||||
- A `dump.sql` file containing the upgraded database.
|
|
||||||
- A `filestore` folder containing files that were extracted from in-database records into
|
|
||||||
attachments (if there are any) and new standard Odoo files from the targeted Odoo version
|
|
||||||
(like new images, icons, payment provider's logos, etc.). This is the folder that should be
|
|
||||||
merged with the production filestore in order to get the full upgraded filestore.
|
|
||||||
|
|
||||||
Upgrade your production database
|
|
||||||
================================
|
|
||||||
|
|
||||||
Once you have completed the testing successfully, you can proceed to upgrade your live database in
|
|
||||||
production. Download your upgraded database from the link in the email and import it onto your live
|
|
||||||
environment.
|
|
||||||
|
|
||||||
.. important::
|
|
||||||
- Same as in the test phase, when requesting an upgrade for production purposes, the copy of your
|
|
||||||
database is submitted without a filestore.
|
|
||||||
- Therefore, the upgraded database filestore must be merged with the production filestore before
|
|
||||||
deploying the new version.
|
|
||||||
|
|
||||||
Custom modules (if applicable)
|
|
||||||
==============================
|
|
||||||
|
|
||||||
The upgrade of a database that contains custom modules is a two-step process.
|
|
||||||
|
|
||||||
#. The standard upgrade is done when your upgrade request is completed.
|
|
||||||
#. Your custom modules also need to be upgraded to keep them compatible with the new version.
|
|
||||||
|
|
||||||
Depending on your contract, the upgrade of your custom modules can be done
|
|
||||||
|
|
||||||
#. by yourself.
|
|
||||||
#. by your Partner.
|
|
||||||
#. by Odoo (if you hold a subscription to 'Maintenance of Customizations').
|
|
BIN
content/administration/upgrade/rr-upgrade-message.png
Normal file
After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 8.0 KiB |
Before Width: | Height: | Size: 6.0 KiB |
BIN
content/administration/upgrade/upgrade-popup.png
Normal file
After Width: | Height: | Size: 17 KiB |
@ -14,6 +14,7 @@ Discover our user guides and configuration tutorials per application.
|
|||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
|
applications/essentials
|
||||||
applications/finance
|
applications/finance
|
||||||
applications/sales
|
applications/sales
|
||||||
applications/websites
|
applications/websites
|
||||||
@ -22,4 +23,5 @@ Discover our user guides and configuration tutorials per application.
|
|||||||
applications/marketing
|
applications/marketing
|
||||||
applications/services
|
applications/services
|
||||||
applications/productivity
|
applications/productivity
|
||||||
|
applications/studio
|
||||||
applications/general
|
applications/general
|
||||||
|
13
content/applications/essentials.rst
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
===============
|
||||||
|
Odoo essentials
|
||||||
|
===============
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
|
||||||
|
essentials/activities
|
||||||
|
essentials/reporting
|
||||||
|
essentials/search
|
||||||
|
essentials/contacts
|
||||||
|
essentials/export_import_data
|
||||||
|
essentials/in_app_purchase
|
||||||
|
essentials/keyboard_shortcuts
|
345
content/applications/essentials/activities.rst
Normal file
@ -0,0 +1,345 @@
|
|||||||
|
==========
|
||||||
|
Activities
|
||||||
|
==========
|
||||||
|
|
||||||
|
.. |clock| replace:: :icon:`fa-clock-o` :guilabel:`(clock)` icon
|
||||||
|
|
||||||
|
*Activities* are follow-up tasks tied to a record in an Odoo database.
|
||||||
|
|
||||||
|
.. _activities/important:
|
||||||
|
|
||||||
|
The icon used to display activities varies, depending on the :ref:`activity type
|
||||||
|
<activities/types>`:
|
||||||
|
|
||||||
|
- :icon:`fa-clock-o` :guilabel:`(clock)` icon: the default activities icon.
|
||||||
|
- :icon:`fa-phone` :guilabel:`(phone)` icon: a phone call is scheduled.
|
||||||
|
- :icon:`fa-envelope` :guilabel:`(envelope)` icon: an email is scheduled.
|
||||||
|
- :icon:`fa-check` :guilabel:`(check)` icon: a "to-do" is scheduled.
|
||||||
|
- :icon:`fa-users` :guilabel:`(people)` icon: a meeting is scheduled.
|
||||||
|
- :icon:`fa-upload` :guilabel:`(upload)` icon: a document is scheduled to be uploaded.
|
||||||
|
- :icon:`fa-pencil-square-o` :guilabel:`(request signature)` icon: a signature request is scheduled.
|
||||||
|
|
||||||
|
Schedule activities
|
||||||
|
===================
|
||||||
|
|
||||||
|
Activities can be scheduled on any page of the database that contains a :ref:`chatter
|
||||||
|
<activities/chatter>` thread, :ref:`Kanban view <activities/kanban>`, :ref:`list view
|
||||||
|
<activities/list>`, or :ref:`activities view <activities/activity>` of an application.
|
||||||
|
|
||||||
|
.. _activities/chatter:
|
||||||
|
|
||||||
|
Chatter
|
||||||
|
-------
|
||||||
|
|
||||||
|
Activities can be created from the chatter on any record.
|
||||||
|
|
||||||
|
To schedule a new activity, click the :guilabel:`Activities` button, located at the top of the
|
||||||
|
chatter. In the :guilabel:`Schedule Activity` pop-up window that appears, :ref:`fill out the
|
||||||
|
Schedule Activity form <activities/form>`.
|
||||||
|
|
||||||
|
.. image:: activities/chatter.png
|
||||||
|
:align: center
|
||||||
|
:alt: New activity type form.
|
||||||
|
|
||||||
|
.. _activities/kanban:
|
||||||
|
|
||||||
|
Kanban view
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Activities can also be created from the :icon:`oi-view-kanban` :guilabel:`(Kanban)` view.
|
||||||
|
|
||||||
|
To do so, click on the |clock| located at the bottom of an individual record.
|
||||||
|
|
||||||
|
Click :guilabel:`+ Schedule An Activity`, then proceed to :ref:`fill out the Schedule Activity form
|
||||||
|
<activities/form>`.
|
||||||
|
|
||||||
|
.. image:: activities/schedule-kanban-activity.png
|
||||||
|
:align: center
|
||||||
|
:alt: Kanban view of the CRM pipeline and the option to schedule an activity.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If a record already has a scheduled activity, the |clock| is replaced by the icon that represents
|
||||||
|
the existing scheduled activity. Click on the activity type's icon to schedule another activity.
|
||||||
|
|
||||||
|
.. _activities/list:
|
||||||
|
|
||||||
|
List view
|
||||||
|
---------
|
||||||
|
|
||||||
|
Activities can also be created from a :icon:`oi-view-list` :guilabel:`(list)` view.
|
||||||
|
|
||||||
|
If the :guilabel:`Activities` column is hidden, reveal it using the :icon:`oi-settings-adjust`
|
||||||
|
:guilabel:`(settings adjust)` icon in the far-right of the top row.
|
||||||
|
|
||||||
|
Then, click on the |clock| for the record the activity is being added to, and click :guilabel:`+
|
||||||
|
Schedule an activity`. Proceed to :ref:`fill out the Schedule Activity form <activities/form>` that
|
||||||
|
appears.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If a record already has a scheduled activity, the |clock| is replaced by the icon that represents
|
||||||
|
the existing scheduled activity. Click on the activity type's icon to schedule another activity.
|
||||||
|
|
||||||
|
.. image:: activities/schedule-list-activity.png
|
||||||
|
:align: center
|
||||||
|
:alt: List view of the CRM pipeline and the option to schedule an activity.
|
||||||
|
|
||||||
|
.. _activities/activity:
|
||||||
|
|
||||||
|
Activity view
|
||||||
|
-------------
|
||||||
|
|
||||||
|
Most applications in Odoo have an *Activity* view available. If available, a |clock| is visible in
|
||||||
|
the top-right corner of the main menu bar, amongst the other view option icons.
|
||||||
|
|
||||||
|
To open the activity view, click the |clock|.
|
||||||
|
|
||||||
|
.. image:: activities/activities.png
|
||||||
|
:align: center
|
||||||
|
:alt: Top-right menu with the Activities icon called out.
|
||||||
|
|
||||||
|
In this view, all the available activities are listed in the columns, while the horizontal entries
|
||||||
|
represent all the individual records.
|
||||||
|
|
||||||
|
Activities that appear green have a due date in the future, activities that appear orange are due
|
||||||
|
today, while activities appearing red are overdue.
|
||||||
|
|
||||||
|
Color bars in each column represent records for specific activity types, and display a number
|
||||||
|
indicating how many activities are scheduled for that type.
|
||||||
|
|
||||||
|
If multiple activity types are scheduled for a record, a number appears in the box, indicating the
|
||||||
|
total number of scheduled activities.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Activity colors, and their relation to an activity's due date, are consistent throughout Odoo,
|
||||||
|
regardless of the activity type, or the view.
|
||||||
|
|
||||||
|
To schedule an activity for a record, hover over the corresponding field. Click the :icon:`fa-plus`
|
||||||
|
:guilabel:`(plus)` icon that appears, and then :ref:`fill out the Schedule Activity form
|
||||||
|
<activities/form>`.
|
||||||
|
|
||||||
|
.. image:: activities/activity-view.png
|
||||||
|
:align: center
|
||||||
|
:alt: Activity view of the CRM pipeline and the option to schedule an activity.
|
||||||
|
|
||||||
|
.. _activities/form:
|
||||||
|
|
||||||
|
Schedule Activity form
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Activities can be scheduled from many different places, such as from the :ref:`chatter
|
||||||
|
<activities/chatter>` of a record, or from one of multiple views in an application, when available:
|
||||||
|
the :ref:`Kanban view <activities/kanban>`, :ref:`list view <activities/list>`, or :ref:`activity
|
||||||
|
view <activities/activity>`.
|
||||||
|
|
||||||
|
Enter the following information on the form:
|
||||||
|
|
||||||
|
- :guilabel:`Activity Type`: select the type of activity from the drop-down menu. The default
|
||||||
|
options are: :guilabel:`Email`, :guilabel:`Call`, :guilabel:`Meeting`, or :guilabel:`To-Do`.
|
||||||
|
Depending on what other applications are installed, additional options may be available.
|
||||||
|
- :guilabel:`Summary`: enter a short title for the activity, such as `Discuss Proposal`.
|
||||||
|
- :guilabel:`Due Date`: using the calendar popover, select the activity's deadline.
|
||||||
|
- :guilabel:`Assigned to`: by default, the current user populates this field. To assign a different
|
||||||
|
user to the activity, select them from the drop-down menu.
|
||||||
|
- :guilabel:`Notes`: add any additional information for the activity in this field.
|
||||||
|
|
||||||
|
When the :guilabel:`Schedule Activity` pop-up window is completed, click one of the following
|
||||||
|
buttons:
|
||||||
|
|
||||||
|
- :guilabel:`Open Calendar`: opens the user's calendar to add and schedule the activity.
|
||||||
|
|
||||||
|
Click on the desired date and time for the activity, and a :guilabel:`New Event` pop-up window
|
||||||
|
appears. The summary from the *Schedule Activity* pop-up window populates the :guilabel:`Title`
|
||||||
|
field.
|
||||||
|
|
||||||
|
Enter the information in the :guilabel:`New Event` pop-up window, then click :guilabel:`Save &
|
||||||
|
Close` to schedule it. Once scheduled, the activity is added to the chatter under the
|
||||||
|
:guilabel:`Planned Activities` section.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
The :guilabel:`Open Calendar` button **only** appears if the :guilabel:`Activity Type` is set
|
||||||
|
to either :guilabel:`Call` or :guilabel:`Meeting`.
|
||||||
|
|
||||||
|
- :guilabel:`Schedule`: schedules the activity, and adds the activity to the chatter under
|
||||||
|
:guilabel:`Planned Activities`.
|
||||||
|
- :guilabel:`Schedule & Mark as Done`: adds the details of the activity to the chatter under
|
||||||
|
:guilabel:`Today`. The activity is not scheduled, and is automatically marked as done.
|
||||||
|
- :guilabel:`Done & Schedule Next`: adds the details of the activity to the chatter under
|
||||||
|
:guilabel:`Today`. The activity is not scheduled, is automatically marked as done, and a new
|
||||||
|
:guilabel:`Schedule Activity` pop-up window appears.
|
||||||
|
- :guilabel:`Cancel`: discards any changes made on the :guilabel:`Schedule Activity` pop-up window.
|
||||||
|
|
||||||
|
.. image:: activities/schedule-pop-up.png
|
||||||
|
:align: center
|
||||||
|
:alt: View of CRM leads and the option to schedule an activity.
|
||||||
|
|
||||||
|
.. _activities/all:
|
||||||
|
|
||||||
|
All scheduled activities
|
||||||
|
========================
|
||||||
|
|
||||||
|
To view a consolidated list of activities, organized by application, click the |clock| in the header
|
||||||
|
menu, located in the top-right corner.
|
||||||
|
|
||||||
|
If any activities are scheduled, the number of activities appear in a red bubble on the
|
||||||
|
|clock|.
|
||||||
|
|
||||||
|
All activities for each application are further divided into subsections, indicating where in the
|
||||||
|
application the activity is to be completed. Each sub-section lists the number of scheduled
|
||||||
|
activities that are :guilabel:`Late`, due :guilabel:`Today`, and scheduled in the
|
||||||
|
:guilabel:`Future`.
|
||||||
|
|
||||||
|
.. example::
|
||||||
|
In the *Time Off* application, one activity is scheduled to be done in the *All Time Off*
|
||||||
|
requests dashboard, and six activities are scheduled to be done in the *Allocations* dashboard.
|
||||||
|
|
||||||
|
These requests appear in two separate lists in the all activities drop-down menu: one labeled
|
||||||
|
`Time Off` and one labeled `Time Off Allocation`.
|
||||||
|
|
||||||
|
.. image:: activities/activities-menu.png
|
||||||
|
:align: center
|
||||||
|
:alt: The list of activities that is accessed from the main menu bar. Two entries for the Time
|
||||||
|
Off application are highlighted.
|
||||||
|
|
||||||
|
Request a document
|
||||||
|
------------------
|
||||||
|
|
||||||
|
The option to :guilabel:`Request a Document` is available at the bottom of the list of :ref:`all
|
||||||
|
scheduled activities <activities/all>`, the option to :guilabel:`Request a Document` appears. Click
|
||||||
|
:guilabel:`Request a Document`, and a :guilabel:`Request a file` pop-up window appears.
|
||||||
|
|
||||||
|
Enter the following information on the form:
|
||||||
|
|
||||||
|
- :guilabel:`Document Name`: enter a name for the document being requested.
|
||||||
|
- :guilabel:`Request To`: select the user the document is being requested from using the drop-down
|
||||||
|
menu.
|
||||||
|
- :guilabel:`Due Date In`: enter a numerical value indicating when the document is due. Next to
|
||||||
|
this field, a :guilabel:`Days` field is visible. Click :guilabel:`Days`, the default option, to
|
||||||
|
reveal a drop-down menu. Select the desired time-frame option from the list. The options are
|
||||||
|
:guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`.
|
||||||
|
- :guilabel:`Workspace`: using the drop-down menu, select the specific :ref:`Workspace
|
||||||
|
<documents/workspaces>` the document is being uploaded to.
|
||||||
|
- :guilabel:`Tags`: select any desired tags from the drop-down menu. The available tags displayed
|
||||||
|
are based on the tags configured for the selected :guilabel:`Workspace`.
|
||||||
|
- :guilabel:`Message`: enter a message to clarify the document request in this field.
|
||||||
|
|
||||||
|
When all the fields are completed, click :guilabel:`Request` to send the document request.
|
||||||
|
|
||||||
|
.. image:: activities/request-doc.png
|
||||||
|
:align: center
|
||||||
|
:alt: The Request a file form, with all fields filled out to request a contract.
|
||||||
|
|
||||||
|
.. _activities/types:
|
||||||
|
|
||||||
|
Activity types
|
||||||
|
==============
|
||||||
|
|
||||||
|
To view the currently configured types of activities in the database, navigate to
|
||||||
|
:menuselection:`Settings app --> Discuss section --> Activities setting --> Activity Types`.
|
||||||
|
|
||||||
|
.. image:: activities/settings-activities-types.png
|
||||||
|
:align: center
|
||||||
|
:alt: Activity Types button in the Settings application under the Discuss section.
|
||||||
|
|
||||||
|
Doing so reveals the :guilabel:`Activity Types` page, where the existing activity types are found.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
Individual applications have a list of *Activity Types* dedicated to that application. For
|
||||||
|
example, to view and edit the activities available for the *CRM* application, go to
|
||||||
|
:menuselection:`CRM app --> Configuration --> Activity Types`.
|
||||||
|
|
||||||
|
.. image:: activities/activity-list.png
|
||||||
|
:align: center
|
||||||
|
:alt: The list of activity types already configured and available.
|
||||||
|
|
||||||
|
Edit activity types
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
To edit an existing :ref:`activity type <activities/types>`, click on the activity type, and the
|
||||||
|
activity type form loads.
|
||||||
|
|
||||||
|
Make any desired changes to the activity type form. The form automatically saves, but it can be
|
||||||
|
saved manually at any time by clicking the :guilabel:`Save Manually` option, represented by a
|
||||||
|
:icon:`fa-cloud-upload` :guilabel:`(cloud upload)` icon, located in the top-left corner of the page.
|
||||||
|
|
||||||
|
Create new activity types
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
To create a new :ref:`activity type <activities/types>`, click :guilabel:`New` from the
|
||||||
|
:guilabel:`Activity Types` page, and a blank activity type form loads.
|
||||||
|
|
||||||
|
Enter a :guilabel:`Name` for the activity type at the top of the form, then enter the following
|
||||||
|
information on the form.
|
||||||
|
|
||||||
|
Activity Settings section
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- :guilabel:`Action`: using the drop-down menu, select an action associated with this new activity
|
||||||
|
type. Some actions trigger specific behaviors after an activity is scheduled, such as:
|
||||||
|
|
||||||
|
- :guilabel:`Upload Document`: if selected, a link to upload a document is automatically added to
|
||||||
|
the planned activity in the chatter.
|
||||||
|
- :guilabel:`Call` or :guilabel:`Meeting`: if selected, users have the option to open their
|
||||||
|
calendar to select a date and time for the activity.
|
||||||
|
- :guilabel:`Request Signature`: if selected, a link to open a signature request pop-up window is
|
||||||
|
automatically added to the planned activity in the chatter. This requires the Odoo *Sign*
|
||||||
|
application to be installed.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Available activity types vary based on the installed applications in the database.
|
||||||
|
|
||||||
|
- :guilabel:`Folder`: select a specific :ref:`workspace <documents/workspaces>` folder to save a
|
||||||
|
document to. This field **only** appears if :guilabel:`Upload Document` is selected for the
|
||||||
|
:guilabel:`Action`.
|
||||||
|
|
||||||
|
Using the drop-down menu, select the :guilabel:`Folder` the document is saved to.
|
||||||
|
|
||||||
|
- :guilabel:`Default User`: select a user from the drop-down menu to automatically assign this
|
||||||
|
activity to the selected user when this activity type is scheduled. If this field is left blank,
|
||||||
|
the activity is assigned to the user who creates the activity.
|
||||||
|
- :guilabel:`Default Summary`: enter a note to include whenever this activity type is created.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The information in the :guilabel:`Default User` and :guilabel:`Default Summary` fields are
|
||||||
|
included when an activity is created. However, they can be altered before the activity is
|
||||||
|
scheduled or saved.
|
||||||
|
|
||||||
|
- :guilabel:`Keep Done`: tick this checkbox to keep activities that have been marked as `Done`
|
||||||
|
visible in the :ref:`activity view <activities/activity>`.
|
||||||
|
- :guilabel:`Default Note`: enter any notes to appear with the activity.
|
||||||
|
|
||||||
|
Next Activity section
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
It is possible to have another activity either suggested or triggered. To do so, configure the
|
||||||
|
:guilabel:`Next Activity` section.
|
||||||
|
|
||||||
|
- :guilabel:`Chaining Type`: select either :guilabel:`Suggest Next Activity` or :guilabel:`Trigger
|
||||||
|
Next Activity` from the drop-down menu. Depending on the selected option, either the
|
||||||
|
:guilabel:`Suggest` or :guilabel:`Trigger` field is displayed.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The :guilabel:`Chaining Type` field does **not** appear if :guilabel:`Upload Document` is
|
||||||
|
selected for the :guilabel:`Action`.
|
||||||
|
|
||||||
|
- :guilabel:`Suggest/Trigger`: depending on what is selected for the :guilabel:`Chaining Type`, this
|
||||||
|
field either displays :guilabel:`Suggest` or :guilabel:`Trigger`. Using the drop-down menu, select
|
||||||
|
the activity to recommend or schedule as a follow-up task to the activity type.
|
||||||
|
- :guilabel:`Schedule`: configure when the next activity is suggested or triggered.
|
||||||
|
|
||||||
|
First, enter a numerical value indicating when the activity is suggested or triggered.
|
||||||
|
|
||||||
|
Next to this field, a :guilabel:`Days` field is visible. Click :guilabel:`Days`, the default
|
||||||
|
option, to reveal a drop-down menu. Select the desired time-frame option from the list. The
|
||||||
|
options are :guilabel:`Days`, :guilabel:`Weeks`, or :guilabel:`Months`.
|
||||||
|
|
||||||
|
Lastly, using the drop-down menu, select whether the activity is scheduled or triggered either
|
||||||
|
:guilabel:`after previous activity deadline` or :guilabel:`after completion date`.
|
||||||
|
|
||||||
|
.. image:: activities/new-activity.png
|
||||||
|
:align: center
|
||||||
|
:alt: A new Activity form with all the fields filled out.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
- :doc:`../productivity/discuss`
|
||||||
|
- :doc:`../productivity/discuss/team_communication`
|
||||||
|
- :doc:`../sales/crm/optimize/utilize_activities`
|
BIN
content/applications/essentials/activities/activities-menu.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
content/applications/essentials/activities/activities.png
Normal file
After Width: | Height: | Size: 5.6 KiB |
BIN
content/applications/essentials/activities/activity-list.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
content/applications/essentials/activities/activity-view.png
Normal file
After Width: | Height: | Size: 30 KiB |
BIN
content/applications/essentials/activities/chatter.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
content/applications/essentials/activities/new-activity.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
content/applications/essentials/activities/request-doc.png
Normal file
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 26 KiB |
BIN
content/applications/essentials/activities/schedule-pop-up.png
Normal file
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 26 KiB |
263
content/applications/essentials/contacts.rst
Normal file
@ -0,0 +1,263 @@
|
|||||||
|
:show-content:
|
||||||
|
|
||||||
|
========
|
||||||
|
Contacts
|
||||||
|
========
|
||||||
|
|
||||||
|
The *Contacts* application comes installed on all Odoo databases. Contacts are created for customers
|
||||||
|
the company does business with through Odoo. A contact is a repository of vital business
|
||||||
|
information, facilitating communication and business transactions.
|
||||||
|
|
||||||
|
Contact form
|
||||||
|
============
|
||||||
|
|
||||||
|
To create a new contact, navigate to the :menuselection:`Contacts app`, and click
|
||||||
|
:guilabel:`Create`. A new form appears where various contact information can be added.
|
||||||
|
|
||||||
|
Contact type
|
||||||
|
------------
|
||||||
|
|
||||||
|
Odoo allows for both :guilabel:`Individual` and :guilabel:`Company` contacts. Select either
|
||||||
|
:guilabel:`Individual` or :guilabel:`Company`, depending on the type of contact that is being added.
|
||||||
|
|
||||||
|
Name
|
||||||
|
----
|
||||||
|
|
||||||
|
First, fill in the name of the :guilabel:`Individual` or :guilabel:`Company`. This is how the name
|
||||||
|
appears throughout the database. This field is **mandatory**.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
:guilabel:`Individual` contacts can have a :guilabel:`Company` contact linked to it. After
|
||||||
|
selecting :guilabel:`Individual`, a new :guilabel:`Company Name...` field appears below the
|
||||||
|
first name field.
|
||||||
|
|
||||||
|
Address
|
||||||
|
-------
|
||||||
|
|
||||||
|
Next, enter the :guilabel:`Address` of the :guilabel:`Company` or :guilabel:`Individual`.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
If the :guilabel:`Individual` option is chosen, then the *type of address* can be chosen from a
|
||||||
|
drop-down menu. Options for this drop-down menu include: :guilabel:`Contact`, :guilabel:`Invoice
|
||||||
|
Address`, :guilabel:`Delivery Address`, :guilabel:`Other Address`, and :guilabel:`Private
|
||||||
|
Address`.
|
||||||
|
|
||||||
|
Additional fields
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Additional details are included on the initial form. The following fields are available:
|
||||||
|
|
||||||
|
- :guilabel:`VAT`: Value Added Tax number.
|
||||||
|
- :guilabel:`Citizen Identification`: citizen or government identification number (only available
|
||||||
|
on :guilabel:`Individual`).
|
||||||
|
- :guilabel:`Job Position`: list the job position of the :guilabel:`Individual` (only available on
|
||||||
|
:guilabel:`Individual`).
|
||||||
|
- :guilabel:`Phone`: list phone number (with country code). Make a call, send an SMS, or WhatsApp
|
||||||
|
message by hovering over the field on the saved form, and clicking the desired option.
|
||||||
|
- :guilabel:`Mobile`: list mobile phone number (with country code). Make a call, send an SMS, or
|
||||||
|
WhatsApp message by hovering over the field on the saved form, and clicking on the desired option.
|
||||||
|
- :guilabel:`Email`: enter the email address with the domain.
|
||||||
|
- :guilabel:`Website`: enter the full website address, starting with `http` or `https`.
|
||||||
|
- :guilabel:`Title`: select :guilabel:`Doctor`, :guilabel:`Madam`, :guilabel:`Miss`,
|
||||||
|
:guilabel:`Mister`, :guilabel:`Professor`, or create a new one directly from this field.
|
||||||
|
- :guilabel:`Tags`: enter preconfigured tags by typing them in the field, or clicking the drop-down
|
||||||
|
menu, and selecting one. To create a new one, type the new tag in the field, and click
|
||||||
|
:guilabel:`Create` from the resulting drop-down menu.
|
||||||
|
|
||||||
|
Contacts & Addresses tab
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
At the bottom of the contact form are several tabs. On the :guilabel:`Contacts & Addresses` tab,
|
||||||
|
contacts can be added that are associated with a :guilabel:`Company` and related addresses. For
|
||||||
|
example, a specific contact person for the company can be listed here.
|
||||||
|
|
||||||
|
Multiple addresses can be added on both :guilabel:`Individual` and :guilabel:`Company` contacts. To
|
||||||
|
do so, click :guilabel:`Add` in the :guilabel:`Contacts & Addresses` tab. Doing so reveals a
|
||||||
|
:guilabel:`Create Contact` pop-up form, in which additional addresses can be configured.
|
||||||
|
|
||||||
|
.. image:: contacts/contact-form-add-address.png
|
||||||
|
:align: center
|
||||||
|
:alt: Add a contact/address to the contact form.
|
||||||
|
|
||||||
|
On the :guilabel:`Create Contact` pop-up form, start by clicking the default :guilabel:`Other
|
||||||
|
Address` field at the top to reveal a drop-down menu of address-related options.
|
||||||
|
|
||||||
|
Select any of the following options:
|
||||||
|
|
||||||
|
- :guilabel:`Contact`: adds another contact to the existing contact form.
|
||||||
|
- :guilabel:`Invoice Address`: adds a specific invoice address to the existing contact form.
|
||||||
|
- :guilabel:`Delivery Address`: adds a specific delivery address to the existing contact form.
|
||||||
|
- :guilabel:`Other Address`: adds an alternate address to the existing contact form.
|
||||||
|
- :guilabel:`Private Address`: adds a private address to the existing contact form.
|
||||||
|
|
||||||
|
.. image:: contacts/create-contact-window.png
|
||||||
|
:align: center
|
||||||
|
:alt: Create a new contact/address on a contact form.
|
||||||
|
|
||||||
|
Once an option is selected, enter the corresponding contact information that should be used for the
|
||||||
|
specified address type.
|
||||||
|
|
||||||
|
Add the :guilabel:`Contact Name`, :guilabel:`Address`, :guilabel:`Email`, along with the
|
||||||
|
:guilabel:`Phone` and/or :guilabel:`Mobile` numbers below.
|
||||||
|
|
||||||
|
Set the :guilabel:`Job Position`, which appears if the :guilabel:`Contact` address type has been
|
||||||
|
selected. This is similar to the :guilabel:`Individual` contact.
|
||||||
|
|
||||||
|
To add a note, click on the text field next to :guilabel:`Notes`, and write anything that is
|
||||||
|
applicable to the customer or contact.
|
||||||
|
|
||||||
|
Then, click :guilabel:`Save & Close` to save the address, and close the :guilabel:`Create Contact`
|
||||||
|
window. Or, click :guilabel:`Save & New` to save the address, and immediately input another one.
|
||||||
|
|
||||||
|
Sales & Purchase tab
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
Next, is the :guilabel:`Sales & Purchases` tab, which only appears when the *Sales*, *Purchase*,
|
||||||
|
**or** *Point of Sale* applications are installed.
|
||||||
|
|
||||||
|
The :guilabel:`Fiscal Position` can be set on the :guilabel:`Sales & Purchases` tab. Select a
|
||||||
|
:guilabel:`Fiscal Position` from the drop-down menu.
|
||||||
|
|
||||||
|
Sales section
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Under the :guilabel:`Sales` heading, a specific :guilabel:`Salesperson` can be assigned to a
|
||||||
|
contact. To do that, click the :guilabel:`Salesperson` drop-down field, and select one. Create a new
|
||||||
|
:guilabel:`Salesperson` by typing the user's name, and making the appropriate selection.
|
||||||
|
|
||||||
|
Certain :guilabel:`Payment Terms`, or a certain :guilabel:`Pricelist`, can also be set, if needed.
|
||||||
|
Click the drop-down menu next to :guilabel:`Payment Terms`, and change it to one of the preselected
|
||||||
|
:guilabel:`Payment Terms`, or :guilabel:`Create` a new one. Select the :guilabel:`Pricelist`
|
||||||
|
drop-down menu to choose the appropriate :guilabel:`Pricelist`.
|
||||||
|
|
||||||
|
Click into the :guilabel:`Delivery Method` field to select an option from the drop-down menu.
|
||||||
|
|
||||||
|
Point Of Sale section
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Under the :guilabel:`Point Of Sale` heading, enter a :guilabel:`Barcode` that can be used to
|
||||||
|
identify the contact. Use the :guilabel:`Loyalty Points` field to track points the user won as part
|
||||||
|
of a *Loyalty Program*.
|
||||||
|
|
||||||
|
Purchase section
|
||||||
|
~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Specify :guilabel:`Payment Terms`, :guilabel:`1099 Box` information, and a preferred
|
||||||
|
:guilabel:`Payment Method` here. A :guilabel:`Receipt Reminder` can be set here, as well.
|
||||||
|
|
||||||
|
Misc section
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Under the :guilabel:`Misc.` heading, use :guilabel:`Reference` field to add any additional
|
||||||
|
information for this contact. If this contact should only be accessible for one company in a
|
||||||
|
multi-company database, select it from the :guilabel:`Company` field drop-down list. Use the
|
||||||
|
:guilabel:`Website` drop-down menu to restrict the publishing of this contact to one website (if
|
||||||
|
working on a database with multiple websites). Select one or more :guilabel:`Website Tags` to assist
|
||||||
|
in filtering published customers on the `/customers` website page. Select an :guilabel:`Industry`
|
||||||
|
for this contact from the drop-down menu. Use the :guilabel:`SLA Policies` field to assign a
|
||||||
|
*Helpdesk* SLA policy to this contact.
|
||||||
|
|
||||||
|
Accounting tab
|
||||||
|
--------------
|
||||||
|
|
||||||
|
The :guilabel:`Accounting` tab appears when the *Accounting* application is installed. Here, a user
|
||||||
|
can add any related :guilabel:`Bank Accounts`, or set default :guilabel:`Accounting entries`.
|
||||||
|
|
||||||
|
Under the :guilabel:`Miscellaneous` heading, use the :guilabel:`LEI` field to enter a Legal Entity
|
||||||
|
Identifier, if necessary.
|
||||||
|
|
||||||
|
Internal Notes tab
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Following the :guilabel:`Accounting` tab is the :guilabel:`Internal Notes` tab, where notes can be
|
||||||
|
left on this contact form, just like on the contact form noted above.
|
||||||
|
|
||||||
|
Partner Assignment tab
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
Next is the :guilabel:`Partner Assignment` tab, which by default, includes a :guilabel:`Geolocation`
|
||||||
|
section, and other partner options, including :guilabel:`Partner Activation` and :guilabel:`Partner
|
||||||
|
Review` configurations. These are **only** present when the *Resellers* module is installed.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
Follow the :doc:`Resellers documentation <../sales/crm/track_leads/resellers>` for more
|
||||||
|
information on publishing partners on the website.
|
||||||
|
|
||||||
|
Membership tab
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Finally, there is the :guilabel:`Membership` tab on contact forms, which can help users manage any
|
||||||
|
memberships that are being offered to this specific contact. It should be noted that this tab
|
||||||
|
**only** appears when the *Members* application is installed.
|
||||||
|
|
||||||
|
Activate membership
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
To activate a contact's membership, click :guilabel:`Buy Membership` in the :guilabel:`Membership`
|
||||||
|
tab of a contact form. On the pop-up window that appears, select a :guilabel:`Membership` from the
|
||||||
|
drop-down menu. Then, configure a :guilabel:`Member Price`. Click :guilabel:`Invoice Membership`
|
||||||
|
when both fields are filled in.
|
||||||
|
|
||||||
|
Alternatively, to offer a free membership, tick the :guilabel:`Free Member` checkbox, in the
|
||||||
|
:guilabel:`Membership` tab of a contact form.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
Follow the :doc:`Members documentation <../sales/members>` for more information on publishing
|
||||||
|
members on the website.
|
||||||
|
|
||||||
|
Smart buttons
|
||||||
|
=============
|
||||||
|
|
||||||
|
At the top of the contact form, there are some additional options available, known as *smart
|
||||||
|
buttons*.
|
||||||
|
|
||||||
|
Here, Odoo displays a variety of records, related to this contact, that were created on other apps.
|
||||||
|
Odoo integrates information from every single app, so there are many smart buttons.
|
||||||
|
|
||||||
|
.. example::
|
||||||
|
For example, there is an :guilabel:`Opportunities` smart button, where all the opportunities
|
||||||
|
related to this customer from the *CRM* app are accessible.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
If the corresponding applications are installed, their related smart buttons appear
|
||||||
|
automatically on a contact form.
|
||||||
|
|
||||||
|
A user can see any :guilabel:`Meetings`, :guilabel:`Sales`, :guilabel:`POS Orders`,
|
||||||
|
:guilabel:`Subscriptions`, project :guilabel:`Tasks`, and the :guilabel:`More` smart button reveals
|
||||||
|
additional options, via a drop-down menu. A user can even quickly access :guilabel:`Purchases`,
|
||||||
|
:guilabel:`Helpdesk` tasks, :guilabel:`On-time Rate` for deliveries, :guilabel:`Invoiced`
|
||||||
|
information, :guilabel:`Vendor Bills`, and the :guilabel:`Partner Ledger` connected to this contact.
|
||||||
|
|
||||||
|
Deliveries, documents, loyalty cards, and direct debits are *also* linked to smart buttons, like
|
||||||
|
this, should there be any outstanding/on-file for this contact.
|
||||||
|
|
||||||
|
If the contact is a partner, the user can visit their partner page on the Odoo-built website by
|
||||||
|
clicking the :guilabel:`Go to Website` smart button.
|
||||||
|
|
||||||
|
Archive contacts
|
||||||
|
----------------
|
||||||
|
|
||||||
|
If a user decides they no longer want to have this contact active, the record can be archived. To do
|
||||||
|
that, go to the :icon:`fa-cog` :guilabel:`Action` menu at the top of the contact form, and click
|
||||||
|
:guilabel:`Archive`.
|
||||||
|
|
||||||
|
Then, click :guilabel:`OK` from the resulting :guilabel:`Confirmation` pop-up window.
|
||||||
|
|
||||||
|
With this contact successfully archived, as indicated by a banner at the top, they do not show up
|
||||||
|
in the main contacts page, but they can still be searched for with the :guilabel:`Archived` filter.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
A contact can be *unarchived*, if the user decides to work with them again. To do that, just
|
||||||
|
click the :icon:`fa-cog` :guilabel:`Action` menu again at the top of the archived contact form,
|
||||||
|
and click :guilabel:`Unarchive`. Upon doing so, the :guilabel:`Archived` banner is removed, and
|
||||||
|
the contact is restored.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
- :doc:`Add different addresses in CRM <../sales/sales/send_quotations/different_addresses>`
|
||||||
|
- `Odoo's eLearning Contacts tutorial
|
||||||
|
<https://www.odoo.com/slides/slide/contacts-2527?fullscreen=1>`_
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:titlesonly:
|
||||||
|
|
||||||
|
contacts/merge
|
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 14 KiB |
78
content/applications/essentials/contacts/merge.rst
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
==============
|
||||||
|
Merge contacts
|
||||||
|
==============
|
||||||
|
|
||||||
|
Odoo's *Contacts* application allows user's to merge duplicate contacts, without losing any
|
||||||
|
information in the process. This keeps the database organized, and prevents contacts from being
|
||||||
|
contacted by more than one salesperson.
|
||||||
|
|
||||||
|
.. _contacts/merge-duplicate:
|
||||||
|
|
||||||
|
Merge duplicate contacts
|
||||||
|
========================
|
||||||
|
|
||||||
|
.. danger::
|
||||||
|
Merging is an irreversible action. Do **not** merge contacts unless absolutely certain they
|
||||||
|
should be combined.
|
||||||
|
|
||||||
|
Navigate to the :menuselection:`Contacts app`, and select the :icon:`oi-view-list`
|
||||||
|
:guilabel:`(list)` icon. Select two or more duplicate contacts from the list, and tick the checkbox
|
||||||
|
(on the far-left) for the contacts that should be merged. Then, click the :icon:`fa-cog`
|
||||||
|
:guilabel:`Actions` icon, and select :guilabel:`Merge` from the resulting drop-down menu.
|
||||||
|
|
||||||
|
.. image:: merge/merge-menu.png
|
||||||
|
:align: center
|
||||||
|
:alt: The merge contacts option in the Contacts application.
|
||||||
|
|
||||||
|
This opens the :guilabel:`Merge` pop-up window. From here, review the details of the contacts before
|
||||||
|
confirming they should be merged. If any contacts in the list should **not** be merged, click the
|
||||||
|
:icon:`fa-times` :guilabel:`(delete)` icon at the far right of the contact.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
Click the individual contact to open the record for that contact, and view additional
|
||||||
|
information.
|
||||||
|
|
||||||
|
.. image:: merge/merge-window.png
|
||||||
|
:align: center
|
||||||
|
:alt: The merge pop-up window in the Contacts application.
|
||||||
|
|
||||||
|
Click the :guilabel:`Destination Contact` field, and select an option from the drop-down list. This
|
||||||
|
field defaults to the contact record that was created first in the system.
|
||||||
|
|
||||||
|
After confirming the information on the pop-up window, click :guilabel:`Merge Contacts`.
|
||||||
|
|
||||||
|
Deduplicate contacts
|
||||||
|
====================
|
||||||
|
|
||||||
|
After the merge is finished, a pop-up window appears confirming it is complete. This pop-up window
|
||||||
|
also contains a :guilabel:`Deduplicate the other Contacts` button. This feature searches for
|
||||||
|
duplicated records, based on selected criteria, and merges them automatically, or after manual
|
||||||
|
approval.
|
||||||
|
|
||||||
|
Click the :guilabel:`Deduplicate the other Contacts` button to open the :guilabel:`Deduplicate
|
||||||
|
Contacts` pop-up window.
|
||||||
|
|
||||||
|
Select one or more fields to be used in the search for duplicated records. Duplicated contacts can
|
||||||
|
be searched, based on the following criteria:
|
||||||
|
|
||||||
|
- :guilabel:`Email`
|
||||||
|
- :guilabel:`Name`
|
||||||
|
- :guilabel:`Is Company`
|
||||||
|
- :guilabel:`VAT`
|
||||||
|
- :guilabel:`Parent Company`
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If more than one field is selected, only records that have **all** fields in common are suggested
|
||||||
|
as duplicates.
|
||||||
|
|
||||||
|
If necessary, select criteria to be used to exclude potential duplicates from the search. Potential
|
||||||
|
duplicates can be excluded from the search, based on the following criteria:
|
||||||
|
|
||||||
|
- :guilabel:`A user associated to the contact`
|
||||||
|
- :guilabel:`Journal Items associated to the contact`
|
||||||
|
|
||||||
|
After confirming the search criteria, click either :guilabel:`Merge with Manual Check`,
|
||||||
|
:guilabel:`Merge Automatically`, or :guilabel:`Merge Automatically all process`.
|
||||||
|
|
||||||
|
If :guilabel:`Merge with Manual Check` is selected, complete the merge by following the :ref:`steps
|
||||||
|
above <contacts/merge-duplicate>`.
|
BIN
content/applications/essentials/contacts/merge/merge-menu.png
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
content/applications/essentials/contacts/merge/merge-window.png
Normal file
After Width: | Height: | Size: 20 KiB |
524
content/applications/essentials/export_import_data.rst
Normal file
@ -0,0 +1,524 @@
|
|||||||
|
======================
|
||||||
|
Export and import data
|
||||||
|
======================
|
||||||
|
|
||||||
|
.. |list| replace:: :icon:`oi-view-list` :guilabel:`(list)` icon
|
||||||
|
.. |actions| replace:: :icon:`fa-cog` :guilabel:`Actions`
|
||||||
|
|
||||||
|
In Odoo, it is sometimes necessary to export or import data for running reports, or for data
|
||||||
|
modification. This document covers the export and import of data into and out of Odoo.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
Sometimes, users run into a 'time out' error, or a record does not process, due to its size. This
|
||||||
|
can occur with large exports, or in cases where the import file is too large. To circumvent this
|
||||||
|
limitation surrounding the size of the records, process exports or imports in smaller batches.
|
||||||
|
|
||||||
|
.. _export-data:
|
||||||
|
|
||||||
|
Export data from Odoo
|
||||||
|
=====================
|
||||||
|
|
||||||
|
When working with a database, it is sometimes necessary to export data in a distinct file. Doing so
|
||||||
|
can aid in reporting on activities, although, Odoo provides a precise and easy reporting tool with
|
||||||
|
each available application.
|
||||||
|
|
||||||
|
With Odoo, the values can be exported from any field in any record. To do so, activate the list view
|
||||||
|
(|list|), on the items that need to be exported, then select the records that should be exported. To
|
||||||
|
select a record, tick the checkbox next to the corresponding record. Finally, click on |actions|,
|
||||||
|
then :guilabel:`Export`.
|
||||||
|
|
||||||
|
.. image:: export_import_data/list-view-export.png
|
||||||
|
:align: center
|
||||||
|
:alt: View of the different things to enable/click to export data.
|
||||||
|
|
||||||
|
When clicking on :guilabel:`Export`, an :guilabel:`Export Data` pop-over window appears, with
|
||||||
|
several options for the data to export:
|
||||||
|
|
||||||
|
.. image:: export_import_data/export-data-overview.png
|
||||||
|
:align: center
|
||||||
|
:alt: Overview of options to consider when exporting data in Odoo..
|
||||||
|
|
||||||
|
#. With the :guilabel:`I want to update data (import-compatable export)` option ticked, the system
|
||||||
|
only shows the fields that can be imported. This is helpful in the case where the :ref:`existing
|
||||||
|
records need to be updated <essentials/update-data>`. This works like a filter. Leaving the box
|
||||||
|
unticked, gives many more field options because it shows all the fields, not just the ones that
|
||||||
|
can be imported.
|
||||||
|
#. When exporting, there is the option to export in two formats: `.csv` and `.xls`. With `.csv`,
|
||||||
|
items are separated by a comma, while `.xls` holds information about all the worksheets in a
|
||||||
|
file, including both content and formatting.
|
||||||
|
#. These are the items that can be exported. Use the :guilabel:`> (right arrow)` icon to display
|
||||||
|
more sub-field options. Use the :guilabel:`Search` bar to find specific fields. To use the
|
||||||
|
:guilabel:`Search` option more efficiently, click on all the :guilabel:`> (right arrows)` to
|
||||||
|
display all fields.
|
||||||
|
#. The :guilabel:`+ (plus sign)` icon button is present to add fields to the :guilabel:`Fields to
|
||||||
|
export` list.
|
||||||
|
#. The :guilabel:`↕️ (up-down arrow)` to the left of the selected fields can be used to move the
|
||||||
|
fields up and down, to change the order in which they are displayed in the exported file.
|
||||||
|
Drag-and-drop using the :guilabel:`↕️ (up-down arrow)` icon.
|
||||||
|
#. The :guilabel:`🗑️ (trash can)` icon is used to remove fields. Click on the :guilabel:`🗑️ (trash
|
||||||
|
can)` icon to remove the field.
|
||||||
|
#. For recurring reports, it is helpful to save export presets. Select all the needed fields, and
|
||||||
|
click on the template drop-down menu. Once there, click on :guilabel:`New template`, and give a
|
||||||
|
unique name to the export just created. Click the :guilabel:`💾 (floppy drive)` icon to save the
|
||||||
|
configuration. The next time the same list needs to be exported, select the related template that
|
||||||
|
was previously saved from the drop-down menu.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
It is helpful to know the field's external identifier. For example, :guilabel:`Related Company`
|
||||||
|
in the export user interface is equal to *parent_id* (external identifier). This is helpful
|
||||||
|
because then, the only data exported is what should be modified and re-imported.
|
||||||
|
|
||||||
|
.. _import-data:
|
||||||
|
|
||||||
|
Import data into Odoo
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Importing data into Odoo is extremely helpful during implementation, or in times where data needs to
|
||||||
|
be :ref:`updated in bulk <essentials/update-data>`. The following documentation covers how to import
|
||||||
|
data into an Odoo database.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
Imports are permanent and **cannot** be undone. However, it is possible to use filters (`created
|
||||||
|
on` or `last modified`) to identify records changed or created by the import.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
Activating :ref:`developer mode <developer-mode>` changes the visible import settings in the left
|
||||||
|
menu. Doing so reveals an :menuselection:`Advanced` menu. Included in this advanced menu are two
|
||||||
|
options: :guilabel:`Track history during import` and :guilabel:`Allow matching with subfields`.
|
||||||
|
|
||||||
|
.. image:: export_import_data/advanced-import.png
|
||||||
|
:align: center
|
||||||
|
:alt: Advanced import options when developer mode is activated.
|
||||||
|
|
||||||
|
If the model uses openchatter, the :guilabel:`Track history during import` option sets up
|
||||||
|
subscriptions and sends notifications during the import, but leads to a slower import.
|
||||||
|
|
||||||
|
Should the :guilabel:`Allow matching with subfields` option be selected, then all subfields
|
||||||
|
within a field are used to match under the :guilabel:`Odoo Field` while importing.
|
||||||
|
|
||||||
|
Get started
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Data can be imported on any Odoo business object using either Excel (`.xlsx`) or :abbr:`CSV
|
||||||
|
(Comma-separated Values)` (`.csv`) formats. This includes: contacts, products, bank statements,
|
||||||
|
journal entries, and orders.
|
||||||
|
|
||||||
|
Open the view of the object to which the data should be imported/populated, and click on
|
||||||
|
:menuselection:`⚙️ (Action) --> Import records`.
|
||||||
|
|
||||||
|
.. image:: export_import_data/import-button.png
|
||||||
|
:align: center
|
||||||
|
:alt: Action menu revealed with the import records option highlighted.
|
||||||
|
|
||||||
|
After clicking :guilabel:`Import records`, Odoo reveals a separate page with templates that can be
|
||||||
|
downloaded and populated with the company's own data. Such templates can be imported in one click,
|
||||||
|
since the data mapping is already done. To download a template click :guilabel:`Import Template for
|
||||||
|
Customers` at the center of the page.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
When importing a :abbr:`CSV (Comma-separated Values)` file, Odoo provides :guilabel:`Formatting`
|
||||||
|
options. These options do **not** appear when importing the proprietary Excel file type (`.xls`,
|
||||||
|
`.xlsx`).
|
||||||
|
|
||||||
|
.. image:: export_import_data/formatting.png
|
||||||
|
:align: center
|
||||||
|
:alt: Formatting options presented when a CVS file is imported in Odoo.
|
||||||
|
|
||||||
|
Make necessary adjustments to the *Formatting* options, and ensure all columns in the
|
||||||
|
:guilabel:`Odoo field` and :guilabel:`File Column` are free of errors. Finally, click
|
||||||
|
:guilabel:`Import` to import the data.
|
||||||
|
|
||||||
|
Adapt a template
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Import templates are provided in the import tool of the most common data to import (contacts,
|
||||||
|
products, bank statements, etc.). Open them with any spreadsheet software (*Microsoft Office*,
|
||||||
|
*OpenOffice*, *Google Drive*, etc.).
|
||||||
|
|
||||||
|
Once the template is downloaded, proceed to follow these steps:
|
||||||
|
|
||||||
|
- Add, remove, and sort columns to best fit the data structure.
|
||||||
|
- It is strongly advised to **not** remove the :guilabel:`External ID` (ID) column (see why in the
|
||||||
|
next section).
|
||||||
|
- Set a unique ID to every record by dragging down the ID sequencing in the :guilabel:`External ID`
|
||||||
|
(ID) column.
|
||||||
|
|
||||||
|
.. image:: export_import_data/dragdown.gif
|
||||||
|
:align: center
|
||||||
|
:alt: An animation of the mouse dragging down the ID column, so each record has a unique ID.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
When a new column is added, Odoo may not be able to map it automatically, if its label does not
|
||||||
|
fit any field within Odoo. However, new columns can be mapped manually when the import is tested.
|
||||||
|
Search the drop-down menu for the corresponding field.
|
||||||
|
|
||||||
|
.. image:: export_import_data/field_list.png
|
||||||
|
:align: center
|
||||||
|
:alt: Drop-down menu expanded in the initial import screen on Odoo.
|
||||||
|
|
||||||
|
Then, use this field's label in the import file to ensure future imports are successful.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
Another useful way to find out the proper column names to import is to export a sample file
|
||||||
|
using the fields that should be imported. This way, if there is not a sample import template,
|
||||||
|
the names are accurate.
|
||||||
|
|
||||||
|
|
||||||
|
.. _essentials/external-id:
|
||||||
|
|
||||||
|
Import from another application
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
The :guilabel:`External ID` (ID) is a unique identifier for the line item. Feel free to use one
|
||||||
|
from previous software to facilitate the transition to Odoo.
|
||||||
|
|
||||||
|
Setting an ID is not mandatory when importing, but it helps in many cases:
|
||||||
|
|
||||||
|
- :ref:`Update imports <essentials/update-data>`: import the same file several times without
|
||||||
|
creating duplicates.
|
||||||
|
- :ref:`Import relation fields <export_import_data/relation-fields>`.
|
||||||
|
|
||||||
|
To recreate relationships between different records, the unique identifier from the original
|
||||||
|
application should be used to map it to the :guilabel:`External ID` (ID) column in Odoo.
|
||||||
|
|
||||||
|
When another record is imported that links to the first one, use **XXX/ID** (XXX/External ID) for
|
||||||
|
the original unique identifier. This record can also be found using its name.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
It should be noted that conflicts occur if two (or more) records have the same *External ID*.
|
||||||
|
|
||||||
|
Field missing to map column
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Odoo heuristically tries to find the type of field for each column inside the imported file, based
|
||||||
|
on the first ten lines of the files.
|
||||||
|
|
||||||
|
For example, if there is a column only containing numbers, only the fields with the *integer* type
|
||||||
|
are presented as options.
|
||||||
|
|
||||||
|
While this behavior might be beneficial in most cases, it is also possible that it could fail, or
|
||||||
|
the column may be mapped to a field that is not proposed by default.
|
||||||
|
|
||||||
|
If this happens, check the :guilabel:`Show fields of relation fields (advanced) option`, then a
|
||||||
|
complete list of fields becomes available for each column.
|
||||||
|
|
||||||
|
.. image:: export_import_data/field_list.png
|
||||||
|
:align: center
|
||||||
|
:alt: Searching for the field to match the tax column.
|
||||||
|
|
||||||
|
Change data import format
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Odoo can automatically detect if a column is a date, and tries to guess the date format from a
|
||||||
|
set of most commonly used date formats. While this process can work for many date formats, some
|
||||||
|
date formats are not recognizable. This can cause confusion, due to day-month inversions; it is
|
||||||
|
difficult to guess which part of a date format is the day, and which part is the month, in a
|
||||||
|
date, such as `01-03-2016`.
|
||||||
|
|
||||||
|
When importing a :abbr:`CSV (Comma-separated Values)` file, Odoo provides :guilabel:`Formatting`
|
||||||
|
options.
|
||||||
|
|
||||||
|
To view which date format Odoo has found from the file, check the :guilabel:`Date Format` that is
|
||||||
|
shown when clicking on options under the file selector. If this format is incorrect, change it to
|
||||||
|
the preferred format using *ISO 8601* to define the format.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
*ISO 8601* is an international standard, covering the worldwide exchange, along with the
|
||||||
|
communication of date and time-related data. For example, the date format should be `YYYY-MM-DD`.
|
||||||
|
So, in the case of July 24th 1981, it should be written as `1981-07-24`.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
When importing Excel files (`.xls`, `.xlsx`), consider using *date cells* to store dates. This
|
||||||
|
maintains locale date formats for display, regardless of how the date is formatted in Odoo. When
|
||||||
|
importing a :abbr:`CSV (Comma-separated Values)` file, use Odoo's :guilabel:`Formatting` section
|
||||||
|
to select the date format columns to import.
|
||||||
|
|
||||||
|
Import numbers with currency signs
|
||||||
|
----------------------------------
|
||||||
|
|
||||||
|
Odoo fully supports numbers with parenthesis to represent negative signs, as well as numbers with
|
||||||
|
currency signs attached to them. Odoo also automatically detects which thousand/decimal separator is
|
||||||
|
used. If a currency symbol unknown to Odoo is used, it might not be recognized as a number, and the
|
||||||
|
import crashes.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
When importing a :abbr:`CSV (Comma-separated Values)` file, the :guilabel:`Formatting` menu
|
||||||
|
appears on the left-hand column. Under these options, the :guilabel:`Thousands Separator` can be
|
||||||
|
changed.
|
||||||
|
|
||||||
|
Examples of supported numbers (using 'thirty-two thousand' as the figure):
|
||||||
|
|
||||||
|
- 32.000,00
|
||||||
|
- 32000,00
|
||||||
|
- 32,000.00
|
||||||
|
- -32000.00
|
||||||
|
- (32000.00)
|
||||||
|
- $ 32.000,00
|
||||||
|
- (32000.00 €)
|
||||||
|
|
||||||
|
Example that will not work:
|
||||||
|
|
||||||
|
- ABC 32.000,00
|
||||||
|
- $ (32.000,00)
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
A :guilabel:`() (parenthesis)` around the number indicates that the number is a negative value.
|
||||||
|
The currency symbol **must** be placed within the parenthesis for Odoo to recognize it as a
|
||||||
|
negative currency value.
|
||||||
|
|
||||||
|
Import preview table not displayed correctly
|
||||||
|
--------------------------------------------
|
||||||
|
|
||||||
|
By default, the import preview is set on commas as field separators, and quotation marks as text
|
||||||
|
delimiters. If the :abbr:`CSV (Comma-separated Values)` file does not have these settings, modify
|
||||||
|
the :guilabel:`Formatting` options (displayed under the :guilabel:`Import` :abbr:`CSV
|
||||||
|
(Comma-separated Values)` file bar after selecting the :abbr:`CSV (Comma-separated Values)` file).
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
If the :abbr:`CSV (Comma-separated Values)` file has a tabulation as a separator, Odoo does
|
||||||
|
**not** detect the separations. The file format options need to be modified in the spreadsheet
|
||||||
|
application. See the following :ref:`Change CSV file format <export_import_data/change-csv>`
|
||||||
|
section.
|
||||||
|
|
||||||
|
.. _export_import_data/change-csv:
|
||||||
|
|
||||||
|
Change CSV file format in spreadsheet application
|
||||||
|
-------------------------------------------------
|
||||||
|
|
||||||
|
When editing and saving :abbr:`CSV (Comma-separated Values)` files in spreadsheet applications, the
|
||||||
|
computer's regional settings are applied for the separator and delimiter. Odoo suggests using
|
||||||
|
*OpenOffice* or *LibreOffice*, as both applications allow modifications of all three options (from
|
||||||
|
*LibreOffice* application, go to :menuselection:`'Save As' dialog box --> Check the box 'Edit filter
|
||||||
|
settings' --> Save`).
|
||||||
|
|
||||||
|
Microsoft Excel can modify the encoding when saving (:menuselection:`'Save As' dialog box -->
|
||||||
|
'Tools' drop-down menu --> Encoding tab`).
|
||||||
|
|
||||||
|
Difference between Database ID and External ID
|
||||||
|
----------------------------------------------
|
||||||
|
|
||||||
|
Some fields define a relationship with another object. For example, the country of a contact is a
|
||||||
|
link to a record of the 'Country' object. When such fields are imported, Odoo has to recreate links
|
||||||
|
between the different records. To help import such fields, Odoo provides three mechanisms.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
**Only one** mechanism should be used per field that is imported.
|
||||||
|
|
||||||
|
For example, to reference the country of a contact, Odoo proposes three different fields to import:
|
||||||
|
|
||||||
|
- :guilabel:`Country`: the name or code of the country
|
||||||
|
- :guilabel:`Country/Database ID`: the unique Odoo ID for a record, defined by the ID PostgreSQL
|
||||||
|
column
|
||||||
|
- :guilabel:`Country/External ID`: the ID of this record referenced in another application (or the
|
||||||
|
`.XML` file that imported it)
|
||||||
|
|
||||||
|
For the country of Belgium, for example, use one of these three ways to import:
|
||||||
|
|
||||||
|
- :guilabel:`Country`: `Belgium`
|
||||||
|
- :guilabel:`Country/Database ID`: `21`
|
||||||
|
- :guilabel:`Country/External ID`: `base.be`
|
||||||
|
|
||||||
|
According to the company's need, use one of these three ways to reference records in relations. Here
|
||||||
|
is an example when one or the other should be used, according to the need:
|
||||||
|
|
||||||
|
- Use :guilabel:`Country`: this is the easiest way when data comes from :abbr:`CSV (Comma-separated
|
||||||
|
Values)` files that have been created manually.
|
||||||
|
- Use :guilabel:`Country/Database ID`: this should rarely be used. It is mostly used by developers
|
||||||
|
as the main advantage is to never have conflicts (there may be several records with the same name,
|
||||||
|
but they always have a unique Database ID)
|
||||||
|
- Use :guilabel:`Country/External ID`: use *External ID* when importing data from a third-party
|
||||||
|
application.
|
||||||
|
|
||||||
|
When *External IDs* are used, import :abbr:`CSV (Comma-separated Values)` files with the
|
||||||
|
:guilabel:`External ID` (ID) column defining the *External ID* of each record that is imported.
|
||||||
|
Then, a reference can be made to that record with columns, like `Field/External ID`. The following
|
||||||
|
two :abbr:`CSV (Comma-separated Values)` files provide an example for products and their categories.
|
||||||
|
|
||||||
|
- :download:`CSV file for categories
|
||||||
|
<export_import_data/External_id_3rd_party_application_product_categories.csv>`
|
||||||
|
- :download:`CSV file for Products
|
||||||
|
<export_import_data/External_id_3rd_party_application_products.csv>`
|
||||||
|
|
||||||
|
.. _export_import_data/relation-fields:
|
||||||
|
|
||||||
|
Import relation fields
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
An Odoo object is always related to many other objects (e.g. a product is linked to product
|
||||||
|
categories, attributes, vendors, etc.). To import those relations, the records of the related object
|
||||||
|
need to be imported first, from their own list menu.
|
||||||
|
|
||||||
|
This can be achieved by using either the name of the related record, or its ID, depending on the
|
||||||
|
circumstances. The ID is expected when two records have the same name. In such a case add `/ ID`
|
||||||
|
at the end of the column title (e.g. for product attributes: `Product Attributes / Attribute / ID`).
|
||||||
|
|
||||||
|
Options for multiple matches on fields
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
If, for example, there are two product categories with the child name `Sellable` (e.g. `Misc.
|
||||||
|
Products/Sellable` & `Other Products/Sellable`), the validation is halted, but the data may still be
|
||||||
|
imported. However, Odoo recommends that the data is not imported because it will all be linked to
|
||||||
|
the first `Sellable` category found in the *Product Category* list (`Misc. Products/Sellable`).
|
||||||
|
Odoo, instead, recommends modifying one of the duplicate's values, or the product category
|
||||||
|
hierarchy.
|
||||||
|
|
||||||
|
However, if the company does not wish to change the configuration of product categories, Odoo
|
||||||
|
recommends making use of the *External ID* for this field, 'Category'.
|
||||||
|
|
||||||
|
Import many2many relationship fields
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The tags should be separated by a comma, without any spacing. For example, if a customer needs to be
|
||||||
|
linked to both tags: `Manufacturer` and `Retailer` then 'Manufacturer,Retailer' needs to be encoded
|
||||||
|
in the same column of the :abbr:`CSV (Comma-separated Values)` file.
|
||||||
|
|
||||||
|
- :download:`CSV file for Manufacturer, Retailer <export_import_data/m2m_customers_tags.csv>`
|
||||||
|
|
||||||
|
Import one2many relationships
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
If a company wants to import a sales order with several order lines, a specific row **must** be
|
||||||
|
reserved in the :abbr:`CSV (Comma-separated Values)` file for each order line. The first order line
|
||||||
|
is imported on the same row as the information relative to order. Any additional lines need an
|
||||||
|
additional row that does not have any information in the fields relative to the order.
|
||||||
|
|
||||||
|
As an example, here is a :abbr:`CSV (Comma-separated Values)` file of some quotations that can be
|
||||||
|
imported, based on demo data:
|
||||||
|
|
||||||
|
- :download:`File for some Quotations
|
||||||
|
<export_import_data/purchase.order_functional_error_line_cant_adpat.csv>`
|
||||||
|
|
||||||
|
The following :abbr:`CSV (Comma-separated Values)` file shows how to import purchase orders with
|
||||||
|
their respective purchase order lines:
|
||||||
|
|
||||||
|
- :download:`Purchase orders with their respective purchase order lines
|
||||||
|
<export_import_data/o2m_purchase_order_lines.csv>`
|
||||||
|
|
||||||
|
The following :abbr:`CSV (Comma-separated Values)` file shows how to import customers and their
|
||||||
|
respective contacts:
|
||||||
|
|
||||||
|
- :download:`Customers and their respective contacts
|
||||||
|
<export_import_data/o2m_customers_contacts.csv>`
|
||||||
|
|
||||||
|
Import records several times
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
If an imported file contains one of the columns: :guilabel:`External ID` or :guilabel:`Database ID`,
|
||||||
|
records that have already been imported are modified, instead of being created. This is extremely
|
||||||
|
useful as it allows users to import the same :abbr:`CSV (Comma-separated Values)` file several
|
||||||
|
times, while having made some changes in between two imports.
|
||||||
|
|
||||||
|
Odoo takes care of creating or modifying each record, depending if it is new or not.
|
||||||
|
|
||||||
|
This feature allows a company to use the *Import/Export tool* in Odoo to modify a batch of records
|
||||||
|
in a spreadsheet application.
|
||||||
|
|
||||||
|
Value not provided for a specific field
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
If all fields are not set in the CSV file, Odoo assigns the default value for every non-defined
|
||||||
|
field. But, if fields are set with empty values in the :abbr:`CSV (Comma-separated Values)` file,
|
||||||
|
Odoo sets the empty value in the field, instead of assigning the default value.
|
||||||
|
|
||||||
|
Export/import different tables from an SQL application to Odoo
|
||||||
|
--------------------------------------------------------------
|
||||||
|
|
||||||
|
If data needs to be imported from different tables, relations need to be recreated between records
|
||||||
|
belonging to different tables. For instance, if companies and people are imported, the link between
|
||||||
|
each person and the company they work for needs to be recreated.
|
||||||
|
|
||||||
|
To manage relations between tables, use the `External ID` facilities of Odoo. The `External ID` of a
|
||||||
|
record is the unique identifier of this record in another application. The `External ID` must be
|
||||||
|
unique across all records of all objects. It is a good practice to prefix this `External ID` with
|
||||||
|
the name of the application or table. (like, 'company_1', 'person_1' - instead of '1')
|
||||||
|
|
||||||
|
As an example, suppose there is an SQL database with two tables that are to be imported: companies
|
||||||
|
and people. Each person belongs to one company, so the link between a person and the company they
|
||||||
|
work for must be recreated.
|
||||||
|
|
||||||
|
Test this example, with a :download:`sample of a PostgreSQL database
|
||||||
|
<export_import_data/database_import_test.sql>`.
|
||||||
|
|
||||||
|
First, export all companies and their *External ID*. In PSQL, write the following command:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
> copy (select 'company_'||id as "External ID",company_name as "Name",'True' as "Is a Company" from companies) TO '/tmp/company.csv' with CSV HEADER;
|
||||||
|
|
||||||
|
This SQL command creates the following :abbr:`CSV (Comma-separated Values)` file:
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
|
||||||
|
External ID,Name,Is a Company
|
||||||
|
company_1,Bigees,True
|
||||||
|
company_2,Organi,True
|
||||||
|
company_3,Boum,True
|
||||||
|
|
||||||
|
To create the :abbr:`CSV (Comma-separated Values)` file for people linked to companies, use the
|
||||||
|
following SQL command in PSQL:
|
||||||
|
|
||||||
|
.. code-block:: sh
|
||||||
|
|
||||||
|
> copy (select 'person_'||id as "External ID",person_name as "Name",'False' as "Is a Company",'company_'||company_id as "Related Company/External ID" from persons) TO '/tmp/person.csv' with CSV
|
||||||
|
|
||||||
|
It produces the following :abbr:`CSV (Comma-separated Values)` file:
|
||||||
|
|
||||||
|
.. code-block:: text
|
||||||
|
|
||||||
|
External ID,Name,Is a Company,Related Company/External ID
|
||||||
|
person_1,Fabien,False,company_1
|
||||||
|
person_2,Laurence,False,company_1
|
||||||
|
person_3,Eric,False,company_2
|
||||||
|
person_4,Ramsy,False,company_3
|
||||||
|
|
||||||
|
In this file, Fabien and Laurence are working for the Bigees company (`company_1`), and Eric is
|
||||||
|
working for the Organi company. The relation between people and companies is done using the
|
||||||
|
*External ID* of the companies. The *External ID* is prefixed by the name of the table to avoid a
|
||||||
|
conflict of ID between people and companies (`person_1` and `company_1`, who shared the same ID 1 in
|
||||||
|
the original database).
|
||||||
|
|
||||||
|
The two files produced are ready to be imported in Odoo without any modifications. After having
|
||||||
|
imported these two :abbr:`CSV (Comma-separated Values)` files, there are four contacts and three
|
||||||
|
companies (the first two contacts are linked to the first company). Keep in mind to first import
|
||||||
|
the companies, and then the people.
|
||||||
|
|
||||||
|
.. _essentials/update-data:
|
||||||
|
|
||||||
|
Update data in Odoo
|
||||||
|
===================
|
||||||
|
|
||||||
|
Existing data can be updated in bulk through a data import, as long as the :ref:`External ID
|
||||||
|
<essentials/external-id>` remains consistent.
|
||||||
|
|
||||||
|
Prepare data export
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
To update data through an import, first navigate to the data to be updated, and select the |list| to
|
||||||
|
activate list view. On the far-left side of the list, tick the checkbox for any record to be
|
||||||
|
updated. Then, click |actions|, and select :icon:`fa-upload` :guilabel:`Export` from the drop-down
|
||||||
|
menu.
|
||||||
|
|
||||||
|
On the resulting :guilabel:`Export Data` pop-up window, tick the checkbox labeled, :guilabel:`I want
|
||||||
|
to update data (import-compatible export)`. This automatically includes the *External ID* in the
|
||||||
|
export. Additionally, it limits the :guilabel:`Fields to export` list to **only** include fields
|
||||||
|
that are able to be imported.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
The :guilabel:`External ID` field does **not** appear in the :guilabel:`Fields to export` list
|
||||||
|
unless it is manually added, but it is still included in the export. However, if the :guilabel:`I
|
||||||
|
want to update data (import-compatible export)` checkbox is ticked, it is included in the export.
|
||||||
|
|
||||||
|
Select the required fields to be included in the export using the :ref:`options <export-data>` on
|
||||||
|
the pop-up window, then click :guilabel:`Export`.
|
||||||
|
|
||||||
|
Import updated data
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
After exporting, make any necessary changes to the data file. When the file is ready, it can be
|
||||||
|
:ref:`imported <import-data>` by following the same process as a normal data import.
|
||||||
|
|
||||||
|
.. danger::
|
||||||
|
When updating data, it is extremely important that the *External ID* remain consistent, as
|
||||||
|
this is how the system identifies a record. If an ID is altered, or removed, the system may add a
|
||||||
|
duplicate record, instead of updating the existing one.
|